天天看點

JavaScript 真的是在 10 天内完成的嗎?

作者:CSDN
JavaScript 真的是在 10 天内完成的嗎?

起初網景公司用了十天時間建立了一個 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 翻譯,未經允許禁止轉載。

作者 | Hillel 編譯 | 蘇宓

出品 | CSDN(ID:CSDNnews)

我曾經聽說 JavaScript 有很多缺點,因為第一個版本隻用了十天來開發。我很好奇這是否屬實,并且是否因為初版開發時間的短暫導緻了這門語言存在一些缺點。

經過一些研究,我可以不太确定地說:事情比較複雜。

JavaScript 的“第一個版本”确實隻花了十天的時間。确切的日期沒有得到确認,但是據 JavaScript 之父 Brendan Eich 回憶,JavaScript 是在 1995 年 5 月 6 日至 15 日之間開發出來的。但起初這隻是一個用于内部示範的最小原型(Mocha)。

JavaScript 真的是在 10 天内完成的嗎?

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 沒有時間添加垃圾回收器,後來試圖添加垃圾回收器時引入了一系列安全漏洞。

JavaScript 真的是在 10 天内完成的嗎?