JavaScript大神:我們能對 JavaScript 做的最好事情就是讓它退役!
?“我們今天可以對JavaScript做的最好的事情就是讓它退役!”
大神總是能說出讓人印象深刻的話,上面這句話來自JSON和JSLint的作者Douglas Crockford。
Douglas還寫過兩本非常知名的書《How JavaScript Works》和《JavaScript語言精粹》,前端的同學應該讀過。
照理說,這么一位JavaScript領域的領軍人物應該是JS的鐵桿,但是他卻說:
“20年前,我是JavaScript的少數(shù)狂熱支持者,嵌套函數(shù)和動態(tài)對象的組合非常出色,我花了10年時間試圖糾正他的缺陷,在ES5上取得了小小的成功。
但是從那時起,人們對進一步擴展JS產(chǎn)生了濃厚的興趣,而不是使其變得更好。
所以JavaScript和其他恐龍語言一樣,已經(jīng)成為進步的阻礙,我們應該關(guān)注下一門語言,它看起來應該更像E而不是JavaScript?!?/p>
JavaScript各種各樣的問題大家應該深有體會了,但是今年Stackoverflow的調(diào)查顯示,使用JavaScript的程序員高達65%,遠超其他語言,雄踞第一。
可能很多人并不知道,JavaScript是Brendan Eich僅僅花了10天突擊出的語言,可以說是幾門語言的混合體:
1.借鑒C的語法
2.借鑒Java的數(shù)據(jù)類型
3.借鑒Scheme語言,將函數(shù)提升到"第一等公民"(first class)的地位;
4.借鑒Self語言,使用基于原型(prototype)的繼承機制。
所以Douglas Crockford說JavaScript是一個披著C語言外衣的Lisp。
Brendan自己也承認,這是一項匆忙的工作,設計有錯誤,有缺陷,尤其是名稱,完全是謊言,和Java一點關(guān)系都沒有。
JavaScript為什么能成長為前端之王呢?
在JavaScript發(fā)展過程中其實遇到過很多挑戰(zhàn):
VBScript:在90年代,這是第一個同時支撐服務器端編程和瀏覽器端編程的語言,可以在服務器端寫ASP網(wǎng)頁,在瀏覽器端弄動態(tài)效果,微軟陣營的程序員很喜歡。
但是它屬于微軟,只能跑在Windows和IE中,沒有其他瀏覽器支持。
而JavaScript早在1996年就開始標準化,1997年ECMAScript第一版就發(fā)布了,標準化后瀏覽器廠商拋棄了后顧之憂,放心使用。
JScript :在IE和網(wǎng)景大戰(zhàn)時,微軟對 Navigator解釋器進行了逆向工程以創(chuàng)建自己的解釋器,稱為JScript。
隨著IE擊敗網(wǎng)景,市場占有率達到95%,JScript也達到巔峰。
但是微軟并沒有把JScript給標準化,隨后IE不思進取,故步自封,被Firefox, Chrome等超越,JScript也變得無人問津。
Sun的Applet和微軟的ActiveX:它們倆由于安全問題、安裝部署問題、用戶體驗問題一直沒能起飛。
Macromedia的Flash :早期極其火爆,技術(shù)漏洞多,不安全,無法支持移動設備,最終敗給了JS+HTML5
微軟的Silverlight:本來是要和Flash競爭的,后來Flash都不行了,所以....
除了技術(shù)缺陷,這些挑戰(zhàn)者技術(shù)都是廠商鎖定的,都需要學習一門新語言,Applet、Flash、Sliverlight還需要在瀏覽器中安裝個“插件”才能運行,這就太不方便了!
反觀JavaScript,一開始就標準化,被所有瀏覽器支持。雖然是披著C語言外衣的Lisp,但是它的C語言外衣極其簡單,任何程序員都可以輕松寫幾行JavaScript,在瀏覽器中搞點兒動態(tài)效果(雖然代碼質(zhì)量可能不咋地)。
2008年,Google給JavaScript添的那把柴火非常關(guān)鍵。
GMail , GMap等復雜Web應用的不斷成功,讓Google看到了Web應用和桌面競爭的可能性,它開發(fā)了V8引擎,驚人地提升了JavaScript的執(zhí)行速度。
2009 年,Ryan Dahl 推出了 Node.js,使 V8 能夠在瀏覽器之外運行,JavaScript一下子把領地拓展到了后端領域。
JavaScript自身似乎并不努力,但是各個廠商必須要尋找一個公共的、不會被某家控制的瀏覽器端編程語言,找來找去,也就是標準化的JavaScript能滿足要求了。
JavaScript真的應該退役了嗎?
精通JavaScript的大神雖然都發(fā)出了呼吁,但是JavaScript無法退役,它還要在多條道路上繼續(xù)狂奔。
在軟件業(yè),最厲害的就是生態(tài)系統(tǒng),這玩意兒一旦建立,很難攻破。
JavaScript經(jīng)過20多年的發(fā)展,生態(tài)已經(jīng)極其完善了。
強如微軟的TypeScript,也只能把自己最后編譯成JavaScript來執(zhí)行,而不能另起爐灶。
瀏覽器廠商之間也會互相競爭,阻撓某一方發(fā)明的更好的新語言。
Stackoverflow聯(lián)合創(chuàng)始人Jeff Atwood曾經(jīng)預言:任何可以用 JavaScript 來寫的應用,最終都將用 JavaScript 來寫。
在某種程度上,他確實是對的,JavaScript現(xiàn)在可以寫網(wǎng)頁,寫App,寫小程序,寫后端,寫桌面程序,甚至IoT應用。
我們都知道JavaScript還很丑陋,但是沒辦法,只要瀏覽器存在,它就會存在,直到下一次重大技術(shù)變革的發(fā)生。
參考資料:
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?