@
tennix 哎……我觉得既然不懂前端就不要这么强行回答吧……
[看看前端技术变化就知道前端有多么糟糕了] 我一直看前端技术变化怎么只觉得越来越好呢?变化快不是什么坏事,变化快说明前端受到越来越多的重视,所以有越来越多的人带着各种思想进入这个领域,难道你觉得一个技术要向 2011 年之前的 C++那样几乎毫无变化才是好技术吗(然而现在照样在剧烈变化)。
[第一这是一门高级语言;第二这门语言设计上有太多的坑;第三运行性能很成问题] JS 确实有坑,但要说多的话其实也不多,而且 es5, es6 之后就填了不少,总的来说完全够不上“太多”这样的定义,一开始学习踩上几个真不算什么。性能上现在 JIT 的 JS 距离原生语言也就一个数量级而已, asm.js 就在一个数量级以内了,说实话比起大多数语言( python, ruby )来说已经好多了。
[TS 和 CS 转 JS 效果当然很不错,因为它们本身就是在 JS 基础之上构建的(ts/cs 编译器都是 js 写的)] 说实话语言和它的编译器用什么来写其实一点关系都没有(而且其实 CS 编译器早期版本是用 ruby 写的,后期是 cs ; TS 编译器在一开始推出就是 TS 写的),其实编译器自举只是对编译器的一种验证而已,并不能说明任何事情……这两个语言和其他语言 compile to JS 方案的最大区别只是这两个语言设计上就为 JS 特性做了裁剪而已,其他语言编译出来比较恶心只是因为没有裁剪那就只有比较恶心的方式来模拟……
[只有出来一个低级底层一点的语言,其它语言才可以无痛 compile/transpile 到这个目标语言...没记错的话 asm.js 只是 js 的一个子集,而且似乎并不是一个标准] 首先 asm.js 当然是一个标准,虽然是 Mozzila 提出来的,最新的浏览器除了 Safari 外都对 asm.js 有优化支持,其次其实 Asm.js 就是你要的那个底层语言……其实 Webasm 只是 asm.js 的二进制版而已……
[有了 webassembly 这种格式,以前可能需要十几兆甚至更大的 JS 才能实现的功能,以后经过编译优化可能只需要几百 k ,性能也会有很大提升] 这个真的就是纯 YY 了,我上面已经说了其实 webasm 只是 asm.js 的二进制形式,大小其实不会有本质的变化,根据官方 FAQ 的数据,二进制形式的代码大小也有 asm.js 的 1/3 大小, gzip 后差距更小,二进制的大小差不多是 Asm.js 版的 70%。而性能更是完全没有变化,因为其实还是 Asm.js ,只是二进制版而已…… webasm 只是有 parse 效率上的优化……
简单来说, WebAsm 不是非 JS 开发人员的银弹,如果想做前端,还是请使用 JS/TS/CS ,这东西在可见的未来并不会动摇 JS 的地位,只能作为一个高性能计算的解决方案而已。