2020 年編程語言盤點展望:Java 老兵不死,Kotlin 蓄勢待發

在進入新的十年之際,各行各業都在進行盤點與展望。SegmentFault 作為開發者社區與科技行業的垂直媒體,一直關注行業的發展與相關動態,近期已陸續為大家整理了各大平臺、社區針對技術領域作出的預測與盤點。

今天,繼續為大家粗譯(文末有原文地址,粗譯僅供大家前期瞭解,建議閱讀英文原文)O'Reilly 發佈的編程語言發展展望 —— 《Where programming languages are headed in 2020》。

該盤點及分析由數位編程專家整理得出,包含了大量他們對於某些經典編程語言以及新興編程語言的思考以及基於行業的分析。

Python

2020 年編程語言盤點展望:Java 老兵不死,Kotlin 蓄勢待發

今年 Python 的最大新聞是,Python 之父吉多·範·羅蘇姆(Guido van Rossum)正式退休,並將 Python 交給了 Python 指導委員會。到目前為止,這次權力轉移並沒有出現“陣痛”,正如《Python Crash Course》的作者 Eric Matthes 所認為的那樣,這是很正常的,因為“ Guido 在很長一段時間裡仍將保持自己在社區中的角色。” 此外,2020 年還將終止對 Python 2.7 的支持,這很可能導致堅持使用 Python 2.7 的人變得很難受。

但不管怎樣,Python 仍然是數據科學的首選語言。

對於 Matthes 而言,Python 令人興奮的一個方面是“來自一個社區的各種有趣且關鍵的項目已經誕生了,而社區已經如此有意識地建立了這麼長時間。” Python 指導委員會成員和 CPython 的核心開發人員 Carol Willing 也慶祝了這些項目,例如 Binder 服務,該服務通過在 Jupyter Notebook 中創建可執行環境來促進可重複的研究,尤其是當它們超出其最初的目標時。

她指出,“活頁夾去年在許多 Python 會議上被廣泛用於教學講習班和教程。” Willing 還向 CircuitPython 和 Mu 項目大聲疾呼,問道:“誰會不喜歡硬件呢,閃爍的 LED、傳感器,以及使用 Mu 的用戶友好的編輯器,這對成年人和孩子來說不都是很棒的選擇?”

Java

2020 年編程語言盤點展望:Java 老兵不死,Kotlin 蓄勢待發

今年對 Java 來說,主要都是好消息。本·埃文斯(Ben Evans)解釋說:“再一次,關於 Java 滅亡的傳言再一次成為了平臺批評者的一廂情願。”

但這並不是一帆風順的。正如我們去年指出的那樣,Java 11 於 2018 年 9 月發佈並帶來了許多新功能,包括許多在使用容器方面具有明顯優勢的重要功能。但是,根據 JetBrains 的調查,這次新版本的推出並沒有帶來廣泛的採用,超過 80% 的開發人員仍在使用 Java 8。

Evans想知道:“這是否意味著人們沒有像我們所知道的那樣在容器中運行Java?還是人們只是不知道在容器中使用 Java 11 的好處?”

儘管採用速度緩慢,但 Java 的六個月發佈節奏一直在不斷髮展-Java 12於2019年3月下降,Java 13於9月問世。根據 Trisha Gee 的說法,它確實開始顯示其價值:

每個版本很小,但是可以預見。儘管它們並不都具有令人興奮的新語言更改,但是您可以看到該語言正在穩步向前發展。

此外,它支持預覽功能的這種想法,我認為我們切換表達式的工作效果非常好 —— 開發人員必須嘗試使用該功能並根據使用感覺來提供真實的反饋,而不是抽象的,概念性的反饋想法。在 Java 13 中,開關表達式的語法進行了少量更改,這是有可能的,因為它是預覽功能,並且沒有固定設置。

當 Oracle 將 Java SE 遷移到基於訂閱的模型時,2019 年收穫了另一個驚喜。但是,正如《Learning Java》的合著者 Marc Loy 指出的那樣,“隨著 OpenJDK 的熱情增加,整個 Java 社區正在面臨一種‘不幸’的變化。”

