六種老而不死的編程語言!

現(xiàn)在的開發(fā)人員都趨向于使用新的編程語言,那么舊的編程語言呢?它們的前途一般是這樣兩種:仍然可以使用,但逐漸不受大家歡迎;直接完全死去。
該盤點及分析由數(shù)位編程專家整理得出,包含了大量他們對于某些經(jīng)典編程語言以及新興編程語言的思考以及基于行業(yè)的分析。
Python

今年 Python 的最大新聞是,Python 之父吉多·范·羅蘇姆(Guido van Rossum)正式退休,并將 Python 交給了 Python 指導(dǎo)委員會。到目前為止,這次權(quán)力轉(zhuǎn)移并沒有出現(xiàn)“陣痛”,正如《Python Crash Course》的作者 Eric Matthes 所認為的那樣,這是很正常的,因為“ Guido 在很長一段時間里仍將保持自己在社區(qū)中的角色?!?此外,2020 年還將終止對 Python 2.7 的支持,這很可能導(dǎo)致堅持使用 Python 2.7 的人變得很難受。
但不管怎樣,Python 仍然是數(shù)據(jù)科學(xué)的首選語言。
對于 Matthes 而言,Python 令人興奮的一個方面是“來自一個社區(qū)的各種有趣且關(guān)鍵的項目已經(jīng)誕生了,而社區(qū)已經(jīng)如此有意識地建立了這么長時間。” Python 指導(dǎo)委員會成員和 CPython 的核心開發(fā)人員 Carol Willing 也慶祝了這些項目,例如 Binder 服務(wù),該服務(wù)通過在 Jupyter Notebook 中創(chuàng)建可執(zhí)行環(huán)境來促進可重復(fù)的研究,尤其是當(dāng)它們超出其最初的目標(biāo)時。
她指出,“活頁夾去年在許多 Python 會議上被廣泛用于教學(xué)講習(xí)班和教程?!?Willing 還向 CircuitPython 和 Mu 項目大聲疾呼,問道:“誰會不喜歡硬件呢,閃爍的 LED、傳感器,以及使用 Mu 的用戶友好的編輯器,這對成年人和孩子來說不都是很棒的選擇?”
Java

今年對 Java 來說,主要都是好消息。本·埃文斯(Ben Evans)解釋說:“再一次,關(guān)于 Java 滅亡的傳言再一次成為了平臺批評者的一廂情愿?!?
但這并不是一帆風(fēng)順的。正如我們?nèi)ツ曛赋龅哪菢?,Java 11 于 2018 年 9 月發(fā)布并帶來了許多新功能,包括許多在使用容器方面具有明顯優(yōu)勢的重要功能。但是,根據(jù) JetBrains 的調(diào)查,這次新版本的推出并沒有帶來廣泛的采用,超過 80% 的開發(fā)人員仍在使用 Java 8。
Evans想知道:“這是否意味著人們沒有像我們所知道的那樣在容器中運行Java?還是人們只是不知道在容器中使用 Java 11 的好處?”
盡管采用速度緩慢,但 Java 的六個月發(fā)布節(jié)奏一直在不斷發(fā)展-Java 12于2019年3月下降,Java 13于9月問世。根據(jù) Trisha Gee 的說法,它確實開始顯示其價值:
每個版本很小,但是可以預(yù)見。盡管它們并不都具有令人興奮的新語言更改,但是您可以看到該語言正在穩(wěn)步向前發(fā)展。
此外,它支持預(yù)覽功能的這種想法,我認為我們切換表達式的工作效果非常好 —— 開發(fā)人員必須嘗試使用該功能并根據(jù)使用感覺來提供真實的反饋,而不是抽象的,概念性的反饋想法。在 Java 13 中,開關(guān)表達式的語法進行了少量更改,這是有可能的,因為它是預(yù)覽功能,并且沒有固定設(shè)置。
當(dāng) Oracle 將 Java SE 遷移到基于訂閱的模型時,2019 年收獲了另一個驚喜。但是,正如《Learning Java》的合著者 Marc Loy 指出的那樣,“隨著 OpenJDK 的熱情增加,整個 Java 社區(qū)正在面臨一種‘不幸’的變化?!?
至于剛剛到來的 2020 年,埃文斯(Evans)建議 2020 年可以持續(xù)關(guān)注 2019 年的發(fā)展趨勢:
我們將如何接近 Valhalla 項目的生產(chǎn)版本?提供模式匹配和代數(shù)數(shù)據(jù)類型(Project Amber)的增量策略是否會奏效?Quarkus 會履行其承諾和早期粉絲的信念嗎?2020 年將成為 Kotlin 會在 Android 領(lǐng)域邁出跨躍性的重要一步嗎?
這是激動人心的時刻,我們正在過渡到新的事物,并且正在發(fā)生很多事情。
JavaScript

