2020 年热门编程语言的发展方向
時間行至 2020 年,對于編程語言的未來發(fā)展,很多人會更多的期待。因此,我們向多位編程專家征詢了他們對熱門編程語言的看法。
Python
今年 Python 最大的新聞是,其創(chuàng)造者和“終身仁慈獨(dú)裁者(BDFL)” Guido van Rossum 退休了,將 Python 交給了 Python 指導(dǎo)委員會(Python Steering Council )。
到目前為止,權(quán)力轉(zhuǎn)移還算順利,正如《Python 編程從入門到實踐》( Python Crash Course )的作者 Eric Matthes 所認(rèn)為的那樣,這并不足以為奇,因為“長久以來,Guido 一直都能在他自己和在社區(qū)中的角色之間保持平衡。”2020 年也將終止對 Python 2.7 的支持,這很可能會讓其反對者感到頭疼。同時, Python 仍然是數(shù)據(jù)科學(xué)的首選語言。
對于 Matthes 而言,Python 令人興奮的一個方面是“在一個長期以來刻意構(gòu)建其多樣性的社區(qū)中,出現(xiàn)了各種有趣而關(guān)鍵的項目。”Python 指導(dǎo)委員會的成員、CPython 的核心開發(fā)人員 Carol Willing 也對這些項目表示了贊賞,比如 Binder 服務(wù),它通過我們的 Jupyter Notebooks 創(chuàng)建一個可執(zhí)行的環(huán)境來促進(jìn)可重復(fù)的研究,尤其是當(dāng)它們超出最初的目標(biāo)時。
她指出,Binder“去年被廣泛用于許多 Python 會議的教學(xué)研討班和教程”,Willing 還對 CircuitPython 和 Mu 項目大聲疾呼,問到:“誰不喜歡硬件、閃爍的 LED、傳感器,使用 Mu,一個老少咸宜、用戶友好的編輯器?”
? Java??
這主要是 Java 方面的好消息。Java Champion Ben Evans 解釋道,“關(guān)于 Java 消亡的謠言再一次被證明不過是平臺批評者的一廂情愿而已。”但這也并非一帆風(fēng)順。正如我們?nèi)ツ晁⒁獾降哪菢?#xff0c;2018 年 9 月發(fā)布的 Java 11 帶來了大量的新特性,其中許多特性為容器的使用提供了顯著且明顯的優(yōu)勢。
然而, JetBrains 的調(diào)查顯示,這個最新版本并沒有被廣泛采用,超過 80% 的開發(fā)人員仍然使用 Java 8。Evans 想知道,“這是否意味著人們并沒有像我們所說的那樣在容器中運(yùn)行 Java 呢?還是人們根本不知道 Java 11 在容器方面的優(yōu)勢呢?”
盡管采用速度很慢,但 Java 每六個月發(fā)布一次的節(jié)奏一直在不斷延續(xù):Java 12 于 2019 年 3 月發(fā)布,Java 13 于 9 月發(fā)布。據(jù) Java Champion Trisha Gee 所說,它已經(jīng)開始顯示出它的價值了:
每個版本都很小,但都是可預(yù)測的。盡管它們并沒有令人興奮的新語言變化,但我們可以看到該語言正在穩(wěn)步向前發(fā)展。此外,它還支持了預(yù)覽特性的想法,我認(rèn)為正如我們所看到的那樣,它對 switch 表達(dá)式非常有效,開發(fā)人員應(yīng)該嘗試該特性,并根據(jù)使用的情況給出真正的反饋,而不是對抽象的概念性的想法進(jìn)行反饋。
作為回應(yīng),對 switch 表達(dá)式的語法進(jìn)行了少量地更改,這是有可能的,因為它是 Java 13 中的一個預(yù)覽特性,而不是一成不變的。現(xiàn)在,計劃將這個更新后的語法作為一個可用于生產(chǎn)的特性在 JDK 14 中發(fā)布。
當(dāng)甲骨文將 Java SE 遷移到基于訂閱的模式時,2019 年又帶來了另一個驚喜。但是,正如《Learning Java,第五版》(現(xiàn)已發(fā)布的早期版本)的合著者 Marc Loy 所指出的那樣,“整個 Java 社區(qū)對 OpenJDK 的熱情越來越高,它已經(jīng)開始著手處理這個不幸的變化了。”
至于來年,Evans 建議 2020 年需關(guān)注 2019 年的趨勢發(fā)展:
Project Valhalla 的生產(chǎn)版本還有多久才能發(fā)布?提供模式匹配和代數(shù)數(shù)據(jù)類型( Project Amber )的增量策略是否有效?Quarkus 能兌現(xiàn)它的承諾并支撐早期粉絲的信念嗎?2020 年會成為 Kotlin 超越 Android 成為重要排頭兵的一年嗎?這是一個令人興奮的時刻,我們正處于向新事物過渡的階段,而且還有很多事情可以做。
Kotlin
谷歌在 2019 年 5 月宣布,Kotlin 現(xiàn)在是 Android 應(yīng)用程序開發(fā)人員的首選語言,這促進(jìn)了該語言的廣泛采用。盡管許多 Android 開發(fā)人員仍處于向 Kotlin 遷移的過程中,但那些已經(jīng)過渡過來的人都知道它能提供的好處了。《Head First Kotlin》的作者 Dawn 和 David Griffiths 分享了 Kotlin 崛起背后的幾個原因:
對于由 IDE 公司創(chuàng)建的語言,Kotlin 能擁有良好的工具支持也就不足為奇了。用于代碼契約的實驗性 DSL 使開發(fā)人員能夠為代碼的行為方式提供保證。你的函數(shù)有副作用嗎?它是否能保證返回一個非空值?代碼契約允許我們做出這些承諾,而編譯器可以使用它們來放寬編譯時檢查。
現(xiàn)在,不同 Kotlin 平臺之間的屏障也正在被打破。“expect”/”actual”限定符使開發(fā)人員可以更輕松地編寫跨 Java/Native/JS 環(huán)境的兼容代碼。現(xiàn)在,序列化支持意味著可以更容易地將 JSON 數(shù)據(jù)轉(zhuǎn)換為 Kotlin 對象,反之亦然。
希望 Kotlin 能繼續(xù)保持其驚人高速增長,而不僅僅是在 Android 上。JetBrains 的開發(fā)者權(quán)益團(tuán)隊負(fù)責(zé)人 Hadi Hariri 指出 Kotlin/Everywhere(一系列社區(qū)主導(dǎo)的活動,在這些活動中,我們可以在 Android、谷歌云平臺和多平臺開發(fā)中學(xué)習(xí) Kotlin 的基本知識和最佳實踐)的成功,就是最好的證明:
“從 5 月到 11 月,我們已經(jīng)成功地覆蓋了 86 個國家的近 30000 人。2019 年, KotlinConf 連續(xù)三年售罄,吸引了 1700 多名與會者。這尤其表明,人們對這門語言的興趣和接受程度正在增長。”
? ?Go???
當(dāng) Go 程序員(Gopher)回顧 2019 年時,他們很可能會記得“try”提案的傳奇故事。Go 的開發(fā)者兼作者 Jon Bodner 解釋道:
對于 Go 最常見的抱怨之一是錯誤處理過于冗長。因此在 6 月初,Go 的核心開發(fā)人員們提議添加一個新的內(nèi)置函數(shù) try 。并發(fā)布了一個 GitHub issue 來討論這個新特性。
不到一個月,就有近 800 條評論,其中大多數(shù)都是否定的。反對這一新特性的人認(rèn)為,這一變化使代碼變得太“魔法”,并使邏輯流程變得模糊了。在審查了反饋之后,Go 團(tuán)隊將提案標(biāo)記為關(guān)閉,并于 7 月 16 日拒絕掉了該提案。
在這個過程中值得注意的不是這個特性的失敗,而是,正如 Bodner 所描述的那樣,“過程的發(fā)生方式:提出一個特性,討論也是受到尊重的,但是許多人覺得這個變更與 Go 的風(fēng)格不一致。最后,掌管語言的人決定尊重大多數(shù)人的意見。這就是開發(fā)者所說的社區(qū)。”
2020 年,Go 的契約規(guī)范(也就是眾所周知的泛型提案)應(yīng)該會更加清晰。Bodner 說,“看起來 Go 將使用一種與其他語言略有不同的方法來實現(xiàn)泛型,但是這種方法非常適合 Go 的習(xí)慣用法。”它將有望使 Go 在添加泛型特性(開發(fā)人員在其他語言中發(fā)現(xiàn)泛型非常有用)的同時,仍能保持其慣用的風(fēng)格。
? Rust??
我們采訪了《 Programming Rust 》的合著者 Jim Blandy ,以了解他對 Rust 的發(fā)展看法在 2019 年發(fā)生了怎么的變化。去年,他指出,“Rust 長期以來一直以這樣或那樣的形式支持異步編程,但是異步函數(shù)為這種代碼提供了一種語法,這是對 Rust 之前語法的重大改進(jìn)。”
他對 Rust 語法進(jìn)行改進(jìn)的愿望實現(xiàn)了嗎?是的,最終:Blandy 解釋到 async/await 語法直到 2019 年 11 月 7 日發(fā)布的 1.39 版才趨于穩(wěn)定。“最初,我們希望 async/await 語法可以成為 Rust 2018 版的一部分,但它需要花費(fèi)更長的時間才能把事情做好。”
盡管如此,他仍然對 async 在 2020 年對 Rust 的意義寄予厚望:“將 async 集成到語言中,可以讓借用檢查器(borrow checker)了解我們在做什么,因此異步代碼看起來就像是慣用的 Rust。”正如 Blandy 所指出的那樣,Rust 生態(tài)系統(tǒng)正在迅速采取行動,以利用該語言的新表現(xiàn)力。
Rust 社區(qū)對 WebAssembly 也很感興趣,今年 WebAssembly 成為了 C/FFI 的理論替代品 ,可用在需要具有可移植的、高性能的模塊的生態(tài)系統(tǒng)中。正如 Rust 專家 Nathan Stocks 所說:“我么也可以使用輕量級的沙箱!”令 Stocks 印象最深的是“該理論已經(jīng)被原型化并被成功地證明了”
以前,我曾把 WebAssembly 純粹視為一個編譯目標(biāo),以便在瀏覽器中運(yùn)行非 JS 語言的代碼。添加這種可以從瀏覽器之外的任何語言中使用 Web 程序集的能力是令人不寒而栗的。
Swift?
Swift 去年最大的事件是 SwiftUI 和 Swift for TensorFlow 的發(fā)布。SwiftUI 是蘋果公司的最新框架,可用于在所有蘋果設(shè)備上設(shè)計用戶界面,Swift for TensorFlow 是一個將谷歌 TensorFlow 框架和 Swift 集成在一起的深度學(xué)習(xí)和可微分編程(differentiable programming )平臺。
正如 Timirah James 所解釋的那樣,SwiftUI“已經(jīng)憑借其聲明式的特性在開發(fā)者中獲得了很大的吸引力(理應(yīng)如此),并且已經(jīng)被視為是未來 UIKit 的潛在繼任者。”至于 Swift for TensorFlow, http://Paris Buttfield-Addison">Paris Buttfield-Addison 稱之為“Swift 的一個全新用途。”
他解釋道,“Swift 一直是一種優(yōu)秀的應(yīng)用程序開發(fā)和系統(tǒng)編程語言,也是一種很有前途的 Web 和后端開發(fā)語言,但現(xiàn)在,可以使用 Swift for TensorFlow 了,并且它還是一個功能強(qiáng)大的 ML 框架。”原因如下:
Swift for TensorFlow 有一個開發(fā)團(tuán)隊,其中包括 Swift 的創(chuàng)始人 Chris Lattner,并且它可以為我們提供(或?qū)⒃谕瓿珊筇峁?#xff09;機(jī)器學(xué)習(xí)和數(shù)值計算所需的一切。最令人驚訝的是,它對帶有自動微分(automatic differentiation)的可微分編程(differentiable programming)提供了完全一流的支持,這是由 Swift 的底層編譯器框架和設(shè)計來實現(xiàn)的。
全語言可微分編程將使之前不可能的事情成為可能:一個很好的例子是,當(dāng)我們構(gòu)建神經(jīng)網(wǎng)絡(luò)時,可以使用標(biāo)準(zhǔn)的編程調(diào)試器逐步進(jìn)行反向傳播并調(diào)試派生類。
Swift for TensorFlow 還為 Swift 提供了完整的 Python 支持,使數(shù)據(jù)科學(xué)家可以將他們所需要的有用且熟悉的 Python 框架與簡潔而富有表現(xiàn)力的 Swift 代碼進(jìn)行混合和匹配。
展望未來,看到 Swift 選擇的新方向,James 和 Buttfield Addison 都感到很興奮,James 指出“ 在不同的社區(qū)和除移動領(lǐng)域之外的其他技術(shù)棧中,特別是在無服務(wù)器領(lǐng)域中,Swift 的采用非常迅速”,Buttfield Addison 稱之為“令人驚嘆的 Web 開發(fā)框架,比如 Kitura ,以及各種針對細(xì)分領(lǐng)域的驚人的框架,比如 SwiftPlot ,它是 Python 中無處不在的 Matplotlib 的 Swift 原生版本。”
未來是什么?
變化是不可避免的,并且隨著編程語言繼續(xù)向云、微服務(wù)、大數(shù)據(jù)和機(jī)器學(xué)習(xí)中的新趨勢優(yōu)化傾斜,每種語言及其生態(tài)系統(tǒng)都將以其獨(dú)特的方式繼續(xù)適應(yīng)。某些語言可能會在 2020 年發(fā)布大版本(C++ 20 將于今年夏天發(fā)布,Scala 3 有望在 2020 年底發(fā)布)。但有一點(diǎn)很清楚,即使是最小的變更也可能會在程序員的日常生活中引起軒然大波。
原文鏈接:
https://www.oreilly.com/radar/where-programming-languages-are-headed-in-2020/
有道無術(shù),術(shù)可成;有術(shù)無道,止于術(shù)
歡迎大家關(guān)注Java之道公眾號
好文章,我在看??
總結(jié)
以上是生活随笔為你收集整理的2020 年热门编程语言的发展方向的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积神经网络, Convolutiona
- 下一篇: RNN和LSTM、GRU的简单理解