代码之家  ›  专栏  ›  技术社区  ›  Firas Assaad

C++程序员需要知道哪些技术?[关闭]

c++
  •  31
  • Firas Assaad  · 技术社区  · 17 年前

    C++是我真正进入的第一个编程语言,但我的大部分工作是学术性的或是游戏编程。我生活中的大部分编程工作需要Java或.NET程序员,而我对基本语言所需的技术有很好的了解。例如,Java程序员可能需要了解EJB、servlet、Hibernate、Spring和其他技术、库和框架。

    不过,我对C++没有把握。在现实生活中,对于一般的商业编程,C++程序员需要了解哪些语言特征之外的内容呢?诸如win32 api、某些库、框架、技术、工具等。


    编辑:我说基础语言的时候也在考虑标准库,如果是错的或者不清楚的话,我很抱歉。我想知道是否有类似于所有技术的特定领域需求,Java或.NET程序员可能需要学习与C++程序员一般需要知道的一样。我确实同意标准库和Boost是必不可少的,但是是否有任何超出这一点的地方,或者对于每个公司/项目/域都是不同的?

    10 回复  |  直到 17 年前
        1
  •  30
  •   Mac    17 年前

    对于每一种语言,我相信有三个相互联系的知识层次:

    1. 掌握你的语言。每个程序员都应该掌握语法。实现这一目标的良好参考是:
    2. 广泛了解你的图书馆。
      • STL 绝对是必须的,因为它已经包括在 C++ Standard Library 因此,知道它非常接近第1点:你必须掌握它。
      • 知道 boost 可以是非常有趣的,作为一个多平台和通用库。
      • 了解你应该与之合作的图书馆,无论它是否 Win32 API , OCCI , XPCOM UNO (这里仅举几个例子)。如果您开发纯图形组件,则无需了解数据库库…
    3. 发展你的模式知识。不能避免 Design Patterns: Elements of Reusable Object-Oriented Software 在这里。。。


    所以,我对你最新问题的回答是:了解你的语言,了解你的平台,了解你的领域。我认为这里有足够的工作,特别是在C++中。这是一项永远不会被忽视的工作。
        2
  •  15
  •   aku    17 年前

    C++开发人员必须摸索 std boost 图书馆。

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

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

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

    • 良好的代码浏览器(源代码或理解C++)
    • 静态分析工具(link、klockwork inforce等)
    • MySQL\SQLite(我在大量C++项目中遇到了这些DB)
    • UI技术(OpenGL\GLU、DirectX、GDI、Qt等)
        3
  •  6
  •   gbjbaanb    17 年前

    作为C++程序员应该知道的技术(因此,在技术上比小程序员知识渊博);

    性能问题-是什么让事情进展缓慢,如何发现和解决这些问题。我也指的是上下文切换、缓存线、优化搜索、内存使用和约束,以及你的普通VB/C开发人员不关心的类似内容。

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

    低级通信——尤其是能够连接到其他人没有编写过的用于(特别是无线通信)、延迟和带宽管理的工具包的模糊系统。

    否则,对于特定的工具——这取决于您的目标是什么,Windows开发人员将不同于Linux,不同于嵌入式。

        4
  •  4
  •   Dynite    17 年前
        5
  •  4
  •   Konrad Rudolph    17 年前

    这在很大程度上取决于使用的平台和其他约束。一般来说,一个好的程序员可以在很短的时间内学会一个特定于平台的API。对于C++,了解不同的工具链(例如Windows程序员也应该知道GCC工具链)和编译器的差异更为重要。程序员还应该理解语言的局限性和依赖平台的行为。

    对于图书馆来说,C++程序员绝对需要了解STL和Boost。没有讨论。

        6
  •  2
  •   OldMan    17 年前

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

        7
  •  1
  •   tloach    17 年前

    如果你在使用gcc,你肯定应该知道gdb。实际上,无论使用哪种编译器,您都应该精通本地调试器。除此之外,所使用的库种类繁多,因此能够快速获取API比任何特定的库都更有用。不过,我建议你学习强心剂。

        8
  •  1
  •   TG.    17 年前

    没有特定的顺序

    • COM/ ATL
    • DirectX
    • MFC与Win32
    • STL
    • GDI
    • 促进
        9
  •  1
  •   Fede F    17 年前

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

        10
  •  0
  •   michael aubert    17 年前

    在移动空间中使用C++的流行方式将涉及学习Symbian操作系统开发。

    http://developer.symbian.com