至於剛剛到來的 2020 年,埃文斯(Evans)建議 2020 年可以持續關注 2019 年的發展趨勢:

我們將如何接近 Valhalla 項目的生產版本?提供模式匹配和代數數據類型(Project Amber)的增量策略是否會奏效?Quarkus 會履行其承諾和早期粉絲的信念嗎?2020 年將成為 Kotlin 會在 Android 領域邁出跨躍性的重要一步嗎?

這是激動人心的時刻,我們正在過渡到新的事物,並且正在發生很多事情。

Kotlin

2020 年編程語言盤點展望:Java 老兵不死,Kotlin 蓄勢待發

谷歌在 2019 年 5 月宣佈 Kotlin 現在是 Android 應用開發人員的首選語言,這表明了該語言已經被廣泛採用。

儘管許多 Android 開發人員尚未完全遷移到 Kotlin,但已經遷移的人都知道它提供的好處。《Head First Kotlin》的作者 Dawn 和 David Griffiths 分享了 Kotlin崛起背後的一些原因:

對於由 IDE 公司創建的語言,Kotlin 擁有良好的工具支持水平也就不足為奇了。用於代碼合同的實驗性 DSL 使開發人員能夠提供有關代碼行為方式的保證。您的功能有副作用嗎?是否可以保證返回非空值?代碼合同允許您做出這些承諾,並且編譯器可以使用它們來放鬆編譯時檢查。

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

希望看到 Kotlin 繼續保持驚人的增長 —— 並且不僅僅是在 Android 中。JetBrains 開發人員倡導團隊負責人 Hadi Hariri 指出 Kotlin / Everywhere 的成功,使得人們可以在 Android,Google Cloud Platform 和多平臺開發中學習 Kotlin 的基本知識和最佳實踐,並用數據舉例證明:

“從 5 月到 11 月,我們已經成功地覆蓋了 86 個國家/地區的 30,000人。KotlinConf 在 2019 年連續三年銷售一空,有 1,700 多名與會者。這尤其表明,開發者對該語言的興趣和採用正在增長。”

Go

2020 年編程語言盤點展望:Java 老兵不死,Kotlin 蓄勢待發

當 Gophers 回顧 2019 年時,他們可能會記得嘗試提案的傳奇故事。Go 開發人員兼作家 Jon Bodner 解釋說:

關於 Go 的最常見的抱怨之一是錯誤處理太冗長。因此,在 6 月初,Go 核心開發人員建議添加一個名為 try 的新內置函數。GitHub 的 issue 現在已打開,以討論此新功能。一個月之內,有將近 800 條評論,其中大多數是負面的。反對這項新功能的人們感到,這種改變使代碼過於“不可思議”,並掩蓋了邏輯流程。審查反饋後,Go 小組將提案標記為已完成,並於 7 月 16 日關閉。

這個過程值得注意的不是功能的失敗,而是,正如 Bodner 所描述的那樣,“過程發生的方式:提出了一個功能,討論受到尊重,但許多人認為更改與 Go 的風格不一致。最後,管理語言的人決定尊重多數意見。這就是開發人員談論社區時的意思。”

2020 年應該使 Go 的 Contracts 規範更加清晰,這就是眾所周知的 Generics 提案。

根據 Bodner 的說法,“ Go 似乎將使用一種與其他語言略有不同的方法來實現泛型,但它很適合 Go 的習慣用法。” 希望它將使 Go 保持其慣用的風格,同時添加開發人員發現在其他語言中有用的功能。

Rust

2020 年編程語言盤點展望:Java 老兵不死,Kotlin 蓄勢待發

我們與《Programming Rust》的合著者 Jim Blandy 進行了溝通,以瞭解他對 Rust 在 2019 年的進步的看法如何變化。

