編碼的世界 / 優質文選 / 文明

編程語言的好壞,沒那麼重要?


2022年7月25日
-   


作者 | Aleksey Kladov
譯者 | 彎月,責編 | 楊碧玉
頭圖 | CSDN 下載自視覺中國
出品 | CSDN(ID:CSDNnews)
以下為譯文:
前言
這篇文章表達了我對編程語言流行度的看法。我認為,沒有人知道為什麼某些語言受歡迎,而另一些不受歡迎,因此,我也可以在這一片紛爭中表達自己的想法。當然,這完全出自我個人的猜測,並沒有任何數據支持我的研究。
我的中心論點是,實際使用何種編程語言(語法、語義、範例)並不重要。重要的是運行時的特性,簡單來說,就是正在運行中的進程的內存是什麼樣的?
首先,我們來觀察一個現象。許多軟件都是用 vimscript 和 emacs lisp 編寫的(比如我個人就離不開 magit )。客觀地說,這些語言都不怎麼樣。即便沒有不那麼小眾的語言也是如此,比如 PHP 和 JavaScript 。盡管 JavaScript 在某些方面很出色(這是第一個支持 lambda 的主流語言!),但肯定不難想象它本來可建立一個更好的版本(例如,不存在兩個不同的 null 值)。
這是一條通用規則:只要你的語言是圖靈完備的,並且具有構建抽象的能力,人們就願意使用。當然,有些語言的生產力比較高,而有些語言則比較低,但是總的來說,選用函數式編程還是面向對象編程,靜態類型還是動態類型,似乎並沒有太大關系。我們花一些時間總是能夠克服這種語言的難點。
相反,克服語言運行時的難點基本是不可能的。如果要擴展 vim ,則必須使用 vimscript 。如果你希望代碼在瀏覽器中運行,那麼 JavaScript 仍然是最好的選擇。需要將代碼嵌入到某個地方?那麼可能沒辦法使用 GC 。
這兩個觀察結果可以推出如下假設
如果編程語言帶來創新的運行時,或具有運行時排他性,則通常它們都會變得很受歡迎。語言本身的質量是次要的。 下面,我們來看幾個能夠通過這種理論“解釋”的例子。

C語言 C 語言的運行時非常優秀,值得一提的原因有兩個。首先,它是第一個運行時足夠快的高級語言。我們可以使用 C 編寫 OS 內核,在這之前為了提高性能只能使用匯編。其次,C 是 Unix 的語言。(我會將 C 歸類為“易於改進”的語言類別。以 Null 結尾的字符串是一個糟糕的設計。)

JavaScript 瀏覽器中只能使用 JavaScript ,長期以來一直如此。

Java 我認為對於我的理論來說,Java 是一個非常有意思的例子。關於 Java 流行的常見解釋是“ Sun 給力的營銷”,以及隨後大學的課程中引入了 Java 。但對我來說,這似乎沒有說服力。我們來看一下90年代流行的編程語言(我不確定此處的百分比和相對排名,但是對我來說,大致是正確的):

在這個列表中, Java 是唯一的非動態跨平台內存安全語言。也就是說,Java既是內存安全的(沒有易於出錯的手動內存管理),又可以合理有效地實現(字段訪問是一條加載指令,而不是通過字典查找進行)。不論語言本身如何,似乎這都是吸引人們選擇 Java 的充分理由。

Go 關於為了簡單性而犧牲其他一切是好是壞,這一點仍然有爭議,但是靜態鏈接的零依賴二進制文件無疑是 Go 在開發運維領域流行的主要原因。從某種意義上講,當你不再需要單獨安裝 JVM 時, Go 是“內存安全且相當快”的 Java 運行時的升級。 
我的假設自然無法解釋所有情況。一種是腳本語言。一個支持 eval 且能夠很容易地連接到 C 擴展的高度動態運行時確實與眾不同,因此這種語言理應是一種流行的腳本語言。但是很奇怪為什麼流行的是 Python 和 PHP ,而不是 Ruby 和 Perl 。
另一種是語言的發展:C++ 和 TypeScript 並沒有在運行時方面進行創新,但它們仍然是主流的語言。

預測 最後,讓我們使用該理論做出一些大膽的預測。
首先,我預測 Rust 將會成為主流語言。我來解釋一下:首先,Rust 的運行時等效於 C 和 C++,因此我的理論應該會預測它不會成為主流。但是我要說的是,內存安全是運行時屬性,盡管 Rust 是通過語言機制來實現的。
其次,我預測 Julia 會越來越受歡迎。它在運行時方面非常獨特,它堅決地拒絕了 Ousterhout 的二分法,並堅持認使用JIT來編譯高動態語言,在運行時提供快速的數值運算代碼。
第三,如果 Dart 出現增長,我不會感到驚訝。一方面,它與 Go 和 Java 大致相同,並具有內存安全的運行時,固定的對象布局和普遍的動態分配。而且運行時的實現質量令人震驚:它具有一流的 JIT 、 AOT 和 JS 編譯器。此外,它還具有一流的熱重載支持。雖然沒有什麼是突破,但是這種組合令人印象深刻。
第四,我預測 Nim 、 Crystal 和 Zig (語言設計非常不錯)不會流行
第五,我預測由於平台的排他性, Swift 將在蘋果硬件上非常流行,但是盡管在語言設計上非常創新( Swift 中的泛型與 Go 相反),但在蘋果之外不會有太大的增長。 
原文:https://matklad.github.io//2020/09/13/your-language-sucks.html
本文為 CSDN 翻譯,轉載請注明來源出處。 

更多精彩推薦
☞阿裏動物園再添新丁,小蠻驢搞定物流最後三公裏!
☞微軟水下數據中心“浮出水面”、GitHub代碼保存在北極,數據黑科技貯藏方式大曝光!
☞微軟全球 AKS 女掌門人,這樣擊破雲原生“怪圈”!
☞阿裏動物園再添新丁,小蠻驢搞定物流最後三公裏
☞中國移動雲智融合峰會 與您相約攬勝九天
☞我投資比特幣的3個原因

點分享點點贊點在看

熱門文章