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還很醜陋,但是沒辦法,只要瀏覽器存在,它就會存在,直到下一次重大技術變革的發生。
參考資料:
http://www.reddit.com/r/programming/comments/whipmk/the_best_thing_we_can_do_today_to_javascript_is/
http://devclass.com/2022/08/04/retire_javascript_says-json-creator-douglas-crockford/
http://evrone.com/douglas-crockford-interview
- Spring中實現非同步呼叫的方式有哪些?
- 帶引數的全型別 Python 裝飾器
- 整理了幾個Python正則表示式,拿走就能用!
- SOLID:開閉原則Go程式碼實戰
- React中如何引入CSS呢
- 一個新視角:前端框架們都卷錯方向了?
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 手寫程式語言-遞迴函式是如何實現的?
- 一文搞懂模糊匹配:定義、過程與技術
- 新來個阿里 P7,僅花 2 小時,做出一個多執行緒永動任務,看完直接跪了
- Puzzlescript,一種開發H5益智遊戲的引擎
- @Autowired和@Resource到底什麼區別,你明白了嗎?
- CSS transition 小技巧!如何保留 hover 的狀態?
- React如此受歡迎離不開這4個主要原則
- LeCun再炮轟Marcus: 他是心理學家,不是搞AI的
- Java保證執行緒安全的方式有哪些?
- 19個殺手級 JavaScript 單行程式碼,讓你看起來像專業人士
- Python 的"self"引數是什麼?
- 別整一坨 CSS 程式碼了,試試這幾個實用函式
- 再有人問你什麼是MVCC,就把這篇文章發給他!