过去的 50 年,C 语言已经成为重要的软件开发语言。这里介绍了 2019 年它是如何与 C++、Java、C#、Go、Rust 和 Python 进行竞争的。
对于计算机编程语言来说,没有什么技术能流传使用 50 年,除非它比其他的都好用。C 语言于 1972 年面世,如今在软件世界仍保持着基本底层开发的主流语言的地位。
但有时一个技术能被长久的流传使用, 只是因为人们还没有找到一个更好的替代品罢了。在过去的几十年,涌现了大量的语言——有的专门为了挑战 C 语言的统治地位而设计,有的则因为其流行性而从侧面削弱了 C,感觉原文是这个意思。
真的很难证明 C 需要被替代。编程语言调查和软件开发实例都印证了可以用远比 C 好的方式来做事情。但 C 的地位仍岿然不动, 它的背后是几十年的调查和开发。几乎没有语言可以在性能上,在裸机上,或者在普遍性上打败它。即便如此,还是值得看一下 C 是如何在 2019 年与其他大名鼎鼎的语言进行较量的。
C vs. C++
很自然地,C 会被拿去与 C++ 做对比,从名字本身就能看出,C++ 是从 C 发展而来的。两者之间的不同就在于易扩展性,或者易用性,这取决于你问谁。
语法和方式上,C++ 与 C 语言比较接近,但 C++ 提供了很多原生 C 没有的、却比较有用的特性:命名空间、模板、异常、内存管理等等。项目如果对于性能比较敏感的话,例如数据库和机器学习,通常使用 C++ 编写来帮助系统提高性能。
除此之外,C++ 比 C 更容易扩展。即将到来地 C++ 20 甚至带来更多的新特性,包括模块、协程、一个同步库以及相关的概念,这些都让模板更易使用。对标准 C 的最新修订几乎没有新增特性,而是更注重保持向后兼容性。
事实上,所有 C++ 的优点也是它的缺点。最重要的一个点就是,C++ 的特性使用得越多就越复杂,结果就越加难以控制。那些把自己限制于 C++ 子集的开发者能避免很多严重的危害和过度使用。但有些机构想避免 C++