JavaScript大神:我們能對 JavaScript 做的最好事情就是讓它退役!
?“我們今天可以對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?