老外写了一篇为什么 WASM 流行不起来的文章。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
3dwelcome
V2EX    随想

老外写了一篇为什么 WASM 流行不起来的文章。

  •  1
     
  •   3dwelcome 2022-03-23 13:55:43 +08:00 8125 次点击
    这是一个创建于 1344 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近追赶潮流,学习把 Swift 移植到 web 开发的项目,https://swiftwasm.org/ 有提供完美操作 DOM 的 JS KIT 库。

    感叹这是好东西啊,Swift 是目前最新的语言,去网上一顿搜索,最后发现 WASM 那么多年,技术早已成熟,市场却一直止步不前。

    好奇查到去年这篇文章,https://blog.bitsrc.io/whats-wrong-with-web-assembly-3b9abb671ec2 ,里面的内容,就是说 Web 开发人群和传统语言开发人员,是完全不同的两批人。

    会用 TS/JS 的前端,他们根本不需要 WASM 的存在。前端 NPM 已经有足够多的积累,能用 TS/JS 这把锤子,敲任何前端的钉子,他们并不需要 WASM 这项新技术。

    感叹浏览器这些年的迅猛发展,早已把浏览器开发领域的内部世界和外部世界,隔离成了两个世界。
    30 条回复    2022-03-29 14:38:19 +08:00
    Buges
        1
    Buges  
       2022-03-23 14:01:39 +08:00 via Android
    不止吧,wasm 目前还不完善,很多东西还在草案阶段,生态支持差,操作 dom 性能低下,而且带 runtime 的语言 runtime 太大等问题都没有解决。
    nomagick
        2
    nomagick  
       2022-03-23 14:06:46 +08:00   4
    WASM 就好比浏览器的 ffi

    ffi 这个东西早就成熟了几十年,也没见他们在各自的语言里扑腾出什么花来,
    也没见 C 代码猛调 Java 函数,也没见 C++取代 Python 实现核心功能

    不过前端和其他语言开发人员确实是两批人,这是前端行业的大问题,老是融入不了大家庭
    3dwelcome
        3
    3dwelcome  
    OP
       2022-03-23 14:07:07 +08:00
    @Buges https://madewithwebassembly.com/ 上有项目大全,2019 年刚出来还挺火,google earth 和 doom3 移植之类的。

    但是最近发展越来越颓废,很少有重量级项目出现。

    前端不会去用,后端也懒得用。这就是 wasm 的尴尬处境。
    AV1
        4
    AV1  
       2022-03-23 14:20:07 +08:00   1
    我觉得 wasm 更多的意义是把其他语言编写的基础设施移植到前端,成为前端的基础设施。形成“JS/TS 为主+其他语言为辅”的生态。

    而 wasm 操作 dom ,用“其他语言编译成 wasm”,试图干掉 JS 的做法就本末倒置了。
    实际上在 wasm 出现之前,就有“其他语言编译成 JS”这种技术路线,同样也没流行起来。
    3dwelcome
        5
    3dwelcome  
    OP
       2022-03-23 14:25:54 +08:00   1
    @DOLLOR 前端同学想要通过 nodejs 写后端。后端同学想要通过别的语言写前端。

    结果大家谁都不服谁,各占一片疆土,谁都不肯让步。
    murmur
        6
    murmur  
       2022-03-23 14:27:31 +08:00
    wasm 的意义在于 JAVA + script ===WASM===> Javascript
    Rwing
        7
    Rwing  
       2022-03-23 14:47:54 +08:00
    看看 C#的 blazor ,出来几年了,已经纳入到微软的 web 框架 asp.net 中了,也有一些生产应用。
    3dwelcome
        8
    3dwelcome  
    OP
       2022-03-23 14:59:31 +08:00
    @Rwing 这篇文章的内容,就是原来用 C#的后端,会通过 wasm 多一个浏览器发布平台。本来后台管理界面是 windows 上运行,现在浏览器里也能用。

    但是传统前端是不会去改学什么 C#的,React/VUE 组件够多了,有这点时间学 C#,早就把需求给写完,去楼下喝咖啡了。
    aneostart173
        9
    aneostart173  
       2022-03-23 15:30:32 +08:00   2
    浏览器历史包袱太重啦,最早浏览器只是一个类似报纸的东西,谁知道后来变成了 OS 。
    除非把 html 和 css 都扫进垃圾堆。
    juzisang
        10
    juzisang  
       2022-03-23 15:57:12 +08:00   1
    生态也是一个重要因素吧,其它语言的各种 UI 库有现在的前端丰富吗?构建界面有前端简单吗,看国内国外一大票软件都用 Electron 来构建应用就能看出来,前端都去侵占其它语言构建软件的市场了。
    gjquoiai
        11
    gjquoiai  
       2022-03-23 16:22:33 +08:00
    wasm 现在的场景似乎集中于高性能前端应用和插件系统,已经离传统前端很远了。不过前端应用复杂到一定程度肯定还是得用回 wasm ,毕竟也没别的提升性能的手段了。
    wobuhuicode
        12
    wobuhuicode  
       202-03-23 16:30:32 +08:00
    wasm 主要是走错了门。需要密集型计算的 JS 做不了?那就交给后端呗,核心业务全部都是后端化。
    adoal
        13
    adoal  
       2022-03-23 16:40:05 +08:00
    互联网开发,糙、快、猛 rules all
    3dwelcome
        14
    3dwelcome  
    OP
       2022-03-23 16:49:10 +08:00
    @gjquoiai "不过前端应用复杂到一定程度肯定还是得用回 wasm "

    国内互联网一个前端项目就是三个月到半年,复杂前端属于极少数需求。

    页面卡一般都是 DOM 过多,wasm 也解决不了。

    就算有性能瓶颈,后期不是转 flutter ,就是用原生语言重新开发了。也没 wasm 什么事情。
    mxT52CRuqR6o5
        15
    mxT52CRuqR6o5  
       2022-03-23 17:15:15 +08:00 via Android
    增加技术栈数量会增加维护难度,所以正常的工程上的考虑,如果是 js web 项目不会考虑再去用其他语言开发 wasm 项目子模块(顶多引入已经封装成 js 调用的一些 wasm 库),要么就是完全不考虑 js ,上其他语言 all in wasm
    flashback313
        16
    flashback313  
       2022-03-23 17:23:33 +08:00   1
    写 js 的人嫌 wasm 麻烦,写其他语言的人不想写前端
    gjquoiai
        17
    gjquoiai  
       2022-03-23 17:39:07 +08:00   1
    @3dwelcome #14 emm 我只好说你说的这种项目当然不需要 wasm 。。。确实场景肯定很少,但真的到了这个程度也只有 wasm 可用。现在越来越多东西搬到了 web 上,从原型设计到在线文档,都是 wasm 的目标用户。
    duke807
        18
    duke807  
       2022-03-23 17:48:45 +08:00 via Android   1
    @wobuhuicode ,密集算後端做的,再乘以用量,服器根本抗不住,抗的住用也受不了。

    性能有非常高要求的才用 wasm ,所以大多是配合 C/C++,而且大多可以直接用的 C/C++ 程序是 linux 程序,前端 C 和 linux 的人少。

    有查示,有一半的 wasm 用是了加密自己的代, js 代容易被分析。其中很多加密是了做事怕被。
    duke807
        19
    duke807  
       2022-03-23 17:50:25 +08:00 via Android
    @duke807 一半以上
    HFX3389
        20
    HFX3389  
       2022-03-23 19:41:28 +08:00
    wasm 现在我觉得流行用在视频加密播放那一块,想把网站的视频下载下来结果看到 WASM 人都傻了...完全不会
    murmur
        21
    murmur  
       2022-03-23 19:56:53 +08:00
    @HFX3389 防的就是爬虫,个人用户录屏他怎么防,浏览器在牛逼也没法监测录屏和采集卡
    jim9606
        22
    jim9606  
       2022-03-23 20:30:10 +08:00
    我理解 js+wasm 的关系有点像 python+C 的关系,js/python 主要做胶水,要求快速开发,wasm/c 负责有性能瓶颈的部分。wasm 相比起 native ,有更好的跨平台能力,同时能较为方便地移植原来 C 计算类库。
    之所以需要 wasm ,是因为 js 引擎的性能还没有强到可以应对所有 web 应用的需要,这类需求对性能要求高一点点,但可以接受一定的性能下降换取跨平台能力。
    比较典型的例子是视频解码,这个直接拿 js 来做,不是不可能,但性能会很难接受。wasm 做到让近 5 年的 CPU 可以流畅解码 1080p 级别的 AV1 视频就够了。
    longbye0
        23
    longbye0  
       2022-03-23 20:44:47 +08:00
    @jim9606 av1 不如靠浏览器支持,chrome 因为不支持 265 ,所以视频站和直播,比如 B 站虎牙,才会用 wasm 做 265 解码。
    duke807
        24
    duke807  
       2022-03-23 22:54:00 +08:00 via Android
    @longbye0 不想啊,垃圾果就是拖着不支持 av1 啊
    Cbdy
        25
    Cbdy  
       2022-03-23 23:00:57 +08:00 via Android
    stackblitz 的 webcontainer 用的 wasm ,很好用,我天天用
    stevefan1999
        26
    stevefan1999  
       2022-03-23 23:41:38 +08:00
    在有 blazor 了 能火起了
    L1shen
        27
    L1shen  
       2022-03-25 10:15:21 +08:00
    B 站好像用 wasm 跑 ffmpeg 截用户上传的视频当封面
    keyword233
        28
    keyword233  
       2022-03-26 22:26:29 +08:00
    @L1shen 推荐封面记得一直是服务端截的图,B 站目前应该只有 H265 支持用到了 wasm
    L1shen
        29
    L1shen  
       2022-03-28 10:27:13 +08:00
    xzh654321
        30
    xzh654321  
       2022-03-29 14:38:19 +08:00
    有刚需还是会用的,没有的话当然还是拿 js 解决了……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2680 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:04 PVG 23:04 LAX 07:04 JFK 10:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86