Java 穩步成長、Kotlin 崛起,2020 年各大編程語言發展趨勢一覽

【編者按】步入 21 世紀 20 年代,我們向編程專家徵求了他們對知名編程語言,以及近些年快速發展的編程語言的看法。

Java 穩步成長、Kotlin 崛起,2020 年各大編程語言發展趨勢一覽

作者 | Zan McQuade,Amanda Quinn

出品 | CSDN(ID:CSDNnews)


Java 穩步成長、Kotlin 崛起,2020 年各大編程語言發展趨勢一覽

Python

今年關於 Python 最大的新聞是其創始人,被戲稱為“仁慈的終生獨裁者”的 Guido van Rossum 宣佈退休了。他將 Python 交到了 Python 指導委員會手中。在《Python編程-從入門到實踐》的作者 Eric Matthes 看來,這是一場無痛的權利移交,不足為奇。他說 “長期以來,Guido 一直保持著自己的姿態以及他在社區中的角色”。2020 年,Python 2.7 也將終止支持,這可能會讓那些堅持使用 Python 2.7 的用戶感到頭疼。與此同時,Python 仍然是數據科學的首選語言。

對於 Matthes 來說,Python 的一個令人興奮的方面是"各種有趣的和重要的項目都來自於這個社區,該社區有意識地向多樣性的方向發展"。Python 指導委員會成員、 CPython 核心開發人員 Carol Willing 也讚揚了這些項目,如 Binder 服務,該服務通過在你的 Jupyter Notebooks 上創建一個可執行的環境,來促進可重複研究,尤其是當它們超出了最初的目標時。她說“ Binder 去年在許多 Python 會議上被廣泛提及。” Willing 還為 CircuitPython 和 Mu 項目大聲疾呼,問道“誰不喜歡硬件啊,閃耀的 LED 燈,傳感器,還有誰不喜歡用 Mu 這個老少皆宜,用戶友好的編輯器啊?”

Java 穩步成長、Kotlin 崛起,2020 年各大編程語言發展趨勢一覽

Java

Java 方面基本都是好消息。“Java Champion” 榮譽獲得者 Ben Evans 說:“再一次,Java 滅亡的謠言被證實了只不過是 Java 平臺詆譭者一廂情願的想法而已。” 但是 Java 的發展也不是一帆風順的。正如我們去年所指出的,2018 年 9 月發佈的 Java 11 帶來了一系列新特性,其中包含了在使用容器方面具有明顯優勢的新特性。然而,這個最新版本並沒有得到廣泛應用,根據 JetBrains 的調查,超過 80% 的開發者仍然在使用 java 8。Evans 想知道,“這是否意味著人們並沒有以我們期待的方式在容器中運行 Java?還是他們根本不知道 11 個在容器方面的優勢? ”

