昨天看了一个很有意思的视频,讲的是 WEB 后台开发, WASM 一统天下的故事。

2022-01-21 14:47:48 +08:00
 3dwelcome

现在 WEB 服务,都上云服务,docker 容器的概念居多。

那么本质上,后台的逻辑代码,可以看成是一个个 VM 虚拟机。而 WASM 刚好就是一个非常成功,又跨平台的堆栈虚拟机。

  1. 你后台逻辑更新需要热加载,WASM 能成为最好的插件代码,新版本 nodejs 后台就直接支持 WASM 插件。
  2. 你代码需要可移植性,WASM 就是最好的选择,因为字节码完全和运行平台无关。想 x86, arm64, 甚至手表上运行都没问题。
  3. 你代码需要多语言支持,WASM 完全能满足十几种开发语言的需求。
  4. 你代码需要极速性能,优化过后的 WASM ,几乎没有对手。

在未来,WEB 前后端会用 WASM ,游戏会用 WASM 来替换现在的 LUA ,云计算会用 WASM 。也许这个技术,会改变我们写代码的方式。

5426 次点击
所在节点    程序员
41 条回复
3dwelcome
2022-01-21 16:36:49 +08:00
@yaphets666 不一样,上次吹的是前端,前端框架多有得选。

这次看了各种技术分享视频,反而发现云发展后,后台 WASM 用的才多,是云发布的刚需。
3dwelcome
2022-01-21 16:39:23 +08:00
@xinJang “这个跟云原生有什么区别吗?”

可作为插件集成到各种平台,以前代码还要编译适配目标平台,后来是 docker ,现在是 wasm 插件包。
xinJang
2022-01-21 16:48:27 +08:00
@3dwelcome 我之前看云原生的介绍是利用 k8s 这种容器编排技术,将一堆 docker 组成成一个 pod ,基于 pod 的管理,这跟你描述的 wasm 是否是相近的技术呢?
3dwelcome
2022-01-21 16:55:25 +08:00
是的。docker 的开发者说过,如果早年有 wasm ,就可以不用开发 docker 了。

两个看似不相关的技术,本质上都是把代码装进黑盒后,便捷发布。

WASM 对运行环境依赖很低,这样平台移植性就非常高。有时候 docker 还要用 qemu 包一层,就是因为 x86 和 arm64 指令不兼容,WASM 把这个问题,从根本上给解决掉。
ch2
2022-01-21 17:06:31 +08:00
@3dwelcome docker 是二进制级别的打包,不需要源代码适配,兼容性不是一个需要重写+编译的东西能比的
3dwelcome
2022-01-21 17:15:14 +08:00
@ch2 docker 是二进制级别的打包,不能二次平台适配了。

而 WASM 是中间字节码打包,加载后可以二次适配到任意 CPU 和可运行平台。

真正意义上的 write once, run everywhere.
liuxu
2022-01-21 17:23:03 +08:00
@3dwelcome
write once, run everywhere

这不是 php 吗
weixiangzhe
2022-01-21 17:23:18 +08:00
发出来看看啊
3dwelcome
2022-01-21 17:29:13 +08:00
@weixiangzhe 视频的名字叫“用 webassembly 做秒杀”, B 站上有,直接搜。
gam2046
2022-01-21 17:36:15 +08:00
@3dwelcome #26 “write once, run everywhere.” 这不是还是 JVM 老路嘛,JVM 语言也不止 Java ,Scala/Groovy/Kotlin 还有一堆使用率不怎么高的。

但有一说一,前几天刚刚试了下 ffmpeg 编译到 wasm 在浏览器里跑。确实可以跑,也可以转码,也可以通过 blob url 直接通过 video 标签播放,但在 Chrome 里跑,CPU 占用率挺厉害,用是可以用的。

至于上云的话,还是慎重,现在各个云平台并没有什么统一标准,真就是上云一时爽,下云火葬场。换个平台就脱一层皮。
3dwelcome
2022-01-21 17:50:38 +08:00
@gam2046 每个程序员都是自己的语言偏好和历史代码负担,要想完全从头再一张白纸上写代码,是非常困难的事情。

有时候程序员之间的语言隔阂,比现实中的外语还要大。这也是为什么那么多年,JVM 不温不火,提不上去,又不断有新语言冒泡的原因。

目前也只有 WASM ,能统一天下所有语言了。
qqdaiyu55
2022-01-21 17:52:06 +08:00
wasm 已经有不少应用,pyodide ,以及 figma 等
neutrino
2022-01-21 18:20:43 +08:00
还是要根据需求来。虽然现在容器技术应用已经较为广泛,但实际工作中并没有上容器的需求,用 FTP 拷贝代码很顺畅。
zhangbohun
2022-01-21 18:31:41 +08:00
@3dwelcome “ JVM 是一种特定语言” 建议了解下 JVM 的概念
DrakeXiang
2022-01-21 18:42:22 +08:00
wasm 不是给浏览器用的么,后端怎么用?
ch2
2022-01-21 18:47:46 +08:00
@3dwelcome #26 一个本来就设计为 linux x64 only 的二进制产物,不需要考虑让它 run 在浏览器跟 arm 上,这是 docker 能成功的根本原因
learningman
2022-01-21 19:18:43 +08:00
@DrakeXiang #35 node 或者某些 wasm 的独立 runtime ,wasi 啥的
Elissa
2022-01-21 23:04:06 +08:00
@learningman 所以为啥不 nodejs ,前后端都用 js
musi
2022-01-22 10:46:49 +08:00
同在关注 WebAssmebly ,之前在 twitter 上看到 docker 作者说,“如果当时有 wasm 那可能就不会有 docker 了”。然后去年(21 年)WasmEdge 项目也进入了 CNCF ,就我个人而言还是比较看好 wasm 的
chrosing
2022-01-22 11:24:47 +08:00
Spring Cloud 已经没落了,DDD 后来居上 :Doge
之前有段时间 微信公众号只要是讲技术的 全是推 DDD 的 结果现在也没有多少用 DDD 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/829706

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX