用C或C++编写编译器?

H.J*_*sef 3 c c++ comparison compiler-theory

我想为自定义标记语言编写一个编译器,我想获得最佳性能,我也希望有一个良好的可扩展设计.

多范式编程语言(C++)更适合实现现代设计模式,但我认为这会稍微降低性能(例如,考虑RTTI),或多或少可能使C成为更好的选择.

我想知道什么是最好的语言(C,C++甚至是目标C),如果有人想要创建一个快速,高效和精心设计的现代编译器(在遵守作为软件的现代软件工程原理的意义上).

Jer*_*fin 18

C中的"昂贵"功能(例如,异常,虚函数,RTTI)在C中根本就不存在.当你用C模拟它们时,你可能最终得到的东西至少和它一样昂贵.在C++中,但很少有人知道,少有记载,等等.(让我们面对现实吧:编译器作者不傻-虽然它可能可以实现比他们的特征"更好",这是不是真的特别有可能).

在另一个方向上,模板(例如)通常使得编写代码相对容易,这比C中实际要快得多.仅举一个明显的例子,使用的C++代码std::sort通常是等效C的两到三倍.代码使用qsort.

结论:如果你决定(无论出于何种原因)编写较慢的代码,那么C++程序比用C语言编写的等价程序要慢的唯一原因.常见的原因是简单和可读性-在大多数情况下,那些比执行速度更重要.尽管如此,使用C++并不一定会带来任何速度惩罚.决定是否做一些可能运行得更慢的事情完全取决于你.

  • 我不相信Objective C比C++具有性能优势.实际上,恰恰相反,两者具有相同/一致的特性,C++版本通常具有更好的性能.Apple的偏好似乎是基于对其当前代码库的大量投资,而不是性能. (3认同)