儘管 Java 的應用的數量增速緩慢,2019 年 3 月 Java 12 也隨著 Java 每 6 個月的發佈一個大版本的節奏到來,Java 13 也緊隨其後,在 12 月發佈。[Java Champion 榮譽獲得者 Trisha Gee 表示,它真的開始顯現出了它的價值:

雖然每個版本都很小,但是都是可以預測的。雖然並非所有都是令人興奮的新變化,但是你可以看到語言在穩步地向前發展。此外,它還實現了預覽功能的想法,我認為這在 switch 表達式方面效果非常好ー開發人員有必要去嘗試這個功能,並根據使用的感覺給出真實的反饋,而不是給出對抽象概念的反饋。作為回應,Java 13 對 switch 表達式的語法做了一個小小的改變,因為它是一個預覽特性,改動就會相對更容易。現在,這個新語法已經被計劃放到 JDK 14 的預生產環境中。

2019 年,當 Oracle 將 Java SE 轉換為基於訂閱的模型時,帶來了另一個驚喜。《Learning Java》 第五版的合著者 Marc Loy 指出“Java 社區已經帶著對 OpenJDK 的熱情來處理這個不幸的變化。”

Evans 表示,2020 年將是驗證 2019 年 Java 發展趨勢的一年:

我們離 Valhalla 項目發佈正式版還有多遠?交付模式匹配和代數數據類型(Amber 項目)的增量策略是否能夠獲得回報? 2020 年, Kotlin 能否在 Android 之外再佔用一席之地?這些都是非常令人興奮的時刻。我們正在向新的事物過渡,還有很多事正在發生。

Kotlin

谷歌在 2019 年 5 月宣佈,Kotlin 現已成為 Android 應用程序開發者的首選語言,這提高了 Kotlin 的使用程度。儘管許多 Android 開發者仍然處於轉移到 Kotlin 的過程中,但那些已經轉型的人深知 Kotlin 的優勢。《 Head First Kotlin 》的作者道恩(Dawn)和大衛•格里菲思(David Griffiths) 分享了 Kotlin 崛起的幾個原因:

對於一個由 IDE 公司創建的語言,Kotlin 的工具支持非常棒也不足為奇。用於代碼契約的實驗性 DSL (Domain-Specific Language,領域特定語言)使開發人員能夠為代碼的行為方式提供保證。你的方法有副作用嗎?是否能夠保證方法返回非空值?代碼契約允許您做出這些承諾,編譯器可以使用它們來放鬆編譯時檢查。

不同的 Kotlin 平臺屏障正在被打破。“ expect” / “ actual” 限定符允許開發人員更容易地編寫跨 Java / Native / JS 環境兼容的代碼。對序列化支持意味著現在將 JSON 數據轉換為 Kotlin 對象更加容易,反之亦然。

預計 Kotlin 不僅僅是在 Android 上,還會在其他平臺上繼續保持加快增長。JetBrains 首席佈道師 Hadi Hariri 指出,人們可以在很多社區上學習使用 Kotlin 開發 Android 、 谷歌雲平臺和其他平臺開發的最佳實戰。他證實了:“從 5 月到 11 月,KotlinConf 已經獲得了了 86 個國家的 3萬多人次的訪問量。在 2019 年,KotlinConf 連續三年售罄,有超過 1700 名參加者。這表明,人們對這門語言的興趣和接受程度正在增長。”

Go

當 Go 語言開發者們回顧 2019 年時,他們會記起 try 語句提案的傳奇故事。

開發者兼作家 Jon Bodner 解釋道:

關於 Go 最常見的抱怨之一就是錯誤處理過於冗長。因此,在六月初,Go 核心開發人員提議添加一個新的內置函數,稱為 try。一個 GitHub 的問題引發了這個新特性的討論。一個月之內,就有將近 800 條評論,其中大部分是負面的。那些反對新特性的人認為,這種改變使代碼變得太“神奇” ,模糊了邏輯流。在審查了反饋意見後,Go 團隊在 7 月 16 日將該提案標記為關閉和拒絕。

正如 Bodner 描述的那樣,值得關注的並不是這個功能的否決,而是“這個過程發生的方式:提出了一個新功能,討論得到了充分的尊重,但是很多人認為這個功能和 Go 的風格不一致。最後,掌管語言的人決定尊重大多數人的意見。這就是開發者所謂的社區的意義”。

2020 年 Go 的語言的合約規範,也就是眾所周知的泛型提案將更加清晰。“看起來 Go 將使用一種和其他編程語言不同的方式來實現泛型,但是這種方式非常符合 Go 的編程風格”。Go 將添加對開發人員有用的特性的同時保持自己的風格。

Rust

我們聯繫了《Rust 編程》的合著者 Jim Blandy ,想看看他對 Rust 發展的看法。去年,他指出“ Rust 一直支持通過多種方式實現異步編程,但是通過異步函數為這類代碼提供語法支持,是 Rust 之前的重大改進。” 他對 Rust 語法改進的期盼實現了嗎?是的,實現了。Blandy 解釋道,異步(async)和等待 (await)的語法在 2019 年7 月發佈的 1.39 版本才變得穩定起來。

最初,他希望異步(async)和等待 (await)的語法能夠出現在 Rust 2018 年的版本中,但是好事多磨,當時沒有如常所願。“將異步(async) 整合到語言中,讓借用檢查器理解你的行為,讓異步編碼更符合 Rust 的風格。” Blandy 還指出:Rust 生態系統正在迅速採取行動,利用好該語言的新表達能力。

Rust 社區也對 WebAssembly 感到興奮,它今年在理論上取代了 C/FFI ,成為需要便攜、高性能模塊的生態系統的替代品。正如 Rust 專家 Nathan Stocks 指出的那樣,“你也可以得到輕量級沙箱了! ” 給斯托克留下最深刻印象的是 “這個理論有多少已經原型化並被成功地證明了。”

我以前認為 WebAssembly 只是一個在瀏覽器中運行非 JS 語言代碼的編譯目標。此外任何語言的 web 彙編具有可以在瀏覽器之外運行的能力,令人難以置信。


Java 穩步成長、Kotlin 崛起,2020 年各大編程語言發展趨勢一覽

Swift

去年 Swift 最大的新聞是 SwiftUI 的發佈,這是蘋果為所有蘋果設備設計用戶界面的最新框架,還有 Swift for TensorFlow,這是一個集成了 Google 的 TensorFlow 框架和 Swift 的深度學習和可分類編程的平臺。正如 Timirah James 解釋的那樣,SwiftUI “已經在對開發者產生了很大的吸引力 ,它的聲明性質已經被視為 UIKit 未來的潛在繼承者。” 至於 Swift for TensorFlow,Paris Buttfield-Addison 稱之為“ Swift 的全新用法”。他解釋說,“ Swift 一直是一種很棒的應用程序開發和系統編程語言,也是一種很有前途的 web 和後端開發語言,但現在,隨著 Swift for TensorFlow 的出現,它也成為了一種強大的機器學習框架。” 原因如下:

Swift for TensorFlow 是由一個包含 Swift 的締造者克里斯·拉特納 (Chris Lattner) 在內的團隊開發 ,該團隊為機器學習和數值計算提供 (或者將提供) 所需的一切。最令人驚訝的是,它完全支持使用自動微分語言的可微分式編程,這是由 Swift 的底層編譯器框架和設計實現的。

完整的語言可微分式編程將使以前不可能的事情成為可能:最好的例子是,在構建神經網絡時,能夠使用標準的編程調試器來進行反向傳播和調試導數。

Swift for TensorFlow 也為 Swift 帶來了完整的 Python 支持,允許數據科學家混用和搭配他們熟悉的 Python 框架,以及清晰易懂的 Swift 代碼。


展望未來,James 和 Buttfield-Addison 都很高興看到了 Swift 的新方向,James 指出 “ 除不同的社區和移動設備之外,特別是在 serverless 領域 Swift 得到了快速應用” ,Buttfield-Addison 稱“令人驚歎的 web 開發框架,比如 Kitura,以及各種令人驚歎的小眾框架... 比如 SwiftPlot,它是 Python 非常普及的 Matplotlib 庫的 Swift 原生版本。”

Java 穩步成長、Kotlin 崛起,2020 年各大編程語言發展趨勢一覽

趨勢如何?

變化是不可避免的。隨著編程語言繼續傾向於針對雲,微服務,大數據和機器學習中的新趨勢進行優化,每種語言及其生態系統將繼續以自己獨特的方式去適應這個趨勢。到 2020 年,一些編程語言的重大發布即將到來:C++ 20 將在今年夏天發佈, Scala 3.0 預計將在 2020 年底發佈。但有一點可以確定的是,即使是編程語言的極小改變,也可能給程序的日常生活帶來巨大的變化。

原文鏈接:

https://www.oreilly.com/radar/where-programming-languages-are-headed-in-2020/

本文為CSDN翻譯文章,轉載請註明出處。


分享到:


相關文章: