为什么在L2 / L3 / L4开发项目中不使用c ++

时间:2012-07-06 05:21:36

标签: c++

我参与了许多c ++项目,主要涉及与VOIP协议相关的应用领域。现在我必须转到L3,L2协议开发项目,我发现'C'是L2 / L3 / L4开发人员的首选语言。

现在我想知道设备固件相关的应用程序,为什么协议是使用石器时代语言开发的。为什么人们不接受OOPS技术的好处?如果我试图说服他们切换到c ++,那会谨慎吗?团队中的大多数开发人员都是C专家,不熟悉C ++。

2 个答案:

答案 0 :(得分:5)

继续使用C有几个原因。

  1. 现有C项目。谁愿意将它们转换为C ++?
  2. 每个平台都没有C ++编译器(质量好)。
  3. 心理原因。按值传递和返回对象时,会向左和向右创建临时对象。这对于小型系统来说并不适用。人们并不真正理解传递和返回引用完全解决了这个问题。还有其他类似的问题。
  4. 最后。 C有什么问题?有用! (不要修复未破坏的东西)。
  5. 可以在C ++上编写与C相同的高性能代码,但这需要更好的理解,培训和代码控制规则。常见的看法是这些缺陷是不可避免的。

答案 1 :(得分:2)

如果你认为C只是一种“石器时代语言”,那么我认为你误解了为什么人们继续使用它。我喜欢并使用C和C ++。我喜欢他们,原因各种各样,以及各种问题。

C语言提供了一个计算机模型(大多数)完整且非常容易理解,很少有惊喜。 C ++提供了一个非常复杂的模型,并要求程序员理解很多细微差别以避免令人讨厌的意外。 C ++编译器自动执行大量操作(调用构造函数,析构函数,堆栈展开等)。这通常很好,但有时它会干扰跟踪错误。一般来说,我发现使用C和C ++很容易用脚射击自己,但我发现在C中进行足部手术更容易,只是因为它是一种更简单的语言模型。

计算机的C型号尽可能接近装配,同时仍然具有合理的便携性。该语言几乎不会自动执行任何操作,并允许您进行各种疯狂的内存操作。这允许不安全的编程,但它也允许在非常少的意外环境中进行非常优化的编程。很容易确切地告诉C代码行的作用。在C ++中,编译器可以为您创建和销毁临时对象。我已经有了C ++代码,其中需要进行分析以显示自动析构函数正在吃掉大量的循环。这种情况从未发生在C中,其中一行代码几乎没有意外。今天这个问题比过去少; C ++编译器在优化许多临时工作方面已经做得更好。但它仍然是一个问题,特别是在内存(包括堆栈空间)经常紧张的嵌入式环境中。

最后,用C ++编写的代码通常会慢慢编译 。罪魁祸首通常是模板,但是消除模板通常会使你的C ++代码看起来很像C.而且,我真的不能夸大这会影响生产力的程度。当您的debug-fix-recompile-test周期受编译时间的限制时,它会降低工作效率。是的,我知道并喜欢预编译的标题,但它们只做了很多。

不要在这里得到我反C ++的印象。我喜欢并使用这种语言。拥有类,智能指针,std :: vector,std :: string等是很好的。但是有一个原因是C还活着并且踢。

对于不同的观点,以及一个坚定反C ++的观点,你至少应该略过{+ 3}}关于C ++的观点。他的论点值得思考,即使你不同意他们。