JavaScript 正在变成 Web 界的 C++

2015-08-14 09:00:59 +08:00
 ibloging

早在2009年当我开始读博的时侯,我告诉导师,我想选择优化动态编程语言的方向。我的论文很大的一部分将涉及一些动态JIT语言编译器的实现,最后我们的讨论集中在应该选择哪种语言。最后,我们最终选择了JavaScript。这是一个很好的方案:被广泛使用的“现实世界”中的编程语言,还有一点,这种语言足够轻量,一个人就可以实现编译器。 ECMAScript 5的规范大概250页长,我把它从头读到尾,然后开始设计Higg。

从那以后,我觉得我一直在看着JavaScript慢慢变成C++,它成为了“kitchen sink”式的语言(注*来自二战时期的成语"everything but the kitchen sink", 指除了洗碗槽外各式各样的炮弹齐发,现在指有太多的东西)。因此,许多新的功能被添到ES6的新规范上。从字面上统计这个规范已经是ES5规范长度的两倍。更糟糕的是,在ES6规范完成之前,已经有人预定了一箩筐的新功能要集成到ES7。他们都还没有完成ES6,就已经开始计划ES7了。有一些JavaScript语义不一致的地方需要修复,但新加入的ES6和ES7的新特性无助于解决这些问题,他们仅仅是增加了新功能(或者说:复杂性)到这个语言。

就个人而言,我比较崇尚简单和极简主义编程。我认为,较小的语言比较容易实现、优化、学习、调试和理解。你的语言越大越复杂,更多的语义不一致性就会在更多的虚拟机之间跳出来。如果JavaScript真的是“Web界的汇编语言” ,那么它为什么非得要实现这些高层次的功能特性?合乎逻辑的做法是应该尽可能多的固化JS的底层语义,并专注于改善和优化支持JS的编译器。我相信JS的复杂性一直在持续增长的原因是出于它是由学院派设计驱动的。

我当然有偏见。实际上我实现了自己的JavaScript JIT编译器,我太忙了,而且跟不上这增加这些新功能。在我看来,在当今的网络世界里,没有人会暂停片刻,呼吸和思考一下。案例分析: Mozilla 做了一个很大的噪音asm.js,编译标准的本地代码到JS,而且据称比谷歌的Native Client 更好。我觉得asm.js仍然是比较新的,还没有足够多的开发商采用和通过它,它只有在技术演示中使用过,但Mozilla和谷歌已经开始着手WebAssembly ,它独立于asm.js,二者没有什么关系。第二:asm.js仍然是很新的(2013年开始,它只有两岁),有没有足够多的采纳的情况下,它的影响微乎其微。

从本质上讲Brendan Eich告诉我们的WebAssembly,是希望将所有的编译器设立一个中立的编辑目标,我们真的不希望或需要为Web创建一种新的字节码格式或编译器实现,在我看来,这是一个有点不幸的妥协。

译文: http://ourjs.com/detail/55cd3c89fbd23139de9e3558

8755 次点击
所在节点    程序员
46 条回复
bumz
2015-08-15 07:41:32 +08:00
@amery2010 語言的變化永遠是強制的。ES5 出了,如果你不理解 ES5 的寫法,你就無法理解 ES5 時代的程序;同樣即便痛恨 ES6 的寫法,爲讀懂別人的程序仍舊要被迫適應 ES6 的寫法。

語言是沒有選擇的。

除非分裂。
Kabie
2015-08-15 08:25:53 +08:00
WebAssembly。。。总算有机会真正不用JS了。。。
mudkip
2015-08-15 10:06:35 +08:00
如果尝试用 ES6/7 写一点东西,就会知道 ES6/7 有多好了。
let/const只是本来就应该有的块作用域,残念的只是为了要向下兼容没办法和Swift一样用var/let;
Arrow function拯救了var that = this的地狱;
class只不过是给原本的原型继承提供一种语法糖;
async/await、generators把代码变得更漂亮了;
Promise是业界普遍使用多年的东西,放到JavaScript引擎里并没有不妥...
lvfujun
2015-08-15 13:37:09 +08:00
楼主用的百度翻译吗?
bramblex
2015-08-15 22:24:33 +08:00
诚心默念大法好,Js大法保平安
SoulClinic
2021-11-03 17:37:27 +08:00
喂, ES8 什么时候出来呀?

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

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

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

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

© 2021 V2EX