在進入新的十年之際,各行各業都在進行盤點與展望。SegmentFault 做爲開發者社區與科技行業的垂直媒體,一直關注行業的發展與相關動態,近期已陸續爲你們整理了各大平臺、社區針對技術領域做出的預測與盤點。程序員
今天,繼續爲你們粗譯(文末有原文地址,粗譯僅供你們前期瞭解,建議閱讀英文原文)O'Reilly 發佈的編程語言發展展望 —— 《Where programming languages are headed in 2020》。編程
該盤點及分析由數位編程專家整理得出,包含了大量他們對於某些經典編程語言以及新興編程語言的思考以及基於行業的分析。後端
今年 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 來講,主要都是好消息。本·埃文斯(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 領域邁出跨躍性的重要一步嗎?
這是激動人心的時刻,咱們正在過渡到新的事物,而且正在發生不少事情。
谷歌在 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 多名與會者。這尤爲代表,開發者對該語言的興趣和採用正在增加。」
當 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 保持其慣用的風格,同時添加開發人員發如今其餘語言中有用的功能。
咱們與《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 發生的最大的故事是蘋果公司用於在全部蘋果設備上設計用戶界面的最新框架 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...
原文做者:Zan McQuade & Amanda Quinn 編譯:思否@徐九