Javascript的诞生

345 阅读4分钟

Javascript 的诞生

一、目录

  • Javascript 的历史

  • Javascript 的诞生记

  • Javascript 的 10 个设计缺陷


[ 正文 ]


二、Javascript 的历史


1993 年,伊利诺伊大学厄巴纳-尚佩恩分校的国家超级电脑应用中心(NCSA)发表了 NCSA Mosaic,这是最早流行的图形接口网页浏览器,它在万维网的普及上发挥了重要作用。1994 年,一家名为 Mosaic Communications 的公司在加州芒廷维尤成立了,并雇用了许多原来的 NCSA Mosaic 开发者用来开发 Mosaic Netscape,该公司的目标是取代 NCSA Mosaic 成为世界第一的网页浏览器。第一个版本的网页浏览器 Mosaic Netscape 0.9 于 1994 年底发布。在四个月内,已经占据了四分之三的浏览器市场,并成为 1990 年代互联网的主要浏览器。为避免 NCSA 的商标所有权问题,该浏览器于同年更名为 Netscape Navigator,该公司命名为 Netscape Communications。网景预见到网络需要变得更动态。公司的创始人马克·安德森认为 HTML 需要一种胶水语言,让网页设计师和兼职程序员可以很容易地使用它来组装图片和插件之类的组件,且代码可以直接编写在网页标记中。 1995 年,网景招募了布兰登·艾克,目标是把 Scheme 语言嵌入到 Netscape Navigator 浏览器当中。但更早之前,网景已经跟昇阳合作在 Netscape Navigator 中支持 Java,这时网景内部产生激烈的争论。后来网景决定发明一种与 Java 搭配使用的辅助脚本语言并且语法上有些类似,这个决策导致排除了采用现有的语言,例如 Perl、Python、Tcl 或 Scheme。为了在其他竞争提案中捍卫 JavaScript 这个想法,公司需要有一个可以运作的原型。艾克在 1995 年 5 月仅花了十天时间就把原型设计出来了。 最初命名为 Mocha,1995 年 9 月在 Netscape Navigator 2.0 的 Beta 版中改名为 LiveScript,同年 12 月,Netscape Navigator 2.0 Beta 3 中部署时被重命名为 JavaScript,当时网景公司与昇阳电脑公司组成的开发联盟为了让这门语言搭上 Java 这个编程语言“热词”,因此将其临时改名为 JavaScript,日后这成为大众对这门语言有诸多误解的原因之一


三、Javascript 的诞生记

网页脚本语言到底是什么语言?网景公司当时有两个选择:一个是采用现有的语言,比如 Perl、Python、Tcl、Scheme 等等,允许它们直接嵌入网页;另一个是发明一种全新的语言。这两个选择各有利弊。第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;第二个选择,有利于开发出完全适用的语言,实现起来比较容易。到底采用哪一个选择,网景公司内部争执不下,管理层一时难以下定决心。

就在这时,1995 年 Sun 公司将 Oak 语言改名为 Java,正式向市场推出。Sun 公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。网景公司动了心,决定与 Sun 公司结成联盟。它不仅允许 Java 程序以 applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将 Java 作为脚本语言嵌入网页,只是因为这样会使 HTML 网页过于复杂,后来才不得不放弃。总之,当时的形势就是,网景公司的整个管理层,都是 Java 语言的信徒,Sun 公司完全介入网页脚本语言的决策。因此,Javascript 后来就是网景和 Sun 两家公司一起携手推向市场的,这种语言被命名为"Java+script"并不是偶然的。

仅仅一个月之后,1995 年 5 月,网景公司做出决策,未来的网页脚本语言必须"看上去与 Java 足够相似",但是比 Java 简单,使得非专业的网页作者也能很快上手。这个决策实际上将 Perl、Python、Tcl、Scheme 等非面向对象编程的语言都排除在外了。Brendan Eich 被指定为这种"简化版 Java 语言"的设计师。但是,他对 Java 一点兴趣也没有。为了应付公司安排的任务,他只用 10 天时间就把 Javascript 设计出来了。由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript 写出来的程序混乱不堪。如果 Brendan Eich 预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?


四、Javascript 设计的 10 个缺陷

传送门


注:以上内容摘自阮一峰博客