c++是一门很好的语言
一两个星期前,我说c++不是一种很好的语言,在另一个问题上我几乎被私刑了。现在我试着反过来说。;)
不,认真地说,我当时想说的是,c++有很多缺陷,现在我还会再试一次。这一点很难否认。它是如此的复杂,以至于学好它实际上是一件你可以奉献一生的事情。它使许多常见的任务变得不必要的困难,允许用户一头扎进未定义的行为和不可移植的代码的海洋,而编译器没有给出警告。
但它并不是许多人试图创造的那种无用、破旧、过时、令人讨厌的语言。它不应该被掩盖和忽视。没有它,世界不会变得更好。它有一些独特的优势,不幸的是,隐藏在古怪的语法,遗留的麻烦,尤其是糟糕的c++老师背后。但是他们就在那里。
c++有许多我在用c#或其他“现代”语言编程时非常怀念的特性。其中有很多c#和其他现代语言可以学习的地方。
它并没有盲目地专注于OOP,而是探索并开创了泛型编程。它允许惊人地表达编译时元编程,生成极其高效、健壮和干净的代码。在c#出现LINQ或lambda表达式之前,它从函数式编程中吸取了近十年的经验教训。
它允许您通过静态断言和其他元编程技巧在编译时捕获数量惊人的错误,这极大地简化了调试,甚至在某些方面胜过单元测试。(我宁愿在编译时捕获错误,而不是在之后运行测试时捕获错误)。
变量的确定性销毁允许RAII,这是一个非常强大的小技巧,使try/finally块和c#使用块变得多余。
虽然有些人指责它是“由委员会设计的”,但我会说,是的,它是,在这种情况下,这实际上并不是一件坏事。看看Java的类库。又有多少类被弃用了?有多少不应该使用?有多少是相互复制的功能?有多少设计糟糕?
C++'s standard library is much smaller, but on the whole, it's remarkably well designed, and except for one or two minor warts (vector<bool>, for example), its design still holds up very well. When a feature is added to C++ or its standard library, it is subjected to heavy scrutiny. Couldn't Java have benefited from the same? .NET too, although it's younger and was somewhat better designed to begin with, is still accumulating a good handful of classes that are out of sync with reality, or were badly designed to begin with.
c++有很多其他语言无法比拟的优点。这是一门很好的语言