为什么C语言从不被淘汰?那些Rust/Go吹嘘的安全特性,C语言真的做不到吗?
更新于:2025-03-24 11:40:54

简单说,C语言就好像这玩意儿一样。和最新的车比,它的确很危险。比如新车有盲区提示它没有,新车有牵引力控制它没有,新车有自动防撞系统它没有,新车有不系安全带提示它还没有……

但,行车安全在驾驶员的脑子里,不在这些系统上。

你不看后视镜,那么盲区提示就毫无意义。

你不知道雨天路滑很危险,那么有牵引力控制给你壮胆,你只会死的更快。

你跑到大货前急刹车,自动防撞系统可没能力把你抬起来。

机油灯警告你仨月了你都没注意到,安全带警告你只知道嫌弃它吵……

车再好再新再先进,让这种人开……

写程序比开车这种粗笨活可麻烦多了。

会泄露的不仅仅是内存;会非法访问的也不仅仅是指针。

或者说,内存、指针这些东西太简单,所以才能“自动解决”——所以才有那么多吹“安全特性”的垃圾语言。

而真正复杂、真正危险、真正令老程序员们头痛的,什么数据竞争,脏读脏写,时序紊乱,循环等待,优先级翻转,权限漏洞……

一个个嘴巴往屁股下一坐,再没人吱声了。

所以,当年Linus说的极不客气:哪怕仅仅是把那些只知道新特性的垃圾程序员踢走,选择C都是值得的。

当然,安全特性并不是坏东西。就好像盲区提醒牵引力控制哪怕对老司机也有用一样。能省点力气、能少考虑点麻烦事,终归是好的——倘若不需要付出可读性、性能等方面的代价的话。

很遗憾,现实是,除了Rust处理的还算好,别的引入一堆“好用的新特性”的语言,无不搞的一地鸡毛——拿来写个demo写个简单的玩具项目写点简单快捷的互联网项目,的确很好用。但一旦遇到稍微复杂、要求稍微高一点、对整个计算过程控制精细一点的项目……

今天天气不错。