昨天看了一个很有意思的视频,讲的是 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 。也许这个技术,会改变我们写代码的方式。

4893 次点击
所在节点    程序员
41 条回复
rrfeng
2022-01-21 14:50:07 +08:00
出来的时候都是靠吹

等过十年,如果真成了我再吹它
3dwelcome
2022-01-21 14:52:53 +08:00
@rrfeng 区块链不就是靠 WASM 虚拟机来支持的。

项目大了后,你总要选一个脚本语言,或者定制一个 DSL 行业语言,进而引入 VM ,这是避免不了的。
orangie
2022-01-21 15:04:55 +08:00
所说的任何一点,JVM 都具备。
2i2Re2PLMaDnghL
2022-01-21 15:05:31 +08:00
WASM 太底层了,就真的是一个虚拟机
在里面跑虚拟机语言就都是虚拟机套虚拟机

—— 准确地说,这里的所有虚拟机(我要把 JVM 都拉上)全部都应该叫模拟器。究其原因,它并非采用虚拟化技术进行隔离,而是采用模拟器技术逐指令翻译,从而使得字节码平台无关。对照地说,GBA 模拟器也是一样的操作。
—— 反而,Qemu 有时是个虚拟机。因此倒也不用唯名论地逐字推敲。

当然,因为 WASM 效率高,可以推测 WASM+?VM 和?VM 效率差距不大。但是,这样一来,热加载就还是得交给内层的?VM 来实现。
industryhive
2022-01-21 15:05:42 +08:00
WASM 和 GraalVM 有什么区别?
1. GraalVM 完全支持热加载。
2. GraalVM 完全支持跨平台,甚至可以嵌入到 MySQL 和 Oracle 中作为执行引擎。
3. GraalVM 支持 jvm 语言,如果 java 、kotlin 、Scala 等 jvm 语言,也支持 js 、Python 、ruby 等动态语言,还支持 C 、C++等基于 LLVM 的语言,跨语言调用无性能损失
4. GraalVM 性能非常优秀,可以高性能通用编译后端
5. GraalVM 同时支持 AOT 和 JIT ,任何语言只要编译到 GraalVM 字节码,就能进行 AOT 编译,获得最快的启动速度,也可以进行 JIT 编译,获得最高的性能峰值
kop1989smurf
2022-01-21 15:06:20 +08:00
开发生态完备的今天,就不是哪个开发技术先进,生产力强,哪个技术就流行。
甚至生产力强都不算必要条件。
2i2Re2PLMaDnghL
2022-01-21 15:06:37 +08:00
@3dwelcome 感觉是格林斯潘第十定律的一个变体。
Jooooooooo
2022-01-21 15:14:06 +08:00
所以现在去招一个这样的程序员需要花多少时间呢?

(还是老老实实把过滤项选 java 或者 go 吧
3dwelcome
2022-01-21 15:17:05 +08:00
@Jooooooooo WASM 只是代码的最终编译形态,写逻辑代码你还是可以用 java 和 go ,又没区别的。
3dwelcome
2022-01-21 15:20:35 +08:00
@2i2Re2PLMaDnghL “反而,Qemu 有时是个虚拟机。因此倒也不用唯名论地逐字推敲。”

现在有些 docker 不就是用 qemu 驱动的,但发布体积大,CPU 转译效率又低,有些时候没必要杀鸡用牛刀。

WASM 可以做到体积极度轻量,几乎无重型依赖包。

你说 JVM 也可以,但 JVM 是一种特定语言。WASM 代表着十几种语言,这点上 WASM 完胜。
aneostart173
2022-01-21 15:25:06 +08:00
除非 wasm 变成指令集,或者 webos 成为主流。
learningman
2022-01-21 15:27:03 +08:00
反正现在 wasm 的生态还是一坨翔,啥时候出个 spring 这种的统一框架再说吧。
3dwelcome
2022-01-21 15:35:52 +08:00
@industryhive WASM 和 GraalVM 有什么区别?

GraalVM 只是一个公司的产品吧,由一个商业公司来维护。而 WASM 是一种开源标准,社区都在帮着写代码,肯定差距很大的。
2i2Re2PLMaDnghL
2022-01-21 15:42:34 +08:00
@3dwelcome 不要太关注『——』开头的插曲。
你想要用 WASM 发布 Python 写出来的东西,貌似仍然需要带上整个 Python 环境和引入的包。
DianQK
2022-01-21 15:50:26 +08:00
在拥抱 Wasm 了
hefish
2022-01-21 16:12:57 +08:00
WASM 将来还会把人类变成电池。那样才是更加美好的世界。
yaphets666
2022-01-21 16:14:16 +08:00
又是你
gainsurier
2022-01-21 16:19:54 +08:00
我举得 wasm 最大的优势就是可以跑在只有几百 k 内存的 mcu 上。
masterclock
2022-01-21 16:24:22 +08:00
不懂 GraalVM ,可以把 Go 编译到 GraalVM ,然后跑在 MCU 上吗?
xinJang
2022-01-21 16:35:33 +08:00
这个跟云原生有什么区别吗?

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

https://www.v2ex.com/t/829706

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

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

© 2021 V2EX