「老而不死」的三種編程語言
- 2019 年 11 月 20 日
- 筆記
導讀:在軟件世界中,鐵打的二進制,流水的語言。從計算機誕生至今,不知誕生了多少門編程語言。譯者查了一下 Wikipedia,好傢夥,名單上足足有幾百種!但並不是所有的語言都能長期佔據 Top 10。
今天我們來討論長期霸榜的三種編程語言:Java、JavaScript 和 C,因為經常有人們說這三種語言已經死了,即使沒死也是快要死了。然而事實究竟如何呢?實際上,這幾門語言就像胡楊一樣,特別是 C 語言,簡直就是編程語言界的胡楊:胡楊生而千年不死,死而千年不倒,倒而千年不腐……
作者:Richard Gall
譯者:Sambodhi
來源:AI前線(ID:ai-front)

最近,我仔細研究了當某種編程語言、工具或趨勢被宣布「死亡」時,它到底意味着什麼。我認為,從技術行業的不同方面來談論死亡,似乎既是個人作為開發者的身份和價值觀的信號,也是對特定事物現實的準確描述。
為了關注這些爭論和對話在實踐中是如何發揮作用的,我決定研究一下三種編程語言,每一種語言都被人們描述為已經死亡或即將死亡。我的發現可能並不會讓你感到驚訝,但它仍然突出了這一點:即個人或社區對一種語言的不同意見反映了他們作為軟件工程師的需求與挑戰。
01 Java 死了嗎?
就生存、繁榮或死亡而言,最大的爭論之一就是 Java。之所以如此,原因有很多。最大的一個簡單事實就是它被廣泛使用。由於有如此多的開發人員出於各種各樣的原因使用這種語言,因此在開發者社區發現如此多樣化的意見,也就不足為奇了。
另一個原因就是,Java 作為一種編程語言,已經非常成熟。無論它是在衰退還是在消亡,都仍然是一個備受爭議的話題,但肯定不能說它正以任何顯著的速度出現或增長。
Java 現在是行業主流的一部分。你可能會認為,它有望能支撐下去。但是,當你考慮到這是一個不僅僅包含變革和創新的行業,而是一個依賴於其價值的行業時,你就會開始發現 Java 佔據有點奇怪的空間已經有一段時間了。
1. 為什麼人們認為 Java 已經死了?
這幾年來,Java 一直正在衰落。如果你去 看一下 TIOBE 指數,就會發現,在這十年的中後期,它已經下降了幾個百分點。例如,從 2016 年 5 月到 2017 年 5 月,該語言下降了 6%——這表明它正在被其他編程語言所取代。
Java 衰落的另一個原因是 Kotlin 的崛起。儘管長期以來,Java 一直是 Android 開發的定義語言,但近年來,隨着 Kotlin 被更廣泛地採用,它的地位受到了衝擊。正如 Medium 的 2018 年的這篇博文 所指出的那樣:用 Java 開始一個新的 Android 項目並不一定是個好主意。
Java 的威脅,不僅來自 Kotlin,也來自 Scala。Scala 是另一種基於 JVM(Java 虛擬機)的編程語言。它既支持面向對象編程,也支持函數式編程,與 Java 相比,它具有許多性能優勢,並且被廣泛用於從機器學習到應用程序開發的各種用例中。

2. Java 沒有死掉的原因
儘管 TIOBE 指數顯示,Java 是一門正在衰落的語言,但它仍然穩居榜首。從 2016 年到 2017 年間,這個數字可能會大幅下降,但最近下降速度有所放緩:在 2018 年 10 月到 2019 年 10 月之間,它只下降了 0.92%。
從這個角度來看,那些認為 Java 「已死」或「快死了」的觀點,實在很奇怪。從事實上來說,Java 是地球上使用最廣泛的編程語言。當你考慮到所有其他一切因素時,龐大的社區意味着更多的支持,一個由框架、庫和其他工具組成的廣泛生態系統(注意,Spring Boot 的增長是對微服務革命的回應)。
所以,儘管 Java 的年齡看起來像是反對它的一個標誌,但這也是為什麼它仍然有很多生命力的原因。
在更基本的層面上,Java 是無處不在的,它被廣泛應用於各種應用程序中。只要 Java 開發的應用程序還在使用,那麼,我們就可以說,Java 仍然是有生命力的。這也意味着,Java 開發人員的需求還會持續很長一段時間。
3. 結論:Java 究竟是死的還是活的?
Java 是非常活躍的,而且活得很好。但也有一點需要注意的是,歸根結底,它並不是一種能夠幫助你以創造性或創新的方式來解決問題的語言。它可以讓你構建事物並啟動項目,但它可以說是一個堅實的基礎,你需要在這個基礎上積累更多的專業知識,才能成為一名真正成功的工程師。

