第三个语言是否会取代 C 和 C++ 成为一种新的现代低级语言,C++ 会完全取代 C 吗?
我想总结一下,由第三种语言替换 C 或 C++ 将是困难的,因为它们都具有至高无上的历史意义。
取代这将需要非凡的激励,比如可能导致无法为现代硬件编写高效的软件。我们可能离那个点不远,因为有越来越多的尝试来实现这一点。这就是我理解 D、golang 或 Rust 兴起的方式。我不确定这些会不会成功(我相信 D 已经失败了)但人们正在越来越努力地尝试。
现在 C 和 C++ 有什么问题?
C肯定是不够的。它只是一个在 70 年代设计的具有当时编程范式(结构化编程)的便携式程序集。 C 设计也非常接近操作系统内核和系统硬件。
C 仍然非常强大,但它有缺点,因为概念、编程范式和硬件都在发展。
C++ ,它首先向 C 添加(某种)面向对象的支持,然后是模板元编程,然后是大量的东西和概念。基本上这个想法是 让C++ 拥有一切,而不仅仅是一种多范式语言。
C++ 并不具备其他语言的所有功能。例如,我相信对于并发支持、自动化和细粒度控制内存管理或适当的模块,有一些重要的东西需要添加。而且 C++ 人正在努力把这一切都做出来,甚至使它有效,他们最终会成功。
当然这是有代价的:C++ 是非常复杂的野兽,掌握它的人并不多(而对于一个经验丰富的低级程序员来说,掌握 C 可能只是几个星期的问题)。 C++ 语法很麻烦。在语法和概念层面编写不可维护的代码非常容易。引入非常微妙的错误真的很容易。我们过去常说 Perl 难以阅读和维护,但是C++ 更上一层楼(这样说只是可能 C++ 试图拥有每种语言的所有功能)。当然,您也可以编写非常易于维护和可读的代码,一些 C++11 的演变就是这样。
但是问题在于,据我所知,C++ 永远不会删除任何东西,只是一次又一次地添加新功能。如果您这样做,您将永远不会简化语法或概念。
在大学期间,我有个老师编写了一个针对实验硬件的简单 C 编译器。它确实不完全兼容 C,但足以编译 95% 的野外和测试硬件架构程序。它基本上是您为 CUDA GPU 编程获得的 C 编译器的子集。
其实最终来说,有第三方语言总是会想着去取代C/C的地位,确实有很多可能与他并肩的语言。但是始终没有成功,也许若干年后会成功。但是终归不是现在,而C++更不可能来取代C语言了,我相信原因你们也知道的。
领取专属 10元无门槛券
私享最新 技术干货