如何复兴C ++技能
我是一名C ++开发人员(主要是ATL / COM人员),直到我们当中很多人切换到Cin2001. 从那时起,我并没有做太多的C ++编程。
我们对如何恢复C ++技能有任何建议吗?在过去的几年中,C ++发生了什么变化?是否有涵盖该语言的好书,文章或者博客。问题在于,我能找到的大多数材料或者针对的是该语言的新手,或者具有丰富的经验。
哪些C ++库最近很流行?我想我将需要阅读STL,因为我使用的并不多。还有什么?促进? ATL? WTL?
解决方案
为了提高C ++技能,我建议我们仍然可以访问一些旧的C ++代码。重新访问它有望触发切换到C:之后处于休眠状态的大脑部分:)
对于库来说,STL是好的,然后提升。我认为ATL / WTL不会在2001年带来太多新东西。
刚开始一个项目。我们使用的库将取决于项目,但是我们当然应该阅读STL。如果我们很长时间没有使用C ++,则可能需要了解有关模板的更多信息。
首先,我想说尝试编写在Mac和Windows或者Linux和Windows上都可以使用的代码。这将迫使我们编写比在Visual C ++上可以摆脱的C ++代码类型更具可移植性的代码,当我们跨平台使用时,有很多更好的地方是非常不同的。
如果我们可以先完善ANSI C ++游戏,我建议暂时不要使用库。我还建议我们阅读C ++ 0x,下一个标准即将推出,它将进一步努力。为此,请仔细阅读STL(其背后的概念,而不是太多的实现)和模板。
如果我们想尝试BOOST,请继续,但是通常无需使用它就可以解决。我之所以不这样做,是因为使用了模板来执行所需的操作,一旦引入了新的标准,其中的许多操作将变得更加容易。
更新:一旦我们对STL感到满意,并开始需要使用STL进行大量代码处理或者非常棘手的事情,然后转到BOOST。在BOOST上购买一本书,并仔细阅读并理解。
尽管有了Boost,但其他的图书馆都在那时,只是相对较新的地方,它才有很大的发展。 Google也适用于TR1和c ++ 0x标准。我们应该明确阅读STL,因为(IMHO)它使C ++变得特别。
ATL是一种可靠的技术(不要误会我的意思,我喜欢它并且仍然在使用它,但是它在MS世界中已经不再流行)。
QT之类的东西对于C ++开发人员来说可能更新颖,更酷,并且具有将我们带入所有新的Linux和Web开发的优势,而这些新的Linux和Web开发将在未来几年内越来越流行。
但是,一旦我们开始考虑可以做的事情,我认为一切都会很快回来。
取一些旧代码并添加到其中。这不会使我们重新掌握最新的C ++趋势,但会让我们陷入困境。
在我的工作中,我不得不向C ++ ActiveX控件中添加一些功能,多年来我一直没有接触过C ++,并且从未做过专业的工作。搞清楚如何再次做,实际上真是太酷了。
我个人发现,当我回到很长一段时间都没有使用过的语言时,语法是我最需要掌握的地方。但是概念和语言的含义在内存中保持不变。
假设它与我们相同,那么我想说,重新审视我们记得在学习C ++时对我们有用的教科书是一个好主意。我建议在C ++中使用Thought,以快速掌握语法。
STL是非常有用的,是的。那是我发现所有成熟的C ++程序员都普遍赞赏的一件事。了解Boost提供的库将很有用。
C ++世界的变化取决于我们喜欢的编译器已决定实现的变化。由于我们提到过AT1 / COM,所以我假设它是VC ++。对MFC的更改将支持Windows窗体(2005 vc ++)和Vista兼容的uI和功能区支持(?)(2008 Vc ++)
VC ++现在支持托管C ++-我确定我们知道Cworld 2008提供的功能也添加了对托管STL的支持。
VC ++试图更加符合标准,并在该领域取得一些进展。
他们引入了许多安全功能,这些功能会贬低诸如strcpy之类的旧std,并且如果我们使用旧的fns,编译器也会发出警告。
VC ++ 2005还具有一种称为函数属性的功能,它用于描述参数,以便可以对传入的输入进行更多检查,并在看到不正常的情况时静态标记警告。有用的人会说,尽管我们的商店尚未升级到使用2005编译器。
MSDN列出了每个版本的重大更改。 Oh&Windows 95,Windows 98,Windows Millennium Edition和Windows NT 4.0的支持已从VC ++的2005版本中删除。此外,我们到目前为止所需的核心库(CRT,ATL,MFC等)现在支持新的部署模型,该模型使它们共享侧系统组件并需要清单。
此链接应该使我们进入http://msdn.microsoft.com/zh-cn/library/y8bt6w34.aspx
2008年甚至添加了更多类似Tr1的建议,更优化的编译器,并行编译(/ mp),对新处理器体系结构的支持等。我还记得其中一种对Open Mp的支持也得到了增强。
再次参考MSDN,这就是所有答案的答案。
祝你好运。
我也遇到了类似的情况:从C ++切换到Cin 2005,然后在2007年又切换回C ++。我不能说C ++世界在那两年中确实发生了变化。最关键的是要恢复我的记忆管理本能,但这只能通过练习来实现。
现在我们已经掌握了C ++和.NET,我们可能想稍微学习一下C ++ CLI(后期的" Managed C ++"的新形式)。
至于书籍,请阅读封面上的"迈尔斯"和"萨特"一书。
使用C ++重写一些Cstuff
一定要阅读Scott Meyers的最新版本的" Effective C ++"。我还将推荐Stephen C. Dewhurst撰写的" C ++技巧:避免编码和设计中的常见问题"。
挑选一种C ++单元测试框架(我建议使用Google C ++测试框架,也称为" gtest")。选择一个可以从头开始的小项目,然后尝试一些TDD。 TDD会鼓励我们采取一些小步骤并反思代码。同样,在构建单元测试套件时,它为我们提供了基础,我们可以从中试验不同的技术。