02 JavaScript 死了嗎?
儘管 Java 可能是世界上使用最廣泛的編程語言,但 JavaScript 是另一種無處不在的語言,它引發了各種各樣的觀點和爭論。
其中原因之一是,有些人非常討厭 JavaScript。人們對 Java 的一致看法是,它很好;但對 JavaScript 來說,情況就不是那麼穩定了。
這很大程度上是因為 JavaScript 的發展。在很長一段時間裏,它在 Web 開發領域一直處於 PHP 之後的位置,因為它是如此的不穩定,於是開發人員對它的態度有些輕蔑,好像它不是一種「真正的語言」一樣。
不過,隨着時間的推移,這種情況發生了變化,這在很大程度上要歸功於 HTML5 和改進的 ES6 標準,但仍然有許多怪癖是開發人員所不喜歡的。特別是,如果你已習慣 Java 或 C 的話,那麼 JavaScript 就不是什麼好對付的東西。與那些語言不同,JavaScript 是一種解釋性的編程語言,而不是編譯的編程語言。
那麼,為什麼人們會認為 JavaScript 已經死了呢?
1. 為什麼人們認為 JavaScript 已經死了?
人們為什麼會認為 JavaScript 已經死了,這裏面有很多原因。一方面,模板、開箱即用的 CMS 和電子商務解決方案的興起,意味着使用 JavaScript 進行「傳統」的 Web 開發將變得不那麼重要。從本質上講,這種想法認為,進入的門檻更低,這意味着使用 JavaScript 進行 Web 開發的人將會更少。
另一方面,人們將 WebAssembly 的出現視為敲響了 JavaScript 的喪鐘。WebAssembly(簡稱 Wasm)是「基於堆棧的虛擬機的二進制指令格式」(來自 該項目的網站),這意味着代碼可以被編譯成可由瀏覽器讀取的二進制格式。這意味着你可以將高級語言(如 Rust 等)帶到瀏覽器中。
那麼,在某種程度上,你可能會認為 WebAssembly 將導致語言的發展,而這些語言在目前看來是非常小眾的。

2. JavaScript 沒有死掉的原因
首先,讓我們反駁上面的觀點:首先,開箱即用的解決方案永遠也不會取代 Web 開發人員。有人需要構建這些產品,即使組織選擇使用它們,JavaScript 仍然是定製和重塑專用解決方案的語言,它非常有價值。
雖然開始一個 Web 項目並運行的門檻可能越來越低,但它肯定不會扼殺 JavaScript。你甚至可能會爭辯道,隨着人們開始學習網絡的一些基本元素,網絡資源也在不斷增長。
關於 WebAssembly 的問題是:這對 JavaScript 來說,是一個稍微嚴重的威脅,但重要的是要記住,WebAssembly 從來就不是為了簡單地模仿現有的 JavaScript 用例而設計的。正如有文章解釋的那樣:
……它們解決了兩個不同的問題:JavaScript 為 Web 和 DOM 添加了基本的交互性;而 WebAssembly 增加的是在 Web 上擁有健壯的圖形引擎的能力。WebAssembly 並不能解決與 JavaScript 所面臨的相同問題,因為它不了解 DOM。除非解決這一問題,否則它不可能取代 JavaScript。
WebAssembly 甚至可以重新喚起人們對 JavaScript 的信心。通過解決許多開發人員抱怨的一些問題,這意味着,這門語言可以用於更適合用它來解決的問題。
但除此之外,還要有很多其他的原因,使得 JavaScript 離「死亡」還早。React 越來越受歡迎,Node.js 也是如此,尤其是 Node.js 影響很大,因為它將 JavaScript 的功能從瀏覽器擴展到了服務器。
3. 結論:JavaScript 究竟是死的還是活的?
無論人們多麼討厭 JavaScript,它仍然非常活躍,活得好好的。雖然有如此廣泛的工具生態系統,它的使用方式可能也會改變,但這種語言將會留下來,並且有着光明的未來。

