作者丨Richard Kenneth Eng
譯者丨劉志勇
策劃丨Tina
Python 和 JavaScript 是兩門非常有影響力的程式語言,二者都是我們在打造跨平臺應用時會用到的主流語言。由於 Python 和 JavaScript 都是腳本語言,因此它們有很多共同的特性,都需要解釋器來運行,都是動態類型,都支持自動內存管理,都可以調用 eval()來執行腳本等等腳本語言所共有的特性。在過去這些年來,Python 和 JavaScript 佔據著主導型地位,但有句話說得好,長江後浪推前浪,青出於藍勝於藍。如果將來有一天,Python 和 JavaScript 被打敗趕下榜單,那這個挑戰者會是誰呢?退休的軟體工程師 Richard Kenneth Eng 為我們分享了他的看法,羅列了那些他認為有望打敗 Python 和 JavaScript 的程式語言。
Python 和 JavaScript 是當今最熱門的兩種程式語言。但是,它們不可能永遠位居榜首。最終,它們一定會失寵,就像所有的程式語言一樣。這很可能在未來十年內就會發生。
哪些程式語言有望取代它們呢?下面就是我列出的挑戰者名單。
Dart
由於 Flutter 框架和 Google 的認可,這門語言迅速流行起來。它與使 Ruby 如此流行的驅動力相似:Rails 框架。
如果 Google 的新作業系統 Fuchsia 取得成功的話,Dart 將會成為其中心。
主要優勢:它是一種比 JavaScript 更優秀的程式語言。
主要缺點:它面對來自 JavaScript 及其迷惑的群體的對抗。
曼德勃羅分形圖(Mandelbrot set)示例代碼:
Elixir
Elixir 是 Erlang 的派生語言,具有改進的語法,以及與 Erlang 相同的、驚人的並發性支持。作為一種純函數式語言,它很有可能將這一範式提升為主流。
主要優點:它使函數式編程變得異常簡單。它非常適合併發性。
主要缺點:需要了解潛在的一次性可編程基礎知識,這可能是一項艱巨的任務。
曼德勃羅分形圖(Mandelbrot set)示例代碼:
Golang
另一種 Google 支持的語言 Golang,得益於其閃電般的編譯速度、簡單高效的並發性以及非凡的簡單性,它被證明是贏家。唯一缺少的就是泛型,不過,這個特性已經在路線圖上了。
主要優點:超級簡單,對並發性支持非常好。
主要缺點:它(目前)缺少泛型。
曼德勃羅分形圖(Mandelbrot set)示例代碼:
Julia
Julia 的優勢在於它對數學計算的出色支持。數學友好的語法對數學家來說非常有用。如果有哪種語言可以推翻 Python,那麼 Julia 肯定是一個競爭者。
主要優點:這門語言是為科學家精心設計的。
主要缺點:這門語言面臨數據科學之王 Python 的挑戰。
曼德勃羅分形圖(Mandelbrot set)示例代碼:
Kotlin
Kotlin 是更好的 Java。事實上,它實際上就是 Java 的一個可以立即使用的替代品。Google 已經將其打造成 Android 開發的一流語言。
主要優點:它是一種升級版的 Java。
主要缺點:它是一種非常龐大的語言,即使與 Java 相比也是如此。
曼德勃羅分形圖(Mandelbrot set)示例代碼:
Lua
主要優點:Lua 是一種小巧、簡單、快速、可嵌入、可移植的靈活的語言。
主要缺點:它已經被人們忽視了 26 年,現在會有什麼改變呢?
曼德勃羅分形圖(Mandelbrot set)示例代碼:
Pharo
Pharo 是 Smalltalk 的現代變體,Smalltalk 是一種非常高效的面向對象程式語言。實際上,Smalltalk 是面向對象編程的典範,它幾乎啟發了地球上所有其他面向對象程式語言的靈感。最後,沒有一種語言比 Smalltalk 更適合面向對象編程了。
Pharo 還是世界上最簡單、最優雅的語言之一。你可以在 15 分鐘內學會 Smalltalk 的全部語法!
主要優點:它的工作效率非常高效,就像工作效率提高了 5 倍一樣!
主要缺點:掌握這種語言,需要一種不同的編程思維。但人們往往害怕改變。
分形樹示例代碼:
Rust
Rust 因其內存安全特性:借位檢查器而得到了廣泛的認可。這個特性實際上消除了所有與內存相關的編程錯誤。Rust 保證了編程的安全性。
主要優點:它有助於使軟體更可靠。
主要缺點:這門語言很難學習,而且借位檢查器可能也很難理解。
曼德勃羅分形圖(Mandelbrot set)示例代碼:
TypeScript
TypeScript 是 JavaScript……帶來了好處。它主要是添加了靜態類型。與 JavaScript 的兼容性使它成為前端 Web 開發人員的最愛,因為他們已經了解 JavaScript,而且幾乎不需要改變他們的工作流程。
主要優點:它就是 JavaScript,因此對 JavaScript 開發人員來說沒有什麼太大的變化。
主要缺點:它仍然是 JavaScript,所以仍然繼承了 JavaScript 的所有包袱。
分形樹示例代碼:
WebAssembly
WebAssembly 是一匹黑馬。在未來十年左右的時間裡,它可能會衍生出一系列的語言,這些語言有望最終登上榜首。WebAssembly 只是一個編譯目標,但沒有理由說它不能擴展到 Web 領域以外的地方。至於哪些基於 WebAssembly 的語言可以登上榜首?現在誰也說不準。
作者介紹
Richard Kenneth Eng,博主。Smalltalk 布道師。退休的軟體工程師。《復仇者聯盟》粉絲。本文最初發表 Hacker Noon 博客,經原作者 Richard Kenneth Eng 授權,InfoQ 中文站翻譯並分享。
https://hackernoon.com/programming-languages-of-the-future-b61332kd
活動推薦
開發者對於容器技術的關注熱度越來越高,各家公司也紛紛在容器實踐上下功夫。InfoQ 與華為雲原生團隊共建【容器魔方】技術社群,連接開發者與技術專家,解決容器技術的「疑難雜症」!
點個在看少個 bug