2020年編程語言將如何發展,是不少人關心的問題。下面看看六大熱門編程語言的現狀與將來發展。程序員
Python瞭解更多編程
今年 Python 最大的新聞是, Guido van Rossum 退休了,將 Python 交給了 Python 指導委員會。到目前爲止,權力轉移還算順利,正如《Python 編程從入門到實踐》的做者 Eric Matthes 所認爲的那樣,這並不足覺得奇,由於Guido 一直都能在本身和在社區中的角色之間保持平衡。2020 年也將終止對Python 2.7 的支持,這極可能會讓其反對者感到頭疼。同時, Python 仍然是數據科學的首選語言。網絡
Python另外一個關注點就在於,來自社區的各類有趣且關鍵的項目已經誕生了, Python指導委員會成員和CPython的核心開發人員Carol Willing也慶祝了這些項目,例如Binder服務,該服務經過在Jupyter Notebook中建立可執行環境來促進可重複的研究。架構
Java併發
2018 年 9 月發佈的Java 11 帶來了大量的新特性,其中許多特性爲容器的使用提供了顯著且明顯的優點。然而, JetBrains 的調查顯示,這個最新版本並無被普遍採用,超過 80% 的開發人員仍然使用 Java 8。這是否意味着人們並無像咱們所說的那樣在容器中運行 Java 呢?仍是人們根本不知道 Java 11 在容器方面的優點呢?框架
儘管採用速度很慢,但 Java每六個月發佈一次的節奏一直在不斷延續:Java 12 於2019 年3 月發佈,Java 13 於9 月發佈。每一個版本都很小,但都是可預測的。儘管它們並無使人興奮的新語言變化,但咱們能夠看到該語言正在穩步向前發展。此外,它還支持了預覽特性的想法,我認爲正如咱們所看到的那樣,它對 switch 表達式很是有效,開發人員應該嘗試該特性,並根據使用的狀況給出真正的反饋,而不是對抽象的概念性的想法進行反饋。做爲迴應,對 switch 表達式的語法進行了少許地更改,這是有可能的,由於它是 Java 13 中的一個預覽特性,而不是一成不變的。如今,計劃將這個更新後的語法做爲一個可用於生產的特性在 JDK 14 中發佈。運維
Kotlin機器學習
谷歌在 2019 年 5 月宣佈,Kotlin 如今是 Android 應用程序開發人員的首選語言,這促進了該語言的普遍採用。儘管許多 Android 開發人員仍處於向 Kotlin 遷移的過程當中,但那些已通過渡過來的人都知道它能提供的好處了。《Head First Kotlin》的做者 Dawn 和 David Griffiths 分享了 Kotlin 崛起背後的幾個緣由:異步
對於由 IDE 公司建立的語言,Kotlin 能擁有良好的工具支持也就不足爲奇了。用於代碼契約的實驗性 DSL 使開發人員可以爲代碼的行爲方式提供保證。你的函數有反作用嗎?它是否能保證返回一個非空值?代碼契約容許咱們作出這些承諾,而編譯器可使用它們來放寬編譯時檢查。async
如今,不一樣 Kotlin 平臺之間的屏障也正在被打破。「expect」/」actual」限定符使開發人員能夠更輕鬆地編寫跨 Java/Native/JS 環境的兼容代碼。如今,序列化支持意味着能夠更容易地將 JSON 數據轉換爲 Kotlin 對象,反之亦然。
Go瞭解更多資訊
當 Go 程序員(Gopher)回顧 2019 年時,他們極可能會記得「try」提案的傳奇故事。Go 的開發者兼做者 Jon Bodner 解釋道:
對於 Go 最多見的抱怨之一是錯誤處理過於冗長。所以在 6 月初,Go 的核心開發人員們提議添加一個新的內置函數 try ,併發布了一個 GitHub issue 來討論這個新特性。不到一個月,就有近 800 條評論,其中大多數都是否認的。反對這一新特性的人認爲,這一變化使代碼變得太「魔法」,並使邏輯流程變得模糊了。在審查了反饋以後,Go 團隊將提案標記爲關閉,並於 7 月 16 日拒絕掉了該提案。
2020 年,Go 的契約規範(也就是衆所周知的泛型提案)應該會更加清晰。Bodner 說,「看起來 Go 將使用一種與其餘語言略有不一樣的方法來實現泛型,可是這種方法很是適合 Go 的習慣用法。」它將有望使 Go 在添加泛型特性(開發人員在其餘語言中發現泛型很是有用)的同時,仍能保持其慣用的風格。
Rust
《 Programming Rust 》的合著者 Jim Blandy ,以瞭解他對 Rust 的發展見解在 2019 年發生了怎麼的變化。去年,他指出,「Rust 長期以來一直以這樣或那樣的形式支持異步編程,可是異步函數爲這種代碼提供了一種語法,這是對 Rust 以前語法的重大改進。」他對 Rust 語法進行改進的願望實現了嗎?是的,最終:Blandy 解釋到 async/await 語法直到 2019 年 11 月 7 日發佈的 1.39 版才趨於穩定。
最初,但願 async/await 語法能夠成爲 Rust 2018 版的一部分,但它須要花費更長的時間才能把事情作好。儘管如此,仍然對 async 在 2020 年對 Rust 的意義寄予厚望,將 async 集成到語言中,可讓借用檢查器(borrow checker)瞭解咱們在作什麼,所以異步代碼看起來就像是慣用的 Rust。正如 Blandy 所指出的那樣,Rust 生態系統正在迅速採起行動,以利用該語言的新表現力。
Rust 社區對 WebAssembly 也很感興趣,今年 WebAssembly 成爲了 C/FFI 的理論替代品 ,可用在須要具備可移植的、高性能的模塊的生態系統中。
Swift
Swift 去年最大的事件是 SwiftUI 和 Swift for TensorFlow 的發佈。SwiftUI 是蘋果公司的最新框架,可用於在全部蘋果設備上設計用戶界面,Swift for TensorFlow 是一個將谷歌 TensorFlow 框架和 Swift 集成在一塊兒的深度學習和可微分編程(differentiable programming )平臺。
Swift for TensorFlow 有一個開發團隊,其中包括 Swift 的創始人 Chris Lattner,而且它能夠爲咱們提供(或將在完成後提供)機器學習和數值計算所需的一切。最使人驚訝的是,它對帶有自動微分(automatic differentiation)的可微分編程(differentiable programming)提供了徹底一流的支持,這是由 Swift 的底層編譯器框架和設計來實現的。
全語言可微分編程將使以前不可能的事情成爲可能:一個很好的例子是,當咱們構建神經網絡時,可使用標準的編程調試器逐步進行反向傳播並調試派生類。
Swift for TensorFlow 還爲 Swift 提供了完整的 Python 支持,使數據科學家能夠將他們所須要的有用且熟悉的 Python 框架與簡潔而富有表現力的 Swift 代碼進行混合和匹配。
未來會怎麼樣?瞭解更多
變化是不可避免的,而且隨着編程語言繼續向雲、微服務、大數據和機器學習中的新趨勢優化傾斜,每種語言及其生態系統都將以其獨特的方式繼續適應。某些語言可能會在 2020 年發佈大版本(C++ 20 將於今年夏天發佈,Scala 3 有望在 2020 年末發佈)。但有一點很清楚,即便是最小的變動也可能會在程序員的平常生活中引發軒然大波。
※更多文章和資料|點擊後方文字直達 ↓↓↓
100GPython自學資料包
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南]CDN
ECS運維指南
DevOps實踐手冊
Hadoop大數據實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊
雲原生架構白皮書
Zabbix企業級分佈式監控系統源碼文檔