过去十年中C ++是如何变化的?

时间:2010-08-03 20:18:10

标签: c++

在过去的十年里,我几乎/很少使用C ++,现在看起来我将再次使用它。我很期待它,但不得不想知道自从我上次使用它以来它是如何改变的。

在过去十年中,是否有任何优秀/简短的网页,博客文章,甚至有关C ++如何变化的书籍?

请注意,此问题与语言,工具或有关使用C ++的其他信息有关。具体来说,我使用VC ++ 2008在Windows中工作。

6 个答案:

答案 0 :(得分:17)

虽然官方标准在过去十年左右没有太大变化,但有几件重要事情已经发生:

  • 虽然它还不是官方标准,但即将推出的新标准(通常称为C ++ 0x)“即将来临”。 GCC和MSVC 2010已经纳入了该新标准的重要部分,但我不确定它有多少共同用途。
  • Boost library已成为为该语言提供额外支持的主要参与者 - 以至于它对新标准产生重大影响
  • '基于模板的'编程技术变得越来越流行,可能超越了旧的'基于继承的'代码重用技术(当你上次查看C ++时,这可能已经进行得很好,这取决于你的商店可能有的影响当时一直在使用。)
  • 编译器(尤其是微软)在标准合规方面取得了很大进展

答案 1 :(得分:11)

最大的变化是C ++标准现在在所有主要编译器中都有效。像成员模板这样的东西曾经是不确定的。

答案 2 :(得分:10)

语言本身并没有太大变化。然而,最佳实践和习惯做了很多。

我建议你看一下Herb Sutter和Andrei Alexandrescu撰写的“C++ Coding Standards: 101 Rules, Guidelines, and Best Practices”一书,看看现代C ++的样子。

答案 3 :(得分:9)

我认为最大的变化之一是思维方式:很多人(终于!)意识到模板非常强大并且不需要太慢,并且使用STL和boost比10更广泛几年前。

答案 4 :(得分:2)

VS2008带有TR1,它是std的一个重要补充,它包含静态数组,引用计数指针等等。除此之外,最大的变化就是编译器编译标准定义的方式。

答案 5 :(得分:2)

一个有趣的问题,因为我正在为硬币编程C ++ 10周年。

我的个人观点是,我有点谨慎 - 但只是有点 - 因为我还没有看到它(虽然我想我可以猜到它是什么样的) - 强烈关注互联网回声室。确实,有些人已经完全厌倦了C ++的现代风格,一切都完全模板化,并使用现代技术让编译器完成其Prolog的最佳效果。然而,这当然不是普遍适用的,而且,主要的是,我今天看到的C ++代码在很多方面与十年前看到的C ++代码非常相似。

了解现代时尚是一个好主意,因为十年前有些罕见的东西(智能指针,常规使用RAII,标准库容器和东西)现在更常见。但除非你确定你将使用的代码是模板和提升等等,否则你很有可能使用与你曾经使用过的内容非常相似的内容。

说出来可能不合时宜,但这并不是真的:不管技术水平如何,很多人都不关心现代C ++。一些,因为他们不理解它。一些,因为他们确实理解它。对某些人而言,或许“关心”甚至不是正确的词 - 他们甚至不知道它存在。正如您可能希望这些人都做出相应的编码。

也许我会进入错误的圈子,但我的经验是那些没有或不能或不会用现代风格编码的人数超过那些可能做得很多的人。那些可能做的人,通常不会,因为他们的人数超过了他们。他们的代码被重写或忽略,直到他们开始编写其他人可以理解的东西。所以也许这很好,或者这很糟糕 - 在我看来,它几乎不相关,因为结果是一样的:如果你的经历结果与我的相似,你很有可能遇到今天的代码与你在1999年看到的非常相似。

P.S。 Nicolai Josuttis写了几本我最后一位雇主常驻模板专家似乎喜欢的书。还试试Modern C++ Design (Alexandrescu) - 现在可能有点过时,但它解释了许多原则。正如我从工作副本中略读一样,Herb Sutter's Exceptional C++给出了一些现代技术的概述,而不会在模板前面过于疯狂。当然boost演示了所有这些事情(以及更多 - 然后是一些奖励材料)在一系列编译器中付诸实践。

(希望上面的列表没有过时;正如我的回答可能暗示的那样,我发现更不需要及时了解C ++的最新趋势,而不是我预期的。)