C ++程序员需要了解哪些技术?

时间:2008-09-30 09:36:15

标签: c++

C ++是我真正参与的第一种编程语言,但我的大部分工作都是学术或游戏编程。我所居住的大多数编程工作都需要Java或.NET程序员,除了基本语言之外,我对他们需要哪些技术有相当好的了解。例如,Java程序员可能需要了解EJB,Servlets,Hibernate,Spring以及其他技术,库和框架。

但是,我不确定C ++。在现实生活中,对于一般的业务编程,除了语言特性之外,C ++程序员还需要了解什么?像Win32 API,某些库,框架,技术,工具等等。


编辑:当我说基本语言时,我也在考虑标准库,如果错误或不清楚,请对不起。我想知道是否有更多特定的域要求类似于Java或.NET程序员可能需要学习的所有技术,以及C ++程序员通常需要知道的内容。我同意标准库和Boost是必不可少的,但除此之外还有什么,或者每个公司/项目/域都有什么不同?

10 个答案:

答案 0 :(得分:32)

至于每种语言,我认为有三种相互关联的知识水平:

  1. 掌握你的语言。每个程序员都应该(尽力而为)掌握语法。实现这一目标的好参考是:
  2. 广泛了解您的图书馆。
    • STL绝对是必须的,因为它已被包含在C++ Standard Library中,所以知道它非常接近第1点:你必须掌握它。
    • 了解boost可能非常有趣,作为一个多平台和通用库。
    • 了解您应该使用的库,无论是Win32 APIOCCIXPCOM还是UNO(这里只是一些示例)。如果您开发纯图形组件,则无需了解数据库库...
  3. 培养您对模式的了解。这里无法避免Design Patterns: Elements of Reusable Object-Oriented Software ......
  4. <小时/> 因此,我对您更新的问题的回答是:了解您的语言,了解您的平台,了解您的域名。我认为这里有足够的工作,特别是在C ++中。这是一项永远不容忽视的工作。

答案 1 :(得分:16)

C ++开发人员必须找到stdboost个库。

其他技术列表在很大程度上取决于项目类型。当然,您将与SO进行一些互动,因此您需要了解您所在环境的API。

对于数据访问和其他东西,有很多不同的解决方案。在这个意义上,C ++比一些管理的lang更丰富。 99%的旧流行系统都有C / C ++接口。

在你对我的回答的评论中澄清了你的问题后,我可以推荐:

  • 良好的代码浏览器(例如SourceInsight或了解C ++)
  • 静态分析工具(Link,KlockWork Inforce等)
  • MySQL \ SQLite(我在大量的C ++项目中遇到过这些数据库)
  • UI技术(OpenGL \ GLUT,DirectX,GDI,Qt等)

答案 2 :(得分:6)

作为C ++程序员应该知道的技术(因此在技术上比较小的程序员知识更多;)):

性能问题 - 什么使事情变得缓慢,如何找到并解决这些问题。我还指上下文切换,缓存行,优化搜索,内存使用和约束以及普通VB / C#开发人员不关心的类似内容。

线程问题 - 如何从多线程应用程序中获得最大收益,如何检测和修复相同的滥用行为。

低级别通信 - 特别是能够连接到其他人没有为其编写工具包的模糊系统(特别是无线电通信),延迟和带宽管理。

否则,对于特定工具 - 它取决于您的目标,Windows开发与Linux不同,与嵌入式不同。

答案 3 :(得分:4)

答案 4 :(得分:4)

这在很大程度上取决于使用的平台和其他限制。作为一般规则,优秀的(C ++)程序员(或应该)能够在很短的时间内学习特定于平台的API。对于C ++,理解不同的工具链(例如,Windows程序员也应该知道GCC工具链)和编译器的差异更为重要。程序员还应该了解该语言的限制和平台依赖行为。

至于库,C ++程序员绝对需要知道STL和Boost。没有讨论。

答案 5 :(得分:2)

除了每个人都列出的内容外,请记住C ++程序员在嵌入式系统市场上占有一席之地(远远超过大多数其他高级语言)。熟悉嵌入式系统和开发可能会打开很多大门和工作机会。例如,您将不会与Java开发竞争如此激烈。因此,学习编写紧凑代码(编译后紧凑)和低内存使用技术是一个不错的选择。

答案 6 :(得分:1)

没有特定的顺序

  • COM / ATL
  • 的DirectX
  • MFC&amp;的Win32
  • STL
  • GDI
  • BOOST

答案 7 :(得分:1)

如果你正在使用gcc,你肯定应该知道gdb。实际上,对于您正在使用的编译器,您应该熟练使用本地调试器。除此之外,使用如此广泛的库,能够快速获取API比任何特定的库更有用。我建议学习doxygen。

答案 8 :(得分:1)

如果您使用的是Linux,那么Valgrind是一个非常有用的工具,用于检查您的程序如何处理内存访问。

答案 9 :(得分:0)

在移动领域使用C ++的流行方式是学习Symbian OS开发。

http://developer.symbian.com