去年,他指出,“ Rust 長期以來一直以一種形式或另一種形式支持異步編程,但是異步函數為這種代碼提供了語法與 Rust 以前的產品相比,這是一個重大改進。”

他對 Rust 語法進行改進的希望是否實現了?是的,最終:布蘭迪解釋說,異步/等待語法直到 2019 年 11 月 7 日發佈的 1.39 版才變得穩定。

“最初,我們希望異步/等待語法可以成為 Rust 2018 版的一部分,但它花了更長的時間才把事情做好。” 不過,他對 2020 年 Rust 對 Rust 的意義寄予了很高的期望:“將異步集成到語言中可以使借閱檢查器瞭解您的操作,因此異步代碼看起來像慣用的 Rust。

Rust 社區也對 WebAssembly 感到興奮,今年 WebAssembly 成為了 C / FFI 的理論替代品,用於需要便攜式,高性能模塊的生態系統。正如 Rust 專家 Nathan Stocks 指出的那樣:“您也可以使用輕型沙箱!” 令 Stocks 印象最深的是“有多少理論已經成功原型化並得到了證明。”

以前,我曾把WebAssembly純粹視為一個編譯目標,以便在瀏覽器中運行非JS語言的代碼。能夠從瀏覽器之外的任何語言使用Web程序集的功能令人不寒而慄。

Swift

2020 年編程語言盤點展望:Java 老兵不死,Kotlin 蓄勢待發

去年 Swift 發生的最大的故事是蘋果公司用於在所有蘋果設備上設計用戶界面的最新框架 SwiftUI 的發佈,以及 TensorFlow 的 Swift 版本。

正如 Timirah James 解釋的那樣,SwiftUI 的聲明性已經贏得了開發人員的廣泛關注,並且已經被視為 UIKit 的未來繼任者。

至於 TensorFlow 的 Swift,Buttfield-Addison 稱之為“ Swift 的根本新用途”。他解釋說:“ Swift 一直是一種出色的應用程序開發和系統編程語言,並且是一種新興的 Web 和後端開發語言,但是現在,藉助 Swift for TensorFlow,它也是一個強大的 ML 框架。” 原因如下:

Swift for TensorFlow 由一個團隊開發,該團隊包括 Swift 的原始創建者 Chris Lattner,並提供(或將在完成後提供)機器學習和數值計算所需的一切。最令人驚訝的是,Swift 的基礎編譯器框架和設計使對具有可自動區分功能的可區分編程的完全一流支持成為可能。

完整的語言可區分編程將使以前不可能的事情成為可能:最好的例子是在構建神經網絡時能夠使用標準編程調試器逐步進行反向傳播並調試派生類。

Swift for TensorFlow 還為 Swift 提供了完整的 Python 支持,使數據科學家可以使用清晰的 Swift 代碼將所需的有用和熟悉的 Python 框架進行混合和匹配。

展望未來,James 和 Buttfield-Addison 都很高興看到 Swift 所採取的新方向,James 指出“ Swift 在移動社區以外的不同社區和堆棧中迅速採用,特別是在無服務器領域,” Buttfield-Addison 呼籲“令人驚歎的網絡開發框架(如 Kitura)以及各種針對特殊領域的令人驚歎的框架……例如 SwiftPlot,它是 Python 中無處不在的 Matplotlib 的 Swift 本機版本。”

未來是什麼樣的?

變化是不可避免的,並且隨著編程語言繼續傾向於針對雲,微服務,大數據和機器學習中的新趨勢進行優化,每種語言及其生態系統將繼續以自己獨特的方式進行適應。

某些語言可能會在 2020 年發佈大版本,比如 C ++ 20 將於今年夏天發佈,Scala 3.0 有望在 2020 年末發佈。但很明顯,即使是最小的更改也可能在程序員的日常生活中引起巨大的波瀾。

原文鏈接:
https://www.oreilly.com/radar/where-programming-languages-are-headed-in-2020/
原文作者:Zan McQuade & Amanda Quinn 編譯:思否@徐九


分享到:


相關文章: