达永编程网

程序员技术分享与交流平台

Go/Rust围攻下,为什么C语言从不被淘汰,还越活越滋润

编程圈大争论:C语言凭什么活到今天?RustGo的"安全牌"真能打趴它吗?

最近后台收到一条留言:"现在Rust和Go都吹得天花乱坠,内存安全、并发简单,那C语言这种老古董怎么还不淘汰?"我盯着屏幕笑出了声——这不就是十年前Java火的时候,大家问C++什么时候消失的翻版吗

说来有趣,编程语言圈子的鄙视链就像北京二环的房价,永远在变又永远不变。可C语言就像胡同口晒太阳的老大爷,任你高楼起高楼塌,人家捧着搪瓷缸子悠然自得。今天咱们就掰扯掰扯,这个1972年诞生的"活化石",凭什么在RustGo的围剿下还能活得这么滋润?

"手动挡"的倔强性能与控制力的终极诱惑

都说现代人开车要自动挡才会觉得舒适,可F1赛车为何还需手动换挡呢?C语言简直就是编程界的“手动挡”,其方向盘和油门直接与发动机相连。你瞧Linux内核是用C写的,能够每秒处理上百万个网络包;在Windows系统中,最为核心的驱动模块,哪一个不是靠C语言在背后支撑呢?

这就像顶级大厨的那把菜刀,嗯虽然新手在使用时很容易切到自己的手,但是高手用起来却能够雕出精美的萝卜花。去年的时候,有一个从事自动驾驶工作的朋友告诉了我,他们的激光雷达的实时处理算法必须要用C语言重新写一遍,毕竟用Go语言编写的版本会多3毫秒的延迟——仅仅这3毫秒,或许就是决定是否会发生车祸的生死线。

"安全牌"的真相C语言真就赤手空拳?

Rust粉丝总爱说:"我们编译器自带保镖,内存错误无处遁形!

"这话不假,但说C语言就活该天天出漏洞,那可真是冤枉了

还记得2014年的Heartbleed漏洞吗?

OpenSSL团队后来,硬是凭借着代码审查以及静态分析,将这种史诗级的漏洞给按在了地上进行摩擦。

现在大厂用C写核心系统,哪一个不是带着像“金属探测器”一样的Valgrind在代码里来回扫雷呢?而且其实很多时候,它就像是一个细致入微的“侦探”能帮我们找出那些隐藏在代码深处的小问题。

说白了安全这事儿呢,就如同炒菜放盐一般。Rust宛如那自动控盐机,而C语言则需自己去掂量着放。不过说真的,你瞧那米其林大厨,又有几个会使用自动控盐机的呢?去年微软把Windows内核的C代码全面接入Clang静态分析,结果那漏洞率竟然直接腰斩了。而且现在这个年头呀,会写C的大佬们,那可是兜里都揣着十八般兵器呢。

未来的剧本:谁在蚕食谁的地盘?

说句扎心的,现在学Rust的年轻人或许不知晓,他们所使用的诸多底层库依然是C编写的。就如同乘坐高铁的乘客无需知晓铁轨是如何炼制的,不过铁轨终归是由C语言这类“基建狂魔”铺设而成的。今年有个从事区块链的小伙向我倾诉:“用Rust编写智能合约确实畅快,可是一旦要与硬件钱包进行交互,难道说不是还得调用C的FFI接口吗?”

但咱也不能装作看不见,Go在云原生领域着实表现得极为出色,Docker、Kubernetes这些当下非常热门的技术,而且它们都与Go有着紧密的联系。可你要是打开阿里云的飞天系统瞧一瞧,在最考验性能的存储模块那里,全部都是C代码。这就如同电商领域的激烈竞争一样,Go负责前端那五彩斑斓的景象,而C则在后台默默地承担着重任。

程序员的分水岭:工具还是手艺?

最近有个比喻特别火:“Rust是预制菜,C语言是农家乐。”预制菜安全卫生,而且总少了那锅气;农家乐可能会吃坏肚子,不过说真的,那份烟火气无可替代。我认识个做工业控制的老工程师,至今坚持用C写PLC程序,他说在这行当里,指针就仿佛是我的第三只手。”

反观现在的编程教育,很多培训班把语言当作说明书来教。可真正的好程序员应该像木匠挑选刨子一样,清楚地知道什么时候用电动工具,而什么时候又必须亲手制作。去年有一个MIT的年轻人用C语言重新编写了Python的某个存在性能瓶颈的模块,速度直接提升了20倍。这样的话,你会发现老手艺在遇到新场景时,依然能够创造出精彩。

编程语言的"无限游戏"

说到底编程语言,从来都不是你死我活的拳击赛,而是共生共荣的生态圈。C语言就像编程界的拉丁文,虽然不再时髦,但是解剖学还得靠它打基础。而那些嚷嚷着要淘汰C语言的,或许还没见过凌晨四点的内核代码——那里面跳动的,可是整个数字世界的脉搏。

所以下次再有人问你"C语言怎么还不死",不妨反问他:"故宫修文物的老师傅怎么还没下岗?"有些手艺啊,越是智能时代,越显弥足珍贵

关注我,解锁更多优质资源~

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言