JS的第一個時代(從1997年至2007年)堪稱虎頭蛇尾。大家都知道Brendan Eich的故事,但很少有人知道ES4是如何在諸如Flash / Actionscript之類的封閉生態(tài)系統(tǒng)的激烈競爭中步履蹣跚的。有關(guān)JS完整起源的故事,Brendan Eich和Allen Wirfs-Brock寫的“《JavaScript:最初的20年》講得最好。
JS的第二個時代(從2009年至2019年)始于2009的奇跡之年,這年誕生了npm,Node.js和ES5。隨著Doug Crockford向我們展示了其出色的功能,用戶構(gòu)建了一套完整的JS 構(gòu)建工具和庫,并將JS的應(yīng)用范圍擴展到了臺式機和新型智能手機。到2019年,我們甚至在諸如Facebook的Hermes手機以及諸如Svelte 3的編譯器先行前端框架中看到JS專用運行時。
這個語言,在10年內(nèi)還會成為web開發(fā)最通用的語言。
Kotlin

谷歌在 2019 年 5 月宣布 Kotlin 現(xiàn)在是 Android 應(yīng)用開發(fā)人員的首選語言,這表明了該語言已經(jīng)被廣泛采用。
盡管許多 Android 開發(fā)人員尚未完全遷移到 Kotlin,但已經(jīng)遷移的人都知道它提供的好處。《Head First Kotlin》的作者 Dawn 和 David Griffiths 分享了 Kotlin崛起背后的一些原因:
對于由 IDE 公司創(chuàng)建的語言,Kotlin 擁有良好的工具支持水平也就不足為奇了。用于代碼合同的實驗性 DSL 使開發(fā)人員能夠提供有關(guān)代碼行為方式的保證。您的功能有副作用嗎?是否可以保證返回非空值?代碼合同允許您做出這些承諾,并且編譯器可以使用它們來放松編譯時檢查。
現(xiàn)在,不同的 Kotlin 平臺之間的障礙也正在被打破?!癳xpect”/”actual”限定符使開發(fā)人員可以更輕松地編寫跨 Java / Native / JS 環(huán)境兼容的代碼。序列化支持意味著將 JSON 數(shù)據(jù)轉(zhuǎn)換為 Kotlin 對象更加容易,反之亦然。
希望看到 Kotlin 繼續(xù)保持驚人的增長 —— 并且不僅僅是在 Android 中。JetBrains 開發(fā)人員倡導(dǎo)團隊負責(zé)人 Hadi Hariri 指出 Kotlin / Everywhere 的成功,使得人們可以在 Android,Google Cloud Platform 和多平臺開發(fā)中學(xué)習(xí) Kotlin 的基本知識和最佳實踐,并用數(shù)據(jù)舉例證明:
“從 5 月到 11 月,我們已經(jīng)成功地覆蓋了 86 個國家/地區(qū)的 30,000人。KotlinConf 在 2019 年連續(xù)三年銷售一空,有 1,700 多名與會者。這尤其表明,開發(fā)者對該語言的興趣和采用正在增長?!?
Go

當(dāng) Gophers 回顧 2019 年時,他們可能會記得嘗試提案的傳奇故事。Go 開發(fā)人員兼作家 Jon Bodner 解釋說:
關(guān)于 Go 的最常見的抱怨之一是錯誤處理太冗長。因此,在 6 月初,Go 核心開發(fā)人員建議添加一個名為 try 的新內(nèi)置函數(shù)。GitHub 的 issue 現(xiàn)在已打開,以討論此新功能。一個月之內(nèi),有將近 800 條評論,其中大多數(shù)是負面的。反對這項新功能的人們感到,這種改變使代碼過于“不可思議”,并掩蓋了邏輯流程。審查反饋后,Go 小組將提案標(biāo)記為已完成,并于 7 月 16 日關(guān)閉。
這個過程值得注意的不是功能的失敗,而是,正如 Bodner 所描述的那樣,“過程發(fā)生的方式:提出了一個功能,討論受到尊重,但許多人認為更改與 Go 的風(fēng)格不一致。最后,管理語言的人決定尊重多數(shù)意見。這就是開發(fā)人員談?wù)撋鐓^(qū)時的意思?!?
2020 年應(yīng)該使 Go 的 Contracts 規(guī)范更加清晰,這就是眾所周知的 Generics 提案。
根據(jù) Bodner 的說法,“ Go 似乎將使用一種與其他語言略有不同的方法來實現(xiàn)泛型,但它很適合 Go 的習(xí)慣用法?!?希望它將使 Go 保持其慣用的風(fēng)格,同時添加開發(fā)人員發(fā)現(xiàn)在其他語言中有用的功能。
Rust

