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

Fir*_*aad 32 c++

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

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


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

Mac*_*Mac 33

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

  1. 掌握你的语言.每个程序员都应该(尽力而为)掌握语法.实现这一目标的好参考是:
  2. 广泛了解您的图书馆.
    • STL绝对是必须的,因为它已被包含在C++标准库中,所以知道它非常接近第1点:你必须掌握它.
    • 知道提升可能非常有趣,作为一个多平台和通用库.
    • 知道你应该使用的库,无论是Win32 API,OCCI,XPCOM还是UNO(这里只是一些例子).如果您开发纯图形组件,则无需了解数据库库...
  3. 培养你的模式知识.无法避免设计模式:可重复使用的面向对象软件的元素 ......


因此,我对您更新的问题的回答是:了解您的语言,了解您的平台,了解您的域名.我认为这里有足够的工作,特别是在C++中.这是一项永不停歇的作品.


aku*_*aku 16

C++开发人员必须使用stdboost库.

其他技术清单在很大程度上取决于项目类型.您肯定会与SO进行一些互动,因此您需要了解您所在环境的API.

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

在您对我的回答的评论中澄清了您的问题后,我可以建议:

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


gbj*_*anb 6

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

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

线程问题 - 如何从多线程应用程序中获得最大收益,如何检测和修复滥用问题.

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

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


Kon*_*lph 5

这将在很大程度上取决于所使用的平台和其他约束条件。通常,优秀的(C ++)程序员可以(或应该)在很短的时间内学习平台特定的API。对于C ++,了解不同的工具链(例如Windows程序员也应该了解GCC工具链)和编译器之间的差异就显得尤为重要。程序员还应该了解该语言的局限性和与平台有关的行为。

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