?作者 | 徐杰承
上世紀80至90年代,伴隨著計算機的逐漸普及,大量編程語言也在這一時期誕生。彼時,世界范圍內平均每一個月便會產生一種新的編程語言。據不完全統計,截止到2022年,人類已經開發了大約9000種編程語言。
然而,隨著時間的推移,新編程語言的誕生速度卻在持續下降,尤其在過去幾年間,新編程語言的產生頻率已放緩到了約一年一種。但這一變化卻似乎并沒有給開發者們帶來任何影響,我們所熟悉的Python、JavaScript等一眾老伙計依然足矣應付目前絕大多數的研發需求,并且仍舊表現強勢。那么,這是否意味著我們已不再需要新的編程語言了呢?
1、為什么一些編程語言能夠長期流行?
Python、JavaScript等語言能夠長期流行且受到開發者們的廣泛喜愛,很大程度上是由于它們的用戶友好性。以Python為例,作為一種高級編程語言,Python擁有豐富的開發框架、廣泛且高質量的可用庫與良好的代碼可讀性。并且具有用戶友好的數據結構,還提供了web服務的輕松集成,這些優點使得其備受開發人員的青睞。
而JavaScript作為目前市面上最受歡迎的編程語言之一,能夠方便地操縱各種瀏覽器對象、支持分布式運算和處理,且與絕大多數互聯網瀏覽器兼容,目前我們能夠看到的所有網站幾乎都是基于JavaScript所構建的。此外,JavaScript自誕生以來不斷通過大規模的更新使自己與持續發展的技術生態系統緊密相連,如今的JavaScript與十年前的JavaScript幾乎可以說是兩種語言。
2、為什么我們不再需要新的編程語言?
當路面變得不再平坦時,造一些更好的輪子永遠比造一輛新車要來的方便。相比于從頭開始構建一種新的編程語言,幾乎所有的開發人員都更愿意選擇在現有語言的基礎上更新框架,這也是絕大部分開發者們用腳投票的結果。
MachineHack首席技術官Krishna Rastogi曾在一次采訪中公開表示“從頭開始構建編程語言是一個非常消耗時間和資源的過程,絕大部分問題只需要更新框架就可以輕松解決。并且,當涉及到編程語言功能時,更多并不一定代表著更好。當我們用多種方法描述同一個想法時,它可能會變得令人困惑。”。
根據Krishna Rastogi的介紹,早期的軟件行業之所以會出現種類如此種類繁多的編程語言,是由于早年間硬件的性能不夠可靠,因此開發人員必須通過復雜多樣的編程語言來彌補硬件功能方面的種種不足。但如今,硬件已經發展得足夠優秀,開發人員自然就不再需要使用那些復雜且沒有太多實際意義的編程語言,去選擇那些泛用性更強、功能更強大且更加友好的編程語言就足夠了。
除此之外,一門編程語言的興衰與否,與其周圍的生態環境也有著至關重要的聯系。主流的成熟編程語言周圍大多擁有各類龐大的社區,這些社區能夠為語言以及新晉學習者提供源源不斷的資源補充,使整個語言的生態系統得以持續發展。老牌語言在這方面的技術資產,是后來者極難超越的。
最后一點,從功利角度來講,由于大多數工程師在入行時都會選擇學習較為成熟的編程語言,并圍繞語言選擇工作方向、堆砌自己的技術棧。因此企業在對于技術架構的選擇方面,也會因為穩定性及人員招聘等問題而遵從一定的設計原則,這樣雙向促進的邏輯也就自然而然的形成了一個閉環。
3、非英語種編程語言有前途嗎?
前文中我們對于編程語言的討論始終圍繞著語言本身的一些特點,那么,在語種這個世界性問題上,會有新的編程語言給出不一樣的答案么?非英語種編程語言的目的,是為了讓那些母語非英語的開發者能夠使用自己更為熟悉的語種,進行程序的設計與創作,但這個想法在執行方面卻面臨著很多的困難。
例如,計算機科學家Ramsey Nasser在貝魯特大學學習期間,發現自己所學的所有編程語言都高度依賴于英語,他對此非常失望,因此決定從頭開始創造一種阿拉伯語編程語言,但這件事最終卻以失敗告終。對此,Ramsey Nasser指出了在開發中遇到的許多困難,最主要的一點便是:英語已經深深烙印在了各種軟硬件操作系統之中,因此創造其他語種的編程語言需要用特定語種對過去幾十年的軟件工程進行重寫,這幾乎是不可能完成的任務。
當然,你可能會說如今市面上確實有不少基于非英語種的編程語言,例如中文編程語言“易語言”、日文編程語言“撫子”等。但其實它們都沒有成功擺脫英文編程語言的束縛,例如“易語言”就是基于C++進行構建的。這些非英語種編程語言,絕大部分只是基于傳統編程語言進行了大量封裝和重寫。雖然對于初學者而言,這類語言的確會顯得相對簡單,但在性能、可用性等方面,這類語言則完全無法與傳統的基于英語的編程語言相比。
4、Web3會改變編程語言的新格局嗎?
分析最近十幾年編程語言的發展變化,我們不難發現,現代編程語言的語法、特性、語言設施、編程范式等方面都在逐漸趨同,業界主流的編程語言都在朝著優化開發者生產力的方向演進。基于這個趨勢,我們可以判斷,這便是Web2.0時代編程語言發展的終極目標。
但隨著近期Web3呼聲的不斷加劇,新一代互聯網似乎已經離我們越來越近了。而Web3的到來,勢必將會重塑整個互聯網的生態系統,并催生出大量專屬于Web3時代的全新應用。屆時,我們將極有可能需要更多全新的、更加適用于編寫智能合約和開發區塊鏈應用的編程語言來填補Web2與Web3之間的溝壑。?