03 C 死了嗎?
C 是最古老的編程語言之一(它即將迎來 50 歲生日)。C 是這樣一種語言,幫助我們構建了今天所知的軟件世界的基礎,包括幾乎所有的操作系統。但是,儘管它是技術版圖的基本組成部分,但仍然有人抱怨說,C 已經不能勝任這項工作了……
1. 為什麼人們認為 C 已經死了?
如果你想了解關於人們對 C 的不同意見,你可能比 TechCrunch 上的這篇文章 做得更糟。工程師 Jon Evans 解釋道,「C 已經不再適合 C 所構建的這個世界了。」
C 已經變成一個怪物。它為用戶提供了太多的火炮,結果是他們搬起石頭砸自己的腳。豐富的經驗告訴我們,要編寫大量沒有安全漏洞的 C 代碼是非常困難的,幾乎是不可能的。
安全方面的擔憂也反映在其他地方,一位作者認為:
沒有人在創造新的不安全語言。不能說這是因為 C 和 C++ 是完美的,這不合理;即使是最堅定的擁躉也知道,它們也有很多缺點。人們之所以不去創造新的不安全語言,是因為沒有這方面的需求。未來是安全的語言。
而 Rust 的興起增加了這些擔憂:有些人認為,對於更現代、更安全和更易用的底層系統編程來說,Rust 可能是 C 和 C++ 的替代品。

2. C 沒有死掉的原因
也許,C 之所以沒有死掉的最明顯的原因是,它對我們今天所用的如此之多的軟件來說,都是不可或缺的。我們談論的不僅僅是標準的遺留系統;C 語言在操作系統內部,允許我們與軟件和機器進行交互。
經常有人反對 C 語言的一個常見理由是,Web 正在接管一切,就好像軟件總體上正在提升抽象級別,這使得機器級別的語言幾乎是多餘的一樣。除了那種愚蠢的說法(即網絡是建立在什麼基礎之上)之外,隨着物聯網和嵌入式計算的快速發展,這隻會讓 C 語言變得更加重要。
讓我們再看看 TIOBE 指數:C 排在第二位,與 2018 年 10 月的位置相同。就像 Java 一樣,儘管謠言滿天飛,它還是保持着自己的地位。此外,與 Java 不同的是,C 語言的評級實際上在過去一年中有所上升。可以肯定是,這一數字並不大,只有 0.82%,但它可靠的表現表明,它離死亡還很遠。
3. 結論:C 究竟是死的還是活的?
C 活得很滋潤呢。當然,它已經很老了,但它隱藏在我們現有軟件的基礎設施中實在太多了,以至於人們不能簡單地將其丟棄。
這並不是說 C 語言沒有缺陷。從安全性和可訪問性的角度來看,我們可能會看到像 Rust 這樣的語言逐漸流行開來,以應對 C 語言帶來的一些挑戰。
但同樣需要考慮的一點是,對於那些希望深入了解編程的人來說,C 語言到底有多重要。即使它不一定具有廣泛的用例,但它可以讓開發人員和工程師深入了解代碼在軟件棧的不同級別上是如何工作的,這意味着 C 語言將永遠是一種需要關注的語言。

04 總結
從所有這些得出的明顯結論是,人們不應該再如此固執己見。但我並不認為這樣是正確的做法:人們應該繼續堅持己見,保持爭論。
勢利和排斥是沒有立足之地的,但任何人如果對某物的價值有看法的話,他當然有表達出來的自由。它可以幫助其他人以一種不可能通過文檔或更典型的學習內容的方式來理解語言。重要的是,我們要以批判的眼光來看待觀點:這個人想表達的是什麼?他們的背景是什麼?他們想幹什麼?
畢竟,有些事情遠比爭論什麼東西是死還是活重要得多:構建偉大的軟件,我們可以為成為其中一員而自豪。
關於作者:Richard Gall,Packt Hub 的聯合編輯。對政治、技術文化以及軟件和商業如何相互改變感興趣。
原文鏈接:
3 programming languages some people think are dead but definitely aren』t
有話要說?
Q: 這3種語言你還在用嗎?
歡迎留言與大家分享