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