C 语言已死?

C 语言已死?

C编程语言很糟糕。我的意思是,宏伟也是。我们生活的大部分世界都建在了C的上面。它几乎是所有计算机编程的基础,无论在历史上还是实践上都是如此。有一个原因是Xavier Niel的革命性“42”学校的课程开始于学生学习如何从头开始重写标准C库函数。但C已经不适合C建立的这个世界。

我的意思是“令人畏惧”,而不是“坏”意思。C已经变成了怪物。它为用户提供了太多的火炮,可以用它们的脚步射击。大量的经验告诉我们所有人,困难的方式是,编写大量的C代码并不存在安全漏洞,这非常困难,接近“基本上不可能”。正如我两年前写的那样,在我的第一部死亡至C片中:

原则上,随着软件的发展和成熟度越来越高,安全漏洞应该会变得越来越巴洛克式......但是用C / C ++编写的软件并不是这种情况。缓冲区溢出和悬挂指针导致了灾难性的安全漏洞,一如既往,就像昔日一样,就像过去几年一样。

我们再也承担不起庞大的安全盲点。退休并用另一种语言取代它已经很久了。麻烦的是,大多数现代语言甚至不会试图取代C. [...]他们不擅长C最擅长的事情:慢慢走向裸机并以马赫的速度工作。

如果你是你已经知道我要去哪里,当然,开发者:吹捧锈,其中的优点是,实际上,一个可行的C / C ++更换。两年前,我建议人们开始在Rust中编写新的低级编码项目,而不是C编写。毕竟,洞的第一个规则是停止挖掘。

使用C编程时的安全提示(2017年版):

1)停止输入

2)删除您已输入的内容

- ryan huber(@ryanhuber)2017年6月21日

今天,我认真地提出,当工程师重构现有的C代码,尤其是解析器和其他输入处理程序时,他们会慢慢地,一点点地用Rust来代替它。根据这个杰出的Geoffroy Couprie帖子:

我们必须做点什么。我们必须加强我们的软件基础。这意味着修复操作系统,驱动程序,库,命令行工具,服务器等等。我们今天或明年可能无法解决大部分问题,但也许10年后情况会有所改善。

不幸的是,我们不能重写所有的东西。[...]我所倡导的要简单得多:通过手术取代较弱的部分,但保持大部分项目完好无损。[...]实际上,您可以在现有项目中使用一段C代码,导入C结构和函数以从Rust访问它们,在Rust中重写代码,从Rust导出函数和结构,编译它并将其与项目的其余部分。

当然,Rust不是万能的,还有许多其他有价值的方法可以提高软件的稳定性和安全性。(例如正式验证或Langsec运动)。但这是一种似是而非的有价值的迭代方法,我们只会反复地从我们巨大的集体安全漏洞中挖掘出自己,一个更好的代码和更好的工具时间。我们越早开始挖掘,C就越早缓慢地氧化生锈掉。

¥38.8
购买

相关推荐