為什麼C語言從不被淘汰?那些Rust/Go吹噓的安全特性,C語言真的做不到嗎?
更新于:2025-03-25 22:37:04

簡單說,C語言就好像這玩意兒一樣。和最新的車比,它的確很危險。比如新車有盲區提示它沒有,新車有牽引力控制它沒有,新車有自動防撞系統它沒有,新車有不系安全帶提示它還沒有……

但,行車安全在駕駛員的腦子裡,不在這些系統上。

你不看後視鏡,那麼盲區提示就毫無意義。

你不知道雨天路滑很危險,那麼有牽引力控制給你壯膽,你只會死的更快。

你跑到大貨前急剎車,自動防撞系統可沒能力把你抬起來。

機油燈警告你仨月了你都沒注意到,安全帶警告你只知道嫌棄它吵……

車再好再新再先進,讓這種人開……

寫程式比開車這種粗笨活可麻煩多了。

會洩露的不僅僅是記憶體;會非法訪問的也不僅僅是指標。

或者說,記憶體、指標這些東西太簡單,所以才能“自動解決”——所以才有那麼多吹“安全特性”的垃圾語言。

而真正複雜、真正危險、真正令老程式師們頭痛的,什麼數據競爭,臟讀髒寫,時序紊亂,迴圈等待,優先順序翻轉,許可權漏洞……

一個個嘴巴往屁股下一坐,再沒人吱聲了。

所以,當年Linus說的極不客氣:哪怕僅僅是把那些只知道新特性的垃圾程式師踢走,選擇C都是值得的。

當然,安全特性並不是壞東西。就好像盲區提醒牽引力控制哪怕對老司機也有用一樣。能省點力氣、能少考慮點麻煩事,終歸是好的——倘若不需要付出可讀性、性能等方面的代價的話。

很遺憾,現實是,除了Rust處理的還算好,別的引入一堆“好用的新特性”的語言,無不搞的一地雞毛——拿來寫個demo寫個簡單的玩具專案寫點簡單快捷的互聯網專案,的確很好用。但一旦遇到稍微複雜、要求稍微高一點、對整個計算過程控制精細一點的專案……

今天天氣不錯。