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