V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fox0001
V2EX  ›  分享发现

WASM 正式成为标准 Web 语言,这会是另一端历史的开端!大佬们不聊聊?

  •  
  •   fox0001 · 2019-12-06 22:47:16 +08:00 · 8575 次点击
    这是一个创建于 1800 天前的主题,其中的信息可能已经有所发展或是发生改变。

    除了 HTML、CSS 与 JavaScript,现在 WASM 也是标准 Web 语言 https://m.ithome.com/html/461467.htm

    看到这个新闻,第一反应是又要学新语言了。细看之下,可能不用学新语言,但新的里程已经开启了。因为人家已经说了:

    Ending 定律也称为终结者定律,它是 Ending 在 2016 年 Emscripten 技术交流会上给出的断言:所有可以用 WebAssembly 实现的终将会用 WebAssembly 实现。( from: https://zh.wikipedia.org/wiki/WebAssembly ) 注:WebAssembly,即 WASM

    理论上能编译成 LLVM 的语言,都能编程成 WASM,从而在浏览器上运行。(这家伙是跑在浏览器上的汇编语言么?这是 Java Applet 的加强版么?)然后那些没有 Web 版的软件,理论上都能在浏览器上跑了。信息量太大了!

    Go 1.11 已支持 WASM。然后我写了个 GO 程序可以在浏览器跑了,界面直接使用 HTML 输出?

    再看看那个只有浏览器的 Chrome OS。以前总是有评论说这系统太超前了,现在终于明白了。有了 WASM,未来的操作系统真的只需装个浏览器了。(呃,所以 FireFox OS 会重生么?)

    此时已 high 爆,不敢再想下去……

    55 条回复    2019-12-08 01:58:13 +08:00
    maomaomao001
        1
    maomaomao001  
       2019-12-06 22:54:16 +08:00
    可还是感觉没根本没有放开能力啊
    你看看这个,
    https://gdevelop-app.com/
    作为游戏引擎,别说时离线运行了, 连 测试运行都要连云服务的样子

    说到底还是没法做真正的本地应用
    https://v2ex.com/t/612877#reply57
    maomaomao001
        2
    maomaomao001  
       2019-12-06 22:55:49 +08:00
    而且,这个 https://bytecodealliance.org/ 字节码联盟,谷歌好像都没参与的样子
    Pastsong
        3
    Pastsong  
       2019-12-06 22:59:18 +08:00
    好事啊,不过现在很多 WASM 标准还不成熟,浏览器实现也七七八八的,过几年再看看
    momocraft
        4
    momocraft  
       2019-12-06 23:05:36 +08:00
    看个新闻就沸腾不值得. 可以先用一下看看离你的 high 有多远.
    fox0001
        5
    fox0001  
    OP
       2019-12-06 23:14:45 +08:00
    @maomaomao001 #1
    1 )那个游戏引擎的离线运行的问题,我不清楚。但理论上是可以实现下载后,断网运行(除非要联网获取数据、文件之类)

    2 )不能做真正的本地应用。应该是看到老 IE 那个 ActiveX 控件爆出的诸多安全漏洞而限制的,未来会否实现安全地放权,那是以后的事情了

    3 ) wiki 上提到 WASM 的开发团队分别来自 Mozilla、Google、Microsoft、Apple,代表着四大网络浏览器 Firefox、Chrome、Microsoft Edge、Safari。你提到的字节码联盟,好象是想搞个本地版的 WASM,而不是 Web 上的 WASM。
    fox0001
        6
    fox0001  
    OP
       2019-12-06 23:16:46 +08:00
    @momocraft #4 正如 3 楼所言,目前还不成熟。虽然公司的项目目前不会用到,但是既然成为标准,而且各大浏览器都支持,还是值得玩玩
    ochatokori
        7
    ochatokori  
       2019-12-06 23:18:43 +08:00 via Android
    前端又可以学习新知识了?
    alphatoad
        8
    alphatoad  
       2019-12-06 23:19:55 +08:00 via iPhone
    前端也得学编译原理了哈哈哈哈哈
    fox0001
        9
    fox0001  
    OP
       2019-12-06 23:23:21 +08:00
    @ochatokori #7 不,是后端可以玩前端了
    momocraft
        10
    momocraft  
       2019-12-06 23:31:35 +08:00   ❤️ 2
    我更看好 wasm 在浏览器外的应用:

    - 作为一种独立于 cpu arch 和 os 和源语言的, 对编译优化友好的中间语言 (不过这条路很长, 现在连个跨源语言的 abi 都没有)
    - 作为一种权限和调度更可控的沙盒语言

    浏览器联盟中的 fastly 的 lucene 就是 wasm 到 native 的编译器, 已经用在 fastly 自己的 edge cloud 了.
    momocraft
        11
    momocraft  
       2019-12-06 23:32:20 +08:00
    #10: 记错了, 那个编译器叫 lucet
    cest
        12
    cest  
       2019-12-07 00:35:16 +08:00   ❤️ 1
    write once, debug everywhere
    Austaras
        13
    Austaras  
       2019-12-07 00:38:28 +08:00
    奇妙的是 w3c 的通告下面只有 6 个中国公司。。。深表不安
    someonetwo
        14
    someonetwo  
       2019-12-07 00:44:50 +08:00
    前端的门槛是越来越高了
    inhzus
        15
    inhzus  
       2019-12-07 00:47:26 +08:00 via Android
    看到 getting started 示例的 hello.c C++程序员留下了感动的泪水
    Mohanson
        16
    Mohanson  
       2019-12-07 01:46:08 +08:00 via Android
    我前些年写的 wasm 虚拟机,是最早的纯 py 实现的 wasm 虚拟机:

    https://github.com/mohanson/pywasm

    现在 wasm 这门技术问题还很多,比如定位不准…说是给前端用,结果现在来玩的都是系统和底层的家伙,有拿来做嵌入式的,做区块链的,就是很少见到有人拿来写网页…
    DOLLOR
        17
    DOLLOR  
       2019-12-07 01:52:04 +08:00
    已经有灰产开始利用 WASM 来挂挖矿程序了,性能比 JS 强,还更隐蔽。
    blless
        18
    blless  
       2019-12-07 01:55:22 +08:00 via Android
    @Austaras 那你看见 cncf 里面一排中国公司岂不是吓尿
    cxe2v
        19
    cxe2v  
       2019-12-07 02:06:58 +08:00
    前几年已经激动过一波了,还是等等再看吧
    Austaras
        20
    Austaras  
       2019-12-07 03:06:41 +08:00
    @blless w3c 有哪些成员我比你清楚得多,但是这么大件事为什么背书被拉出来的只有中国公司,非常不可思议
    Buges
        21
    Buges  
       2019-12-07 05:29:03 +08:00 via Android
    @momocraft 权限更可控吗。。这玩意感觉非常靠近“native”,越 native,API 靠近底层就越是难以“可控”,一直觉得一个现代的操作系统就该把所有东西套到一层 VM 里,实现更具体更精细的调度管理。

    把 native 搬进 Web 总有一种开当年 IE 的 dao.车的感觉,也不知道会不会重蹈覆辙。
    prenwang
        22
    prenwang  
       2019-12-07 08:36:14 +08:00
    qt 的程序只需要加个参数运行就能用浏览器打开操作,就是 WASM,但是只在预览阶段, 两个明显问题, 同时只能一个连接,加载比较慢,操作起来是真的强大。

    估计还要等等,值得期待。
    trait
        23
    trait  
       2019-12-07 08:50:48 +08:00 via Android
    wasm 应用很广,rust 里面甚至能做个单独的宏解析器外挂加快编译速度
    murmur
        24
    murmur  
       2019-12-07 08:54:24 +08:00
    IE 不支持 wasm,所以再等等
    murmur
        25
    murmur  
       2019-12-07 09:01:52 +08:00
    前端的主要形式还是网页,瓶颈还是卡渲染能力,真要性能要么 unity 要么 native,选 wasm 提升 js 性能干嘛,除了加密用,挖矿?
    love
        26
    love  
       2019-12-07 09:41:02 +08:00 via Android
    @murmur 前端又不是只有 html 一种,要性能可以用 canvas 什么的
    TapCode
        27
    TapCode  
       2019-12-07 10:49:36 +08:00
    @Austaras 不止 6 家吧
    murmur
        28
    murmur  
       2019-12-07 10:50:48 +08:00
    @love canvas 也比不上 unity 和 unreal 啊
    love
        29
    love  
       2019-12-07 11:24:23 +08:00
    @murmur 你哪里看来的比不上?
    murmur
        30
    murmur  
       2019-12-07 11:31:21 +08:00
    @love 哪里看能比的上?要性能很容易想到游戏,那么 h5 游戏有什么重量级产品么
    love
        31
    love  
       2019-12-07 11:39:27 +08:00
    @murmur 目前的 h5 都用的是啥技术?人家目前做得怎么样,不代表浏览器没有能力。
    https://docs.unity3d.com/Manual/webgl-performance.html 看第一段话
    hst001
        32
    hst001  
       2019-12-07 11:43:34 +08:00 via Android
    只是对于计算量大的应用有用,一般的应用用不到这个,因为 UI 渲染还是得用传统的方式,所以没什么好嗨的
    flyzero
        33
    flyzero  
       2019-12-07 14:15:43 +08:00
    wasm 好像是沙盒的吧,有好多限制
    wangyzj
        34
    wangyzj  
       2019-12-07 16:58:45 +08:00
    来吧
    前端不如一起来写 cgi 吧
    fox0001
        35
    fox0001  
    OP
       2019-12-07 17:10:25 +08:00 via Android
    @momocraft #10 纯个人看法,我不看好浏览器外的应用。对于 C、Go 这种语言,直接编译成本地执行代码,更能压榨机器性能。编译一次,到处运行的想法,必然带来性能的牺牲。

    未来就看大佬们怎么玩了。上一个带着这种想法的语言,Java,最终沦为它本身没有想过的 Web 服务语言。
    fox0001
        36
    fox0001  
    OP
       2019-12-07 17:11:46 +08:00 via Android
    @cest #12 You got it !
    fox0001
        37
    fox0001  
    OP
       2019-12-07 17:12:53 +08:00 via Android
    @Mohanson #16 拜见大佬
    fox0001
        38
    fox0001  
    OP
       2019-12-07 17:14:09 +08:00 via Android
    @someonetwo #14 前端还是前段,只是后端过来拍拍肩膀“让我来”
    fox0001
        39
    fox0001  
    OP
       2019-12-07 17:16:07 +08:00 via Android
    @DOLLOR #17 确实是个很好的应用(狗头.gif )
    yksoft1test
        40
    yksoft1test  
       2019-12-07 17:48:48 +08:00
    问题是 Web 浏览器的这个模型,桌面软件的移植还是有很多困难的。
    tempdban
        41
    tempdban  
       2019-12-07 17:50:53 +08:00 via Android
    @momocraft 你说得那种语言好像是 llvm ir
    dioxide
        42
    dioxide  
       2019-12-07 17:56:32 +08:00
    意味着 Web 端可以搞二进制部署了,不再像 JS 那样透明了...
    yksoft1test
        43
    yksoft1test  
       2019-12-07 17:56:52 +08:00
    目前也只有使用 SDL 的那些软件比较容易移植到 Emscripten 平台,其他的基本也仅限于一些库之类。ffmpeg 见过好几个地方用 emscripten 版得了
    Athrob
        44
    Athrob  
       2019-12-07 19:52:10 +08:00
    突然就想到未来网络跟电力一样是必备的, 不再有带宽或线路之分.
    假如网络是万兆起步的时候
    玩个游戏还要下载客户端吗?
    看个高清还要下到本地吗?
    会不会改变生活呢.
    murmur
        45
    murmur  
       2019-12-07 20:43:57 +08:00   ❤️ 1
    @Athrob 那个时候你的 MX250 就达到 MX1080ti 的级别了,云 3A 和云独~立小游戏还是有区别的,就算一个人分一个 1060 的显卡,一个机房的机器够多少人玩游戏,服务器 U 这种低频他就不适合打游戏
    Rorysky
        46
    Rorysky  
       2019-12-07 21:32:38 +08:00
    还比较远,应用前景有限,有什么场景是 wasm 非用不可,或者说 明显受益的么?
    FrankHB
        47
    FrankHB  
       2019-12-07 22:25:11 +08:00
    原来搞 Web 的另说,对圈外人来讲,撑死就是又多了个争风吃醋的 target 多找点事添乱而已。(对不少应用开发者来讲,还不如整活个干净点的 XUL 有意义。)
    WASM 一开始的设计还有些新玩意儿,不过 AST 出局以后 Web 外也没什么标新立异的资本了。大概名字是原罪吧。
    realpg
        48
    realpg  
       2019-12-07 22:36:45 +08:00
    @Rorysky #46
    让你浏览器挖矿
    FrankHB
        49
    FrankHB  
       2019-12-07 22:37:17 +08:00
    LLVM IR 是没戏一桶浆糊的。这玩意儿它存在的意义主要是让脑子不够好使到接受不了 CPS 之类的用户读写而已——然而这样的用户本来就不成气候;而 explicit SSA IR 远远也没简单到让剩下大多开发者日常能看能写的程度。因为本质上在结构化扩展性上是残的,根本不可能通过语法扩展取代高级语言前端之间的翻译;想自己扩充功能的用户有 IR 也多大没卵用,照样要跪在不稳定的 API 面前。
    WASM 原来有甩掉这个缺陷的机会,不过给它自己糟践了,不提也罢。不过可笑的是,诸如格林斯潘第十定律和这里山寨的所谓的终结者定律原始都是用在具有(或者至少理论上允许直接修改局部特性扩充出来)同像性的语言上,WASM 这个恰恰就把这坨阉了……年轻人,还真敢说啊。
    现在大抵是看透了,以二进制规格开始吹的,要么老实点不要想着一桶浆糊,否则还是都凉凉好了,别没事找事。
    FrankHB
        50
    FrankHB  
       2019-12-07 22:42:49 +08:00
    @Athrob 光速一直是有限的,谢谢理解。
    Athrob
        51
    Athrob  
       2019-12-07 23:46:06 +08:00
    @murmur #45 我本意并不是云显卡, 只是省去下载安装这个过程. 类似于网吧无盘那种, 只不过范围扩大了.
    Athrob
        52
    Athrob  
       2019-12-07 23:47:11 +08:00
    @FrankHB #50 光速有限可以多地部署嘛, 跟现在的 cdn 一样
    FrankHB
        53
    FrankHB  
       2019-12-08 00:20:16 +08:00
    @Athrob 光速有限是指响应上的物理限制会让空间换时间的策略失效而必须从设计之初正面应对做好变通。比如说,现在的时钟频率已经让集成电路布线已经要考虑这个限制了。当然,网络没那么极端,但因为因果律限制,凡涉及到用户输入输出的交互,会有同样来自光速的限制。比如在线游戏用户的操作,几十毫秒的延迟可能就是省不掉的。所以只要尺度够大,物理上近一些的在一些关键问题上就是一定更占便宜,有时候可能会决定可行性;网络技术再怎么发展这都没法改变。
    能改善的主要是吞吐量。但就算技术允许上限提高和单位传输的数据成本下降,这里总成本一直感人嘛……而且和计算资源一样,很难想象带宽过剩是什么情况。“网络跟电力一样是必备的,不再有带宽或线路之分”最后无非是用户不需要计较带宽具体有多少。然而物理上这些资源不可能凭空生出来,就要服务商做基建投入。羊毛是出在谁身上的呢……
    FrankHB
        54
    FrankHB  
       2019-12-08 00:31:01 +08:00
    @Athrob 继续脑洞一下……网络技术到要真能发展到用户能对带宽可用性甚至成本都满不在乎的情形,可能再晚些年满大街都是人机融合人了……对植入人体的计算机来讲,物理距离的限制仍然会发挥作用;安全需求也要求隔离。这样一看,这些计算机就像是现在的桌面和手持设备一样直接能被人操控,而这以外的计算机都是属于网络而不是个人控制的公有“云”。
    ……好像人能直接操控的距离反过来还减小了,怎么觉得是在开倒○。。。
    Athrob
        55
    Athrob  
       2019-12-08 01:58:13 +08:00
    @FrankHB #54 我只是想想, 剩下的就交给你们这些专业人士来攻克难关了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2665 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 06:14 · PVG 14:14 · LAX 22:14 · JFK 01:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.