我們與《Programming Rust》的合著者 Jim Blandy 進行了溝通,以了解他對 Rust 在 2019 年的進步的看法如何變化。
去年,他指出,“ Rust 長期以來一直以一種形式或另一種形式支持異步編程,但是異步函數(shù)為這種代碼提供了語法與 Rust 以前的產(chǎn)品相比,這是一個重大改進?!?
他對 Rust 語法進行改進的希望是否實現(xiàn)了?是的,最終:布蘭迪解釋說,異步/等待語法直到 2019 年 11 月 7 日發(fā)布的 1.39 版才變得穩(wěn)定。
“最初,我們希望異步/等待語法可以成為 Rust 2018 版的一部分,但它花了更長的時間才把事情做好。” 不過,他對 2020 年 Rust 對 Rust 的意義寄予了很高的期望:“將異步集成到語言中可以使借閱檢查器了解您的操作,因此異步代碼看起來像慣用的 Rust。
Rust 社區(qū)也對 WebAssembly 感到興奮,今年 WebAssembly 成為了 C / FFI 的理論替代品,用于需要便攜式,高性能模塊的生態(tài)系統(tǒng)。正如 Rust 專家 Nathan Stocks 指出的那樣:“您也可以使用輕型沙箱!” 令 Stocks 印象最深的是“有多少理論已經(jīng)成功原型化并得到了證明?!?
以前,我曾把WebAssembly純粹視為一個編譯目標(biāo),以便在瀏覽器中運行非JS語言的代碼。能夠從瀏覽器之外的任何語言使用Web程序集的功能令人不寒而栗。
Swift

去年 Swift 發(fā)生的最大的故事是蘋果公司用于在所有蘋果設(shè)備上設(shè)計用戶界面的最新框架 SwiftUI 的發(fā)布,以及 TensorFlow 的 Swift 版本。
正如 Timirah James 解釋的那樣,SwiftUI 的聲明性已經(jīng)贏得了開發(fā)人員的廣泛關(guān)注,并且已經(jīng)被視為 UIKit 的未來繼任者。
至于 TensorFlow 的 Swift,Buttfield-Addison 稱之為“ Swift 的根本新用途”。他解釋說:“ Swift 一直是一種出色的應(yīng)用程序開發(fā)和系統(tǒng)編程語言,并且是一種新興的 Web 和后端開發(fā)語言,但是現(xiàn)在,借助 Swift for TensorFlow,它也是一個強大的 ML 框架?!?原因如下:
Swift for TensorFlow 由一個團隊開發(fā),該團隊包括 Swift 的原始創(chuàng)建者 Chris Lattner,并提供(或?qū)⒃谕瓿珊筇峁C器學(xué)習(xí)和數(shù)值計算所需的一切。最令人驚訝的是,Swift 的基礎(chǔ)編譯器框架和設(shè)計使對具有可自動區(qū)分功能的可區(qū)分編程的完全一流支持成為可能。
完整的語言可區(qū)分編程將使以前不可能的事情成為可能:最好的例子是在構(gòu)建神經(jīng)網(wǎng)絡(luò)時能夠使用標(biāo)準(zhǔn)編程調(diào)試器逐步進行反向傳播并調(diào)試派生類。
Swift for TensorFlow 還為 Swift 提供了完整的 Python 支持,使數(shù)據(jù)科學(xué)家可以使用清晰的 Swift 代碼將所需的有用和熟悉的 Python 框架進行混合和匹配。
展望未來,James 和 Buttfield-Addison 都很高興看到 Swift 所采取的新方向,James 指出“ Swift 在移動社區(qū)以外的不同社區(qū)和堆棧中迅速采用,特別是在無服務(wù)器領(lǐng)域,” Buttfield-Addison 呼吁“令人驚嘆的網(wǎng)絡(luò)開發(fā)框架(如 Kitura)以及各種針對特殊領(lǐng)域的令人驚嘆的框架……例如 SwiftPlot,它是 Python 中無處不在的 Matplotlib 的 Swift 本機版本。”
未來是什么樣的?
變化是不可避免的,并且隨著編程語言繼續(xù)傾向于針對云,微服務(wù),大數(shù)據(jù)跨平臺和機器學(xué)習(xí)中的新趨勢進行優(yōu)化,每種語言及其生態(tài)系統(tǒng)將繼續(xù)以自己獨特的方式進行適應(yīng)。
某些語言可能會在 2020 年發(fā)布大版本,比如 C ++ 20 將于今年夏天發(fā)布,Scala 3.0 有望在 2020 年末發(fā)布。但很明顯,即使是最小的更改也可能在程序員的日常生活中引起巨大的波瀾。
在過去很長的一段時間內(nèi),Java vs Kotlin、 Python Vs Go、 Swift vs OC、 RustVs Php 相關(guān)比較的內(nèi)容層出不窮。但是,到目前為止,Java、Python、 C、JavaScript 依然是編程語言界的常青樹。甚至10年內(nèi)還是如此。





























