起初网景公司用了十天时间创建了一个 JavaScript,后来它成为事实上的 Web 标准,并横扫各大编程语言榜单成为开发者最受欢迎的语言之一。
近日,有开发者对 JavaScript 的开发周期提出了质疑,以及想要了解 JavaScript 现存的一些缺陷譬如隐式类型转换导致代码可读性差的存在是否与最初的开发时间有关。于是,其在从《JavaScript:第一个 20 年》(
https://www.wirfs-brock.com/allen/jshopl.pdf)等系列资料中进行了深入挖掘,并根据自己的了解撰写了此文,希望能够更清晰地了解 JavaScript 的过去。
原文:
https://buttondown.email/hillelwayne/archive/did-brendan-eich-really-make-javascript-in-10-days/
声明:本文为 CSDN 翻译,未经允许禁止转载。
我曾经听说 JavaScript 有很多缺点,因为第一个版本只用了十天来开发。我很好奇这是否属实,并且是否因为初版开发时间的短暂导致了这门语言存在一些缺点。
经过一些研究,我可以不太确定地说:事情比较复杂。
JavaScript 的“第一个版本”确实只花了十天的时间。确切的日期没有得到确认,但是据 JavaScript 之父 Brendan Eich 回忆,JavaScript 是在 1995 年 5 月 6 日至 15 日之间开发出来的。但起初这只是一个用于内部演示的最小原型(Mocha)。
JavaScript 1.0 在 1996 年 3 月公开发布,第一个“完整”的版本则在 1996 年 8 月发布。
即使在那之后,Netscape 团队仍经常调整 JavaScript 的设计。Eich 回忆说,在 1996 年秋天,「Bill Gates一直在抱怨我们一直在改动 JS」。
拥有大约十年的语言设计和编译器开发经验的 Eich,明确受雇于 Netscape 公司,为浏览器开发一门编程语言。最初计划使用的是 Scheme 语言,但之后 Netscape 与 Sun 达成协议,同意使其变得更加“像 Java”。
这是否能解释这些缺陷呢?
可以说,JavaScript 现代版本中的大多数缺陷并不是由于开发时间短造成的:
最初的 Mocha 版本并没有隐式类型转换,但用户要求 Eich 在 1.0 版本中添加这个功能。他对此深感遗憾。
JavaScript 1.0 增加了与 Java 的兼容性。Java 的兼容性也解释了为什么有 ".typeof = object" 这样的情况。
任何 JavaScript API 的缺陷必定是在 Mocha 之后出现的,因为所有 API 的工作都是在 Mocha 之后进行的。Mocha 是一门相当简单的语言!
“所有数字都是浮点数”的问题最初出现在 Mocha 中,但我认为这始终是预期的行为。JavaScript 1.0 手册中提到 HyperTalk 是其主要灵感来源。我从未使用过 HyperTalk,但快速浏览手册让我觉得它的行为是相同的。
我找到一个确凿的证据表明,这十天的开发确实对 JavaScript 造成了伤害:Brendan Eich 没有时间添加垃圾回收器,后来试图添加垃圾回收器时引入了一系列安全漏洞。