C ++程序员需要知道哪些技术?

时间:2020-03-06 14:54:55  来源:igfitidea点击:

C ++是我真正接触到的第一种编程语言,但是我从事的大部分工作是学术性的还是游戏编程的。我居住的大多数编程工作都需要Java或者.NET程序员,并且除了基本语言外,我对他们还需要什么技术有很好的了解。例如,可能需要Java程序员知道EJB,Servlet,Hibernate,Spring和其他技术,库和框架。

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

编辑:当我说基本语言时,我也在考虑标准库,如果对错或者不清楚,我感到抱歉。我想知道是否还有其他特定领域的要求,类似于Java或者.NET程序员可能需要学习的所有技术,这与C ++程序员通常需要了解的知识有关。我确实同意标准库和Boost是必不可少的,但是除此之外还有什么吗?还是每个公司/项目/域都不同?

解决方案

标准模板库

http://en.wikipedia.org/wiki/Standard_Template_Library

C ++开发人员必须使用std和boost库。

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

至于数据访问和其他内容,则有很多不同的解决方案。在这种意义上,C ++比某些托管lang丰富得多。 99%的旧流行系统都具有C / C ++接口。

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

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

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

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

无特定顺序

  • COM / ATL
  • DirectX
  • MFC和Win32
  • STL
  • GDI
  • 促进

如果我们使用的是gcc,则我们绝对应该知道gdb。实际上,无论我们使用哪种编译器,我们都应该精通本地调试器。除此之外,还使用了广泛的库,因此能够快速使用API​​的库比任何特定库都有用。我还是建议学习脱氧剂。

作为C ++程序员应该了解的技术(因此比起较小的程序员要有更多的技术知识;)):

性能问题是什么使事情进展缓慢,如何查找和解决此类问题。我还指的是诸如上下文切换,缓存行,优化的搜索,内存使用和约束之类的东西,以及普通VB / Cdeveloper并不关心的类似东西。

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

低级通信,尤其是能够连接到晦涩难懂的系统,而没有其他人为此编写了一套工具包(尤其是无线电通信),延迟和带宽管理。

否则,对于特定工具,它取决于目标,Windows开发人员将不同于Linux,不同于嵌入式。

对于每一种语言,我相信都有三个相互关联的知识水平:

  • Scott Meyers撰写的有效C ++系列。
  • 作为一个多平台的通用库,了解boost非常有趣。
  • 了解我们应该使用的库,无论是Win32 API,OCCI,XPCOM还是UNO(此处仅举几个示例)。如果我们开发纯图形组件,则无需了解数据库库。
  • 培养模式知识。不能避免设计模式:可重用的面向对象软件的元素在这里...

因此,我对我们更新的问题的回答是:知道语言,知道平台,知道域。我认为这里本身就有足够的工作,尤其是在C ++中。这是一项永恒的工作,不容忽视。

除了列出的所有内容外,请记住C ++程序员在嵌入式系统市场上有足够的空间(比大多数其他高级语言要多得多)。因此,对嵌入式系统和开发的熟悉可能会为我们提供很多机会和工作机会例如,与Java开发的竞争如此激烈。因此,学习编写紧凑的代码(编译后紧凑)和低内存使用技术是一个不错的选择。

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

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

http://developer.symbian.com