來源:機(jī)器之心
機(jī)器之心報(bào)道
編輯:陳萍、杜偉
JavaScript 這一現(xiàn)今非常流行的編程語言,竟然已經(jīng)到了要談?wù)摗竿艘邸沟牡夭搅藛幔?/p>
JavaScript(簡稱 JS) 是一種具有函數(shù)優(yōu)先的輕量級(jí),解釋型或即時(shí)編譯型的編程語言。雖然它是作為開發(fā) Web 頁面的腳本語言而出名,但是它也被用到了很多非瀏覽器環(huán)境中。
1995 年由 Netscape 公司的 Brendan Eich,在網(wǎng)景導(dǎo)航者瀏覽器上首次設(shè)計(jì)實(shí)現(xiàn)而成。JavaScript 與 Java 在名字或語法上都有很多相似性,但這兩門編程語言從設(shè)計(jì)之初就有很大的不同。在語法結(jié)構(gòu)上它又與 C 語言有很多相似。JavaScript 中包含 Java 的最初意圖是:當(dāng)時(shí) ( 1993 年 ) Java 熱火朝天,JavaScript 為迅速壯大自己而令其名字中包含 Java。
從誕生之日到現(xiàn)在,JavaScript 已然成為一門明星語言,使用人數(shù)不斷擴(kuò)大。
根據(jù)今年早些時(shí)候 StackOverflow 的一項(xiàng)調(diào)查結(jié)果顯示:超過 65% 的開發(fā)人員使用 JavaScript,遠(yuǎn)遠(yuǎn)超過排在第二位的 Python(忽略 HTML、CSS 和 SQL 這些非通用語言)。
根據(jù)調(diào)查,JavaScript 是世界上最受歡迎的編程語言
但 JSON 之父 Douglas Crockford 卻在最近的一次采訪中表示,JavaScript 已經(jīng)成為了進(jìn)步的障礙:
「我們現(xiàn)在能做的最好的事情就是讓 JavaScript 退役。20 年前,我是少數(shù)幾個(gè) JavaScript 的倡導(dǎo)者之一。JavaScript 將嵌套函數(shù)和動(dòng)態(tài)對(duì)象拼湊在一起非常出色。我花了十年的時(shí)間試圖糾正它的缺陷,我在 ES5 上取得了小小的成功。但從那以后,人們對(duì)進(jìn)一步擴(kuò)大該語言產(chǎn)生了濃厚的興趣,而不是改進(jìn)它。因此,就像其他化石語言一樣,JavaScript 就成為了進(jìn)步的障礙。我們應(yīng)該專注于下一種語言,它應(yīng)該更像 E 語言而不是 JavaScript。」
不過 Crockford 承認(rèn)替換 JavaScript 存在兩個(gè)困難。首先,我們還沒有另一種語言來替換 JavaScript。其次,我們需要所有的瀏覽器制造商都放棄 JavaScript 采用新語言,同時(shí)用一個(gè)設(shè)計(jì)良好的界面取代 DOM。而這兩項(xiàng),都還遠(yuǎn)未達(dá)到。
前面我們提到,JavaScript 主要?jiǎng)?chuàng)造者是 Brendan Eich。但他在 1995 年創(chuàng)造這種語言時(shí),只用了 10 天時(shí)間。2018 年,Eich 在 dot.JS 大會(huì)上曾經(jīng)抱怨:當(dāng)年 5 月我苦熬 10 天,都沒多少休息,終于完成這門語言。2019 年,Eich 告訴美國計(jì)算機(jī)科學(xué)家和學(xué)者 Charles Severance,表示自己開始轉(zhuǎn)向另一種 HTML 編程語言,網(wǎng)頁設(shè)計(jì)師和程序員可以使用,直接嵌入到網(wǎng)頁中,不像 Java 那樣是一種專業(yè)語言,你可以運(yùn)行帶有類型聲明的真實(shí)代碼,但你必須以編譯的方式編寫。很多人被 JavaScript 的名字迷惑了,但在語法上,它與 Java 沒多大關(guān)系,而是與 C 語言關(guān)系密切。
Eich 稱這項(xiàng)工作是「一項(xiàng)匆忙的工作」,但他也表示「我知道會(huì)有錯(cuò)誤,會(huì)有缺陷,所以我把它做成了一種具有可塑性的語言。這使 Web 開發(fā)人員能夠使其成為他們想要的樣子。」
Crockford 也指出,隨著性能的提高,JavaScript 已經(jīng)變得非常復(fù)雜,今天一個(gè)典型的應(yīng)用程序包括使用 WebPack、Rollup 或其他綁定器的構(gòu)建過程,已經(jīng)與 Eich 最初的概念相去甚遠(yuǎn)。
一位開發(fā)人員在最近一次關(guān)于 Hacker News 的討論中承認(rèn)道:「JavaScript 在短短幾年內(nèi)迅速流行起來,但其生態(tài)系統(tǒng)非常復(fù)雜。這一直以來都是個(gè)大笑話,即便在全職 JS 開發(fā)者中也顯得如此瘋狂,我們沒人能跟上。」
Eich 10 天匆忙趕出來的一門語言,JSON 之父 Douglas Crockford 說要放棄它,到底如何做呢?我們看看網(wǎng)友是如何評(píng)價(jià)的。
網(wǎng)友的贊同與反駁
對(duì)于 Douglas Crockford 的觀點(diǎn),網(wǎng)友紛紛表達(dá)了自己的看法,其中有部分贊同,更有反對(duì)。
一位推特網(wǎng)友表示,「我絕對(duì)同意他的一點(diǎn)是需要放棄 DOM,它就是垃圾。DOM 是 JavaScript 運(yùn)行慢的罪魁禍?zhǔn)住S 是不太美觀,但很實(shí)用。所以,我不介意。再次強(qiáng)調(diào),DOM 才是徹頭徹尾的垃圾。」
圖源:@Kris Spookspook
不過,更多網(wǎng)友對(duì) Crockford 的一些說法進(jìn)行了反駁。
有人表示雖然自己討厭 JavaScript,但 Crockford 嘴上說要放棄 JavaScript,但又沒有替代語言。如果你認(rèn)為有些東西不好,最好給出更好的選擇。
還有人表示不確定 Crockford 說的其他化石語言指的哪些,更不確定他說的進(jìn)步又是什么。但是,僅僅為了進(jìn)步而進(jìn)步并不是什么值得追求的事情,讓事情保持正常的運(yùn)轉(zhuǎn)同樣重要。
其實(shí),針對(duì) JavaScript 的一些缺點(diǎn),我們可以找到很好的解決方案。JavaScript 不夠好?用 TypeScript;運(yùn)行時(shí)太慢?用 Bun;工具太麻煩?用 Bun 或 Vite。其他語言也很好,但對(duì)于使用它構(gòu)建各種東西,并沒有比 JS/TS 更好的 DX 設(shè)置。
JSON 之父 Douglas Crockford
Douglas Crockford 是 Web 開發(fā)領(lǐng)域最知名的技術(shù)權(quán)威之一、被 JavaScript 之父 Brendan Eich 稱為 JavaScript 的大宗師(Yoda),擔(dān)任過 Yahoo! 資深 JavaScript 架構(gòu)師和 PayPal 高級(jí) JavaScript 架構(gòu)師。
Crockford 是暢銷書《How JavaScript Works》和名著《JavaScript: The Good Parts》的作者,并在廣播、學(xué)習(xí)系統(tǒng)、小型企業(yè)系統(tǒng)、辦公自動(dòng)化、游戲、互動(dòng)音樂、多媒體、基于位置的娛樂、社交系統(tǒng)和編程語言領(lǐng)域工作。
Crockford 還是編程語言 Tilton 的發(fā)明者,并創(chuàng)建了世界上最受歡迎的數(shù)據(jù)格式—— JSON 數(shù)據(jù)交換格式。