計算機編程語言為何層出不窮?化解開發者痛點才是關鍵


在7月上旬的一篇CACM博客文章中,DougMeil談論《為何有這麼多編程語言?》這個話題。而在1990年代,曾有一位精通計算機、但並非身為全職開發者的朋友向他提問“為何沒有一種好用的編程語言?”當時他的回答是,編程語言同行為特定的人物或工作語言而設計。

(來自:BLOG@CACM)

從這個意義上說,大多數語言的區別,並不在於它們使什麼成為可能、而更多地表現在它們使什麼變得容易。

幾年前,Doug Meil 有機會參觀位於加州山景城的計算機歷史博物館。有趣的是,在眾多展品中,有一幅關於編程語言演變的超大號壁紙圖標。

這張圖是如此之大,想必任何編寫過“Hello World”語句人們,都可以在上面找到對應的編程語言。

在本能的趨勢下,人們會忍不住沿著時間的正序方向去查看。但若回頭望,你又會領略到不同的視角。

這張圖表顯示已經發明的數千種編程語言裡的大約 150 種,其中一些較為通用、另一些則是為特定類型的應用程序而設計。

圖表上的箭頭,顯示較新誕生的語言如何受到老語言的影響。不過就算復雜如此圖,它也隻能算是更大范圍裡的一個樣本。

(圖 via Coding Across America)

軟件世界裡的新語言依然層出不窮,但很少有全新的語言冒出來。回顧早期,計算機的資源內存、存儲和處理能力都相當昂貴且有限。

為此,人們不得不逆風上坡,甚至經常需要通宵熬夜來爭取計算機的使用時間。而 1950-1960 年代初始的命名空間,可以精確地處理底層事務。

時至今日,年輕開發者們已鮮有涉足 FORTRAN(公式翻譯)、COBOL(通用商業導向語言)、BASIC(初學者通用符號指令代碼)、ALGOL(算法語言)、LISP(List Processor)。

不過就算大多數人可能根本沒有聽說過描述字符串處理算法的 SNOBOL 語言(1962)或 OBJOL,但隻要充分理解面向對象的編程理念,就不難推測它可以用來幹什麼 —— 至少年代的命名模式就是如此。

1964 年的 PL/I,致力於成為一種更好用的編程語言。雖然它沒有如設計者預期那樣發展,但早在 1960 年代初,人們就已經提出過“為何有這麼多編程語言”的疑問。

時間快速翻到千禧年後,我們陸續迎來 Scala(2003)、Go(2009)、Rust(2010)、Kotlin(2011)和 Swift(2014)。

當下的技術環境,似乎所有這些基本語言的屬性,都被重組到特定的解決方案中。

其能夠滿足任何平臺上的所有低級 / 高級功能、過程 / 對象、單線程 / 多線程、編譯 / 腳本需求。

在此情況下,繼續創造新語言的最大因素,反而是出於控制的考量。

1990 年代中期,微軟主要提供 Visual Basic 和 Visual C++ 開發語言,兩者都源於計算機歷史博物館壁紙上的舊節點。

VB 流行於為 Windows 桌面平臺構建前端應用程序,但缺乏許多高級語言功能 —— 比如數據結構和線程。

VC++ 處於光譜的另一端 ——開發者幾乎可以做到任何事情,但難點在於語言本身太過復雜。

正因如此,一些人看到打造一款“中間語言”的機會,於是 Java 在 1996 年迎來爆發。

據悉,Java 是一種功能齊全的面向對象語言,且涉及重點之一是跨平臺的可移植性,可惜這並不是微軟的首要目標。

隨後 Sun Microsystems 和微軟在 1997 年陷入曠日持久的沖突,並最終推動後者在 2022 年推出 C# 。

乍一看 C# 和 Java 很像,但實際上並非如此。其填補微軟開發堆棧的‘中間’位置,且該公司能夠更好地掌控該語言。

最後從總體設計控制角度來看,維護和發展現有系統,很容易變成一項艱巨的挑戰。而管理編程語言的增長,也是最困難的案例之一。

作為編程語言的用戶,優秀開發者們不僅具有生產力、還能夠以創造性的方式去使用相關特性,即便這麼做並不是語言作者所期望的。

2009 年的 Go 語言,就是一個相當有趣的例子。其誕生的一個主要推動因素,就是需要能夠在 Google 的容器化雲環境中,高效且可預測地部署。

其次是對強大語言的渴望,尤其在網絡和並發性方面。從人才角度來看,Google 顯然有能力為現有語言構建一套新的編譯器和運行時引擎。

