尽管C编程语言早在1972年就已发布,但它仍是当今使用最广泛的语言之一,并且按照当今的标准存在许多限制和缺陷。 这就是为什么应该替换C的关键原因。太多关键软件都是用C / C ++编写的,其含义广泛。一个示例是OpenSSL之类的库中的错误。众所周知,C在捕获诸如缓冲区溢出之类的问题方面表现不佳。C是一种允许您以多种方式让自己陷入麻烦的语言。 但是如果C太糟糕了,为什么还没有被替换呢?有很多原因。在某种程度上,它已经被替换了。Java,C#,C ++和许多其他语言已经接管了以前用C完成的任务。 因此,这实际上是关于剩下的那种软件,其中C仍然占主导地位:
- 操作系统内核。如Linux
- 微控制器
- 视频编解码器
- 共享的低级库,例如OpenSSL
- Unix命令行工具,如ls,cat和git
- 现有的C库易于重用。Ada,Modula-2等在很大程度上失败了,因为您无法在大型C生态系统中有效使用它们。
- 以已建立的知识和惯例为基础。Go确实很快就可以使用,因为尽管语法有所更改,但API和编码方式与C程序员非常相似。
- 没有垃圾收集/手动内存管理。C在需要严格控制内存使用的区域中占主导地位。在这个空间中,垃圾收集机制不会动摇它。这就是阻止Go完全替代C的原因。
- 小二进制文件。像C一样,Zig例如允许您制作很小的二进制文件。如果要在嵌入式空间中使用其他语言,则不能使用会产生较大二进制代码的语言(例如Go)。
- 系统级友好。您需要能够操纵位和字节。您需要良好的二进制运算符和指针。在过去的几十年中,许多语言都没有正确的指针。Java使指针成为一个脏话,但Go却部分地将其带回来。
- 逐步替换C代码。与C具有很好的二进制兼容性。