JavaScript

JavaScript 作者 Brendan Eich 制作了一个幻灯片(方向键翻页),回顾了他在 1995 年 5 月的 10 天内开发出 JS 语言,描绘了 JS 在当前的演化。

Brendan Eich 称,JS 是 Java 的小兄弟,Java 的字节码设计影响了他在 JS 上的工作。Java 是一种静态类型语言,而 JS 则是一种非类型(动态类型)语言。1995 年的 5 月,他在 10 天完成了 JS 的句法分析和解析程序,解析程序运行在一个字节码解析器中,而标准库则没有完善。此后 JS 的发展如一日千里,出现了 asm.js、ES6、TypeScript、Flow 等。JS 是动态类型,但 asm.js 为了确定性能采用了类型字节码。今天的开发社区有着数以百计的编译到 JS 语言,如 Dart,连 Java VM 也支持动态语言了。

JavaScript 除了提供一个非重度开发者也能使用的程式语言外,也是提供开发者由 Java 这类静态型别转至动态型的另一种选择。但现在 Mozilla 所推的 Asm.js,又将 JavaScript 带回到了静态型别。

第一天 Modern Web 大会由 JavaScript 之父同时也是 Mozilla 基金会共同创办人 Brendan Eich 首先拉开序幕,主讲第一场主题演讲《Javascript at 20 Years》。他说他在 1995 年仅花了 10 天就开发出 Javascript,JavaScript 之所以用了 Java 这四个字母完全是行销上考量,借由 Java 的名气使更多人注意到 JavaScript。Brendan Eich 想让 JavaScript 乍看之下像是 Java,但其实与 Java 又完全不同。

JavaScript 与 Java 其中一个很大的差异在于类型,Java 是静态类型,也就是说在撰写 Java 代码时,开发者需要先定义变数的类型,而 JavaScript 却不需要,这使得 JavaScript 在开发上,更为弹性也更容易。不过这也是 JavaScript 的致命伤,动态型别使得 JavaScript 的执行效率受到影响。因此 Brendan Eich 提到,现在 Mozilla 推的 Asm.js,是编译过的 JavaScript 子集,这个架构限制原本 JavaScript 拖累效能的语法,但正是为了解决这个问题,让 JavaScript 执行的效率达到跟 Bytecode 一样。

Brendan Eich 在演讲中,展示了两款由支援 Asm.js 的游戏引擎 Unity 与 Unreal 所打造的 3D 游戏,过去 JavaScript 的执行效率限制了其在网页上的应用,但是因为 Asm.js,像游戏这种运算密集且注重性能的应用,也能在网页上执行。Brendan Eich 提到,他设计 JavaScript 除了提供一个非重度开发者也能使用的程式语言外,也提供开发者由静态转动态类型语言的选择。只是现在 Asm.js,又将 JavaScript 带回到了静态型别。

Brendan Eich 用太阳系的结构来形容 JavaScript,其中最核心部分是标准 ES3(ECMAScript 3),此标准定义了 JavaScript 的一些核心功能,并且能向下兼容一些较旧的浏览器,他还特别展示了以前的 JavaScript 网页,依然能够在最新的 Firefox 上执行,Brendan Eich 骄傲地表示,JavaScript 兼容性相当好。

而 ES6 则是 JavaScript 现在 2015 年标准,与之前版本有较大的语法以及概念变动,他也提到,一年后将会采用 ES7 的标准,ES8 的标准预计将在 2017 年完成。

而有一些舆论则认为,微软最近积极推行支持 JavaScript 的开源开发语言 TypeScript,背后用意则是想强势的影响 ES7 的标准制定,Brendan Eich 表示,他并不这么认为,因为 ES 的标准无法被单一组织操控的,而微软找来 C# 之父操刀 TypeScript,他觉得微软真的想参与其中。有更多的参与者来完善是好事。

现在的微软明显跟过去不一样了,Brendan Eich 认为,最近微软在开源动作频频是玩真的,因为开源是大趋势,而他也觉得这跟微软组织内世代交替,文化改变有很大的关系。