前些年實(shí)際上C 語(yǔ)言一度很尷尬,開(kāi)發(fā)復(fù)雜應(yīng)用被java替代了很多,在底層驅(qū)動(dòng)和操作系統(tǒng)內(nèi)核領(lǐng)域又打不過(guò)C語(yǔ)言,所以不斷走下坡路,甚至有人說(shuō)C 要被淘汰了。
不過(guò)這兩年情況有變化,C 又在不斷上升回血,反而是java在下降了。為什么?
語(yǔ)言本身并沒(méi)有絕對(duì)的好壞,而只有自身特點(diǎn),不過(guò)是看誰(shuí)更能迎合時(shí)代特征誰(shuí)就上升而已。
前些年java不斷上升的主要原因是,不管PC還是智能手機(jī),硬件性能和配置都在不斷升級(jí),pc有intel不斷擠牙膏搞升級(jí),手機(jī)有arm不斷爬山提性能,所以O(shè)EM和應(yīng)用開(kāi)發(fā)者根本不管編程語(yǔ)言的性能問(wèn)題,反正躺著等下一代性能更強(qiáng)的硬件就行了嘛。
反倒是應(yīng)用的穩(wěn)定性,和快速開(kāi)發(fā)的響應(yīng)能力更重要,是生命線,所以java脫穎而出。java比c 最大的特點(diǎn)就是垃圾回收機(jī)制,這極大降低了程序員的負(fù)擔(dān),用java寫程序輕松多了,還不容易segmentation fault,所以java越來(lái)越擠壓了c 的空間。而且培養(yǎng)一個(gè)java程序員比培養(yǎng)一個(gè)c 程序員快很多,快速發(fā)展的行業(yè)非常缺人,那當(dāng)然是用java了。
明白了這個(gè),就能明白這兩年為什么c 又回來(lái)了,又回暖開(kāi)始逆襲了。
首先,這兩年cpu和內(nèi)存戰(zhàn)爭(zhēng)明顯放緩了,大家看看是不是pc和phone的主體配置都不再拼命增長(zhǎng)了?那硬件配置和性能不漲,應(yīng)用廠商的競(jìng)爭(zhēng)就變成了誰(shuí)能做的更流暢更舒服誰(shuí)就贏,這時(shí)候c 比java的性能優(yōu)勢(shì)就又有意義了。
其次,硬件性能遭遇了摩爾定律失效威脅。以前臺(tái)積電等半導(dǎo)體制造業(yè)突飛猛進(jìn),不斷提升工藝,所以硬件性能飛速發(fā)展。但是到了7nm后再往下越來(lái)越難,投資高很多倍,一款5nm? 3nm芯片設(shè)計(jì)帶流片動(dòng)不動(dòng)上十億美元,不慫不行啊。大家都怕了硬件創(chuàng)新了,那就在軟件上多挖掘一下潛力吧。所以c 又比Java香了。再加上新冠疫情導(dǎo)致的全球缺芯片,再給這種趨勢(shì)加了碼!
最后,復(fù)雜操作系統(tǒng)的中間件的宿舍也是java轉(zhuǎn)向c ,這里有兩個(gè)例子。一個(gè)是華為HarmonyOS相對(duì)于安卓,前者的framework就是c 實(shí)現(xiàn)的,比安卓的Java framework體積更小效率更高。另一個(gè)例子是智能汽車的中間件(參考autosar ap)也是c 來(lái)實(shí)現(xiàn),這主要是為了代碼的確定性和安全性,高效率。這些都是java的致命傷。
大家不妨去看看c 的代表性成功項(xiàng)目,opencv opengl ffmpeg qt等,就能略略品出其中的味道了。
所以,學(xué)好C后,繼續(xù)去掌握C 吧,在當(dāng)前這波趨勢(shì)下,至少未來(lái)十幾年C 都是升值區(qū)間,值得擁有!
最后,歡迎留言寫出你的看法!