JavaScript是怎麼誕生的

程式碼灣發表於2018-05-16


關於 JavaScript 仍然存在很多爭議,大多是因為它的名稱,人們以為它是繼承於 Java 的一門指令碼語言。那麼,JavaScript 到底是什麼呢?它是一門指令碼語言還是程式語言?為何每個人都在用它?它是如何優於或差於其他程式語言的?

讀完這篇部落格,你將能很好的理解 JavaScript 的由來,以及在技術討論中不會感覺搭不上話。

曾幾何時,網際網路還剛剛起步,那個時候急需瀏覽器訪問網頁,而在這方面的 Mosaic 是領頭羊。同時 Mosaic 也是第一個能在內嵌文字中顯示圖片(而不是在新視窗中顯示圖片)的瀏覽器,這在那時是相當牛逼,相當酷的!與此同時,幾個傢伙想想為任天堂建立一個線上遊戲網路,並從 Mosaic 公司挖了幾位工程師,但該工程最終延期。樂觀的他們決定以正確方式使用資源,那就是構建最好的網頁瀏覽器!他們將該公司命名為 Mosiac Communication,產品於 1994 年釋出,命名為 Mosaic Netscape。他們從 NCSA Mosaic 挖了大量員工後,將公司和產品重新命名,但不久由於版權問題,他們開始叫做 Netscape Navigator,但內部依然叫做 Mozilla —— Mosiac Killer。

Netscape Navigator 取得了巨大成功,在釋出的 4 個月裡佔據了 75% 的瀏覽器市場,短期內成為了預設瀏覽器。好景不長,很快他們面臨巨頭公司微軟的競爭,所以他們選擇和另一家巨頭公司 Sun 合作!但事情並沒有想預期中一樣,他們創造了一種 HTML 的膠水指令碼語言。這種語言可直接在網頁中編寫,易於 Web 設計師和兼職程式設計師使用。這種語言以 Mocha 的名稱為開發,官方稱作 LiveScript,但於 1995 年 12 月被重新命名為 JavaScript。通過現有熱門語言的名稱可以帶來一定威望,但同時也讓人對名稱感到困惑。

在 Netscape Navigator(NN) 和 Internet Explorer (IE) 之間持續了相當長時間的瀏覽器大戰。1997 年,在 IE4 瀏覽器釋出且微軟在舊金山開了一個通宵晚會後,微軟這些傢伙們在網景公司前的草坪上設定了一個 10 英尺高的字母“e”的 logo,上面附簽著:”From the IE team … We Love You“,第二天一早,網景公司的人都到了辦公室後,他們看到了這個巨大的 logo 並且他們毫不猶豫的把它打倒在地並且在上面放置了 Mozilla 基金會的恐龍吉祥物,上面寫著帶有當時市場佔有率的標誌 “Netscape 72, Microsoft 18”。但從那開始,網景公司開始走下坡路因為他們的收入全部來自於瀏覽器,而微軟開始提供免費的 IE 瀏覽器。此外,微軟 Windows 系統在桌面作業系統上的市場份額超過 90%。微軟將 IE 瀏覽器和 Windows 作業系統進行捆綁銷售,因為使用者把 IE 瀏覽器作為預設瀏覽器,所以微軟很容易的佔據了市場份額。網景公司無法做到這點以至於最終只能出售且 IE 瀏覽器以 96% 的份額統治了網際網路。

JavaScript 在 ECMA International 的手中安全地存活了下來,並將其寫進了標準規範中。微軟也想要一個類似的 IE 指令碼,但不希望與 Sun Microsystems 就商標問題進行交易,因此他們稱其實現為 JScript。因此開發者不得不努力讓他們的網站在所有瀏覽器中都能正常執行,而 IE 在當時被廣泛使用,所以 JavaScript 開始成為跨平臺和標準驅動的網路的障礙之一。隨著時間的推移,很明顯微軟無意在 Internet Explorer 中合作或實現適當的 JavaScript。後來,雅虎、微軟、谷歌和其他一些組織聚在一起,組成了他們自己的小組委員會,設計了一個不那麼雄心勃勃的 ECMAScript 更新(和 JavaScript 一樣)。有一天,一個叫 James 的人創造了“Ajax”這個術語,它可以讓你在後臺載入資料,而不必重新載入整個頁面。這是網際網路歷史上的一場革命,從那時起,每個人都對 JavaScript 瘋狂。這使得綜合框架和庫的急劇增加,改進了 JavaScript 程式設計實踐,以及在 Web 瀏覽器之外增加了 JavaScript 的使用。從那以後,JavaScript 一直在火熱發展著。

幾年後一個名叫 Ryan 的高手把 JavaScript 提升了一個層次。通常只能用於客戶端指令碼的 JavaScript 現在也可用於編寫伺服器端程式碼。不可思議!這就是 nodejs 的誕生,幾乎在同一時間谷歌推出了基於 他們創造的 V8 引擎的 Chromium 專案,V8 不同於以往傳統的技術,例如解釋位元組碼或將整個程式編譯為機器碼並從檔案系統執行。而是在執行 JavaScript 程式碼前將程式碼編譯為機器碼。這就產生了一個全新的開發者社群,他們現在可以只需要使用 JavaScript 就可以完成全棧開發。

有些人取笑 JavsScript 全棧開發人員這個說法,認為 JavsScript 不像其他語言那樣複雜。有些人還有偏見,但是當 TypeScript 引入了 OOP(物件導向)程式設計後,其他語言能做而 JavaScript 不能做到的已經很少了。JavaScript 歷史是偉大的,前途是光明的。如果這引發了你學習 JavaScript 的興趣,你將擴大你對世界的認知。

相關文章