JavaScript大神:我們能對 JavaScript 做的最好事情就是讓它退役!

語言: CN / TW / HK

​“我們今天可以對JavaScript做的最好的事情就是讓它退役!”

大神總是能說出讓人印象深刻的話,上面這句話來自JSON和JSLint的作者Douglas Crockford。

Douglas還寫過兩本非常知名的書《How JavaScript Works》和《JavaScript語言精粹》,前端的同學應該讀過。

照理說,這麼一位JavaScript領域的領軍人物應該是JS的鐵桿,但是他卻說:

“20年前,我是JavaScript的少數狂熱支持者,巢狀函式和動態物件的組合非常出色,我花了10年時間試圖糾正他的缺陷,在ES5上取得了小小的成功。

但是從那時起,人們對進一步擴充套件JS產生了濃厚的興趣,而不是使其變得更好。

所以JavaScript和其他恐龍語言一樣,已經成為進步的阻礙,我們應該關注下一門語言,它看起來應該更像E而不是JavaScript。”

JavaScript各種各樣的問題大家應該深有體會了,但是今年Stackoverflow的調查顯示,使用JavaScript的程式設計師高達65%,遠超其他語言,雄踞第一。

可能很多人並不知道,JavaScript是Brendan Eich僅僅花了10天突擊出的語言,可以說是幾門語言的混合體:

1.借鑑C的語法

2.借鑑Java的資料型別

3.借鑑Scheme語言,將函式提升到"第一等公民"(first class)的地位;

4.借鑑Self語言,使用基於原型(prototype)的繼承機制。

所以Douglas Crockford說JavaScript是一個披著C語言外衣的Lisp。

Brendan自己也承認,這是一項匆忙的工作,設計有錯誤,有缺陷,尤其是名稱,完全是謊言,和Java一點關係都沒有。

JavaScript為什麼能成長為前端之王呢?

在JavaScript發展過程中其實遇到過很多挑戰:

VBScript:在90年代,這是第一個同時支撐伺服器端程式設計和瀏覽器端程式設計的語言,可以在伺服器端寫ASP網頁,在瀏覽器端弄動態效果,微軟陣營的程式設計師很喜歡。

但是它屬於微軟,只能跑在Windows和IE中,沒有其他瀏覽器支援。

而JavaScript早在1996年就開始標準化,1997年ECMAScript第一版就釋出了,標準化後瀏覽器廠商拋棄了後顧之憂,放心使用。

JScript :在IE和網景大戰時,微軟對 Navigator直譯器進行了逆向工程以建立自己的直譯器,稱為JScript。

隨著IE擊敗網景,市場佔有率達到95%,JScript也達到巔峰。

但是微軟並沒有把JScript給標準化,隨後IE不思進取,故步自封,被Firefox, Chrome等超越,JScript也變得無人問津。

Sun的Applet和微軟的ActiveX:它們倆由於安全問題、安裝部署問題、使用者體驗問題一直沒能起飛。

Macromedia的Flash :早期極其火爆,技術漏洞多,不安全,無法支援移動裝置,最終敗給了JS+HTML5

微軟的Silverlight:本來是要和Flash競爭的,後來Flash都不行了,所以....

除了技術缺陷,這些挑戰者技術都是廠商鎖定的,都需要學習一門新語言,Applet、Flash、Sliverlight還需要在瀏覽器中安裝個“外掛”才能執行,這就太不方便了!

反觀JavaScript,一開始就標準化,被所有瀏覽器支援。雖然是披著C語言外衣的Lisp,但是它的C語言外衣極其簡單,任何程式設計師都可以輕鬆寫幾行JavaScript,在瀏覽器中搞點兒動態效果(雖然程式碼質量可能不咋地)。

2008年,Google給JavaScript添的那把柴火非常關鍵。

GMail , GMap等複雜Web應用的不斷成功,讓Google看到了Web應用和桌面競爭的可能性,它開發了V8引擎,驚人地提升了JavaScript的執行速度。

2009 年,Ryan Dahl 推出了 Node.js,使 V8 能夠在瀏覽器之外執行,JavaScript一下子把領地拓展到了後端領域。

JavaScript自身似乎並不努力,但是各個廠商必須要尋找一個公共的、不會被某家控制的瀏覽器端程式語言,找來找去,也就是標準化的JavaScript能滿足要求了。

JavaScript真的應該退役了嗎?

精通JavaScript的大神雖然都發出了呼籲,但是JavaScript無法退役,它還要在多條道路上繼續狂奔。

在軟體業,最厲害的就是生態系統,這玩意兒一旦建立,很難攻破。

JavaScript經過20多年的發展,生態已經極其完善了。

強如微軟的TypeScript,也只能把自己最後編譯成JavaScript來執行,而不能另起爐灶。

瀏覽器廠商之間也會互相競爭,阻撓某一方發明的更好的新語言。

Stackoverflow聯合創始人Jeff Atwood曾經預言:任何可以用 JavaScript 來寫的應用,最終都將用 JavaScript 來寫。

在某種程度上,他確實是對的,JavaScript現在可以寫網頁,寫App,寫小程式,寫後端,寫桌面程式,甚至IoT應用。

我們都知道JavaScript還很醜陋,但是沒辦法,只要瀏覽器存在,它就會存在,直到下一次重大技術變革的發生。

參考資料:

https://www.reddit.com/r/programming/comments/whipmk/the_best_thing_we_can_do_today_to_javascript_is/

https://devclass.com/2022/08/04/retire_javascript_says-json-creator-douglas-crockford/

https://evrone.com/douglas-crockford-interview​