大概所有程序員都夢想有一個世界,這個世界只有一種編程語言,通過這種完美的語言就可以解決所有問題。
然而現(xiàn)實世界的編程語言卻多達上千種,雖然其中流行的大概只有C語言、Java、Python等十幾種,但也讓這群程序員的頭發(fā)止不住的往下掉。
沒有一種萬能的語言,能開發(fā)各種平臺的程序。如果問“世界上最好的編程語言是什么?”,這些程序員可能也會為這個問題辯得熱火朝天。
就在最近的華為開發(fā)者大會 2021上,華為消費者業(yè)務軟件部總裁龔體表示,在不久的將來,華為將發(fā)布為HarmonyOS全新研發(fā)的編程語言。對于程序員來說,未來或許將又多一門可能要學習的語言。
編程語言的難題:空有屠龍技
通常情況下,為了滿足開發(fā)各個方面的需求和減少開發(fā)的難度,那些軟件工程師就想著去開發(fā)更適合平臺開發(fā)的編程語言。這時候就出現(xiàn)了編程語言的進步。
幾十年的時間里,不僅出現(xiàn)越來越多的編程語言,也有編程語言隨著時代發(fā)展地位不斷上升。誰能想到當初用于開發(fā)遙控器程序的Java,會發(fā)展到應用如此廣泛的地步。
盡管目前已經有成百上千種編程語言,但其中國產編程語言卻少之又少,流行的十幾種編程語言中國產的幾乎不見蹤影。這些編程語言的設計者和開發(fā)者無一例外全是外國人,在這里我們幾乎失去了發(fā)言權,國產編程語言為何沒有崛起?
做不做是一回事,做不做得出來是另一回事。實際上,設計一門編程語言的技術門檻并不算高。
一些游戲公司也會設計自己的編程語言,這樣既能建立自己的游戲生態(tài),也利于保密防外掛。這些年來也有越來越多的中國人加入到編程語言的研發(fā)行列,只不過設計的語言仍然有這樣或那樣的不足。
早在七八十年代,國內就出現(xiàn)了一款中文培基編程語言,是Basic語言的中文本地化版本;還有基于Python即時編譯語言的中文編程語言中蟒;專注于桌面軟件開發(fā),一直保持活躍更新的aardio;擁有獨立編譯器的知名中文編程語言易語言等等。
GitHub上一個名為“dongbei”的項目,由用戶zhanyong-wang開發(fā),是一個極具特色的東北話編程。這個語言把編程里的英文全部替換成了東北話,嘮嘮=print,沒毛病=true,整完了=end......
但是想要做出廣泛流行的國產編程語言卻不太容易。大部分得到承認的程序語言都有一個總體的設計哲學或是指導原則,用來組織關鍵字和語法,也就是交給程序員使用的指令集合,并形成一個邏輯上的整體。
Java 和 C++以自身更加精煉以及強大的語言屬性幫助谷歌把一件事做到了極致,那就是搜索,而PHP幫助 Facebook快速進行信息流、信息模塊等一系列新事物制造實驗。
編程語言的不斷進步,本質上是為了解決開發(fā)各個平臺以及平臺發(fā)展過程中現(xiàn)有編程語言難以解決的程序問題。
新語言誕生的原因,第一個需要考慮的是,程序員為什么花費時間精力重新學一門編程語言,這是否值得。在近幾十年的發(fā)展過程中,市面上商業(yè)的和開源的語言可以選擇的已經有不少,行業(yè)內對新語言的需求并不是太大。
而研發(fā)的新編程語言是否比現(xiàn)有語言更加優(yōu)秀或者擁有現(xiàn)有語言所不具備的優(yōu)勢,這將決定程序員是否有動力去學習并推廣一門新興編程語言。
至于第二個原因,新編程語言的誕生則很有可能是因為新的需求空間、新的生態(tài)形成所帶來,比如B語言、C語言的誕生。
20世紀60年代,美國AT&T公司貝爾實驗室研究員Ken Thompson(肯·湯普森)想玩自己曾經編寫的游戲Space Travel(星際航行),在編寫游戲運行的系統(tǒng)UNIX的過程中,為了讓游戲更加高效的運行,研發(fā)了B語言。
同樣酷愛Space Travel游戲的Dennis M.Ritchie(丹尼斯·里奇)也加入了Ken Thompson“游戲事業(yè)”中來,在B語言基礎上設計改進,C語言因此而誕生。相比B語言,C語言具備了良好的移植性,可以讓軟件移植到各種不同的硬件系統(tǒng)。
而華為選擇為HarmonyOS研發(fā)全新編程語言的原因顯然是后者。一方面,華為正在打造鴻蒙生態(tài),可以為新編程語言打開需求空間;另一方面,新研發(fā)的編程語言本質上可以幫助華為加強未來對鴻蒙生態(tài)控制以及編程語言標準的把持。
鴻蒙作為一款桌面操作系統(tǒng),擁有屬于自己的高級編程語言和編譯器是一個更好的選擇。比如可以支持鴻蒙的GUI開發(fā),因為GUI結構通常很復雜,通常需要一定的語言特性支撐,而且這個語言必須要與底層容易解耦。
“倉頡”再現(xiàn)的可能性有多大
實際上,在今年9月份,華為副總裁、計算產品線總裁鄧泰華在華為全聯(lián)接大會2021上接受媒體采訪時就提到:華為將推出自研的編程語言倉頡,將鴻蒙和歐拉系統(tǒng)在應用開發(fā)生態(tài)上進行打通。
而據(jù)天眼查專業(yè)版APP顯示,早在去年8月,華為就已申請注冊“倉頡語言”商標,只是目前尚不知曉“倉頡語言”是否就是“為HarmonyOS全新研發(fā)的編程語言”。
那么問題來了,華為為HarmonyOS研發(fā)全新編程語言的成功率大概有多大?能否確保它成為被廣泛使用并具備影響力的語言?
首先,研發(fā)編程語言雖然技術門檻不高,但同樣需要具備一定的實力才行。
因為編程語言只是提供了功能調用的使用框架罷了,完善的編程語言還需要在框架內做好填充。比如編譯型語言強調硬件資源的調用,腳本語言強調庫函數(shù)的調用。一門語言能操控多少硬件資源和調用多少庫函數(shù),是語言能否流行的重要因素。
而且,編程語言的每一次飛躍都會在編程思想、軟件實現(xiàn)、交互方式等方面帶來巨大地提升,但是有多少人有自信說自己寫的匯編代碼可以比C/C++經過編譯器優(yōu)化后的代碼更快?相信大多數(shù)人很難做到。
其次,華為打造的鴻蒙生態(tài)能為編程語言提供多大的需求空間。
在物聯(lián)網世界,不同的物聯(lián)網設備,可能應用開發(fā)者會采用不同的編程語言進行開發(fā),同樣有可能導致碎片化的風險。
目前所有應用生態(tài)幾乎全部基于智能手機平臺。雖然智能手表、智能電視、車機等IoT設備已經出現(xiàn)好幾年,但是生態(tài)發(fā)展緩慢。在物聯(lián)網設備越來越多的同時,設備協(xié)同能力不足的缺陷愈發(fā)凸顯,導致物聯(lián)網生態(tài)整體效率不高。
而統(tǒng)一的編程語言可以有效降低應用開發(fā)門檻,避免重復開發(fā)、二次開發(fā)的問題,幫助HarmonyOS實現(xiàn)彈性部署、超級終端、一次開發(fā)多端部署的核心價值。
余承東在今年的華為開發(fā)者大會上稱,自從今年華為P50系列上市,首次在智能手機上搭載,迄今已有超過1.5億設備使用HarmonyOS,包括智慧屏、平板、手表、智能音箱、IoT設備等。預計年底,搭載HarmonyOS的1+8產品將達到2億。
HarmonyOS給所有應用開發(fā)者提供分布式編程框架,讓大家用統(tǒng)一的編程語言,只寫一次的業(yè)務邏輯就能夠運行在所有設備上,可以最大限度地實現(xiàn)生態(tài)在各個孤立設備上的共享。
也就是說,華為相當于把研發(fā)的編程語言和鴻蒙生態(tài)進行了綁定,一榮俱榮,一損俱損。如果鴻蒙真的能挺過16%的生死線,并且站到物聯(lián)網生態(tài)的頂端,那么為鴻蒙自研的編程語言還是很有想象力的。如果鴻蒙的物聯(lián)網生態(tài)不太成功,自研的編程語言也很難發(fā)揮作用。
最后,還是要回到開頭所述:世界上并沒有完美的編程語言,任何語言在誕生之初,其缺陷就早已注定。
有些編程語言(例如Ruby和Ruby on Rails),由于運行時的速度和啟動速度不夠快,無法支持全面的商業(yè)產品。而有些語言(比如PHP),由于安全性的問題導致Facebook等公司逐漸放棄了使用。
這幾年來Java雖然保持著頑強的生命力,在 TIOBE 指數(shù)上穩(wěn)居榜首,也一直是 Android 開發(fā)的定義語言。但隨著 Kotlin 被更廣泛地采用,它的地位也受到了沖擊。
因此,大多數(shù)具有一定成熟度的系統(tǒng)或生態(tài)在發(fā)展的過程中,也有可能會再去選擇第二種語言,然后是第三種語言。時代在發(fā)展,語言在發(fā)展,系統(tǒng)的需求在發(fā)展,下一代程序員也在進步。
另外,開發(fā)效率和運行效率也像魚和熊掌一樣,兩者不可兼得。
如果研發(fā)的編程語言偏向底層,過于低級,雖然運行效率會比較高,但是開發(fā)起來比較困難,對于開發(fā)者不太友好;如果研發(fā)的編程語言偏向于高級語言,雖然開發(fā)程序容易,但是卻會犧牲運行效率,這也是華為需要去考慮的因素。
昔者蒼頡作書,而天雨粟、鬼夜哭。如今在這個互聯(lián)網時代,組成龐大數(shù)字世界的則是一行行代碼,華為能否真的在數(shù)字時代再現(xiàn)“倉頡”,令人期待。
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!