C ++是我真正参与的第一种编程语言,但我的大部分工作都是学术或游戏编程。我所居住的大多数编程工作都需要Java或.NET程序员,除了基本语言之外,我对他们需要哪些技术有相当好的了解。例如,Java程序员可能需要了解EJB,Servlets,Hibernate,Spring以及其他技术,库和框架。
但是,我不确定C ++。在现实生活中,对于一般的业务编程,除了语言特性之外,C ++程序员还需要了解什么?像Win32 API,某些库,框架,技术,工具等等。编辑:当我说基本语言时,我也在考虑标准库,如果错误或不清楚,请对不起。我想知道是否有更多特定的域要求类似于Java或.NET程序员可能需要学习的所有技术,以及C ++程序员通常需要知道的内容。我同意标准库和Boost是必不可少的,但除此之外还有什么,或者每个公司/项目/域都有什么不同?
答案 0 :(得分:32)
至于每种语言,我认为有三种相互关联的知识水平:
<小时/> 因此,我对您更新的问题的回答是:了解您的语言,了解您的平台,了解您的域名。我认为这里有足够的工作,特别是在C ++中。这是一项永远不容忽视的工作。
答案 1 :(得分:16)
其他技术列表在很大程度上取决于项目类型。当然,您将与SO进行一些互动,因此您需要了解您所在环境的API。
对于数据访问和其他东西,有很多不同的解决方案。在这个意义上,C ++比一些管理的lang更丰富。 99%的旧流行系统都有C / C ++接口。
在你对我的回答的评论中澄清了你的问题后,我可以推荐:
答案 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)
没有特定的顺序
答案 7 :(得分:1)
如果你正在使用gcc,你肯定应该知道gdb。实际上,对于您正在使用的编译器,您应该熟练使用本地调试器。除此之外,使用如此广泛的库,能够快速获取API比任何特定的库更有用。我建议学习doxygen。
答案 8 :(得分:1)
如果您使用的是Linux,那么Valgrind是一个非常有用的工具,用于检查您的程序如何处理内存访问。
答案 9 :(得分:0)
在移动领域使用C ++的流行方式是学习Symbian OS开发。