但要改變開發者的習慣,則需要費力地改變編程語言的語法和功能 —— 尤其是被告知某些事情不再被允許、或必須以不同方式去完成時。

相關推薦

2023-12-04

盡管科學界已達成共識,但仍有三分之一的人對氣候變化的人類責任持懷疑態度。聯合國大學的一個研究小組測試六種心理幹預措施,以消除氣候誤導。結果表明,要消除這些與科學信息相抵觸的信息是多麼困難。冰川融化、海

2023-03-25

近日,黑龍江伊春,網友想買紅牛緩解疲勞,結果喝到嘴裡發現味道不對,仔細一看,發現瓶身商標和公司名稱都和紅牛不太一致,原來買到累牛”。有網友吐槽:紅牛累,就成累牛”。發現味道不對後,男子就拿起瓶身看一眼

2023-10-27

在COVID-19大流行期間,大型計算機缺乏COBOL程序員。COBOL是1959年為商業用戶設計的編程語言。IBM是一傢以現代化解決方案為宗旨的大型計算機供應商。IBM發佈一款人工智能編碼助手"watsonx",重點是用Java翻譯COBOL

2022-09-21

。”要知道,微軟的核心產品,比如Windows、Office及Auzre雲計算等依然是基於C/C++語言開發的,該公司的C/C ++代碼庫可能是全球最大的之一。Russinovich的這個提議在程序員中差不多是引爆一顆核彈,支持他或者反對他的人都是大把

2022-08-15

凱特琳是美國一個計算機專業的大學生,今年剛畢業,得找點活幹。原本以為疫情工作不好找,但沒想到面試時,老板還吵著要給她一個薪水更高的職位。原因很簡單,就是她的求職簡歷上寫一個技能:COBOL編程語言。這不是個

2024-06-21

體發表重要演講,向全球開發者正式介紹華為自研的倉頡編程語言,並發佈HarmonyOS NEXT倉頡語言開發者預覽版。這是華為首次公開發佈倉頡編程語言,標志著其在編程語言領域的重要突破。據悉,倉頡編程語言項目於2019年在華為

2024-03-08

裡編寫世界上第一套程序,還建立循環和子程序概念,為計算程序擬定算法,寫出人類歷史上第一份“程序設計流程圖”。同時她還預測未來的發展,包括計算機生成的音樂和文字處理,如今這也被視為對計算機和軟件的描述。

2022-09-19

,但我要說:不要把這個計劃太當真。因為你不可能通過計算和計劃來完成所有的事情。在某些時候,你並沒有“脫離你設定的任務”,你隻是“過著自己的生活”。這不是失敗,也不是放棄。你無法預測什麼是有價值的,所以

2024-02-29

發佈一份報告就詳細介紹建議開發者們使用各種內存安全編程語言,盡管 ONCD 沒有明確羅列哪些語言是內存安全編程語言,但強調 C 和 C++ 缺乏與內存安全相關的特征,因此實際上就是不建議開發者使用 C 和 C++。需要強調的是,

2023-01-14

言,為幾種類型的編譯應用程序提供原生性能--從傳統的計算機軟件到低資源和嵌入式設備。此外,Rust旨在從一開始就提供內存安全,在編譯時就消除許多類錯誤和潛在的漏洞。Google感謝Mozilla"對系統軟件行業的巨大貢獻"

2023-03-01

量子算法。最終,這些算法可以在英特爾試圖構建的量子計算機上運行。英特爾研究院量子應用與架構總監Anne Matsuura表示,這個平臺名為Intel Quantum SDK(量子軟件開發工具包),目前允許部分量子算法在模擬的量子計算系統上運

2024-03-28

並未引發世界級關註。不過當時英偉達已提出CUDA(通用計算平臺)的概念,在許多人還在把英偉達當作“遊戲顯卡”的制造商時,其走在 AI 變革前沿。不過最初,CUDA的應用場景主要是科學計算,就是類似於氣候模擬、物理模擬

2023-01-08

下。“數字經濟的崛起與繁榮,離不開算力的強大支撐,計算芯片已然成為全球科技競爭的焦點所在。”中國工程院院士倪光南曾說。伴隨國內政策、資本、人才以及應用的紅利,一大批國內GPU企業已然嶄露頭角。但GPU作為復雜

2022-11-12

ift是排名前十的語言,部分歸功於iOS應用開發。而在系統編程中,人們對Rust作為C和C++的替代品的興趣也越來越大。"NSA建議企業考慮在可能的情況下,從很少或沒有提供固有內存保護的編程語言(如C/C++)轉向內存安全語言