【问题标题】:What technologies do C++ programmers need to know? [closed]C++程序员需要了解哪些技术? [关闭]
【发布时间】:2010-09-14 05:19:42
【问题描述】:

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

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


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

【问题讨论】:

    标签: c++


    【解决方案1】:

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

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


    因此,我对您更新后的问题的回答是:了解您的语言,了解您的平台,了解您的领域。我认为这里有足够的工作,尤其是在 C++ 中。这是一项永远不会被忽视的工作。

    【讨论】:

      【解决方案2】:

      C++ 开发人员必须了解 stdboost 库。

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

      至于数据访问和其他东西,有很多不同的解决方案。从这个意义上说,C++ 比一些托管语言要丰富得多。 99% 的旧流行系统都有 C/C++ 接口。

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

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

      【讨论】:

      • 是的,我认为这是给定的。抱歉,如果不清楚。我更多地谈论的是商业技术,如果有的话。这不是关于 C++ 需要知道什么,而是关于专业圈子中是否有任何进一步广泛适用的概念。
      【解决方案3】:

      作为 C++ 程序员应该了解的技术(因此在技术上比初级程序员更了解;)):

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

      线程问题 - 如何充分利用多线程应用程序,如何检测和修复滥用行为。

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

      否则,对于特定工具 - 这取决于您的目标,Windows dev 将不同于 Linux,不同于嵌入式。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 我编写过的最稳定的 C++ 代码没有使用 boost。虽然很常见,但它还不是行业标准。
        • 想想看,它也没有使用 STL,我们的内部代码实现了相同的目的,但特定于我们的业务领域。
        • @tloach:即使您最终没有使用它们,了解它们也很重要。最重要的是,您不会不必要地重复现有功能。
        【解决方案5】:

        【讨论】:

        • 请注意,当 C++ 程序员谈论“标准模板库”(STL) 时,他们几乎总是指标准 C++ 库。 STL 是许多标准 C++ 库的基础,但除了那些未实现标准的 C++ 实现之外,STL 已过时。
        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          如果您使用 gcc,您肯定应该知道 gdb。实际上,无论您使用哪种编译器,您都应该精通本地调试器。除此之外,使用的库范围如此之广,以至于能够快速获取 API 比任何特定的库都更有用。不过我建议学习 doxygen。

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              没有特定的顺序

              • COM/ATL
              • DirectX
              • MFC & Win32
              • STL
              • GDI
              • 提升

              【讨论】:

                【解决方案10】:

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

                http://developer.symbian.com

                【讨论】:

                  猜你喜欢
                  • 2021-12-25
                  • 1970-01-01
                  • 2015-09-19
                  • 1970-01-01
                  • 2011-08-16
                  • 2014-09-11
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多