代码之家  ›  专栏  ›  技术社区  ›  Fanatic23

什么是最好的方法,继续前进到先进的C++?

  •  9
  • Fanatic23  · 技术社区  · 14 年前

    对于那些被称为“中间C++程序员”的C++程序员,你有什么建议?

    1. 学习C++ 0x
    2. 忘记语言上的细微差别,掌握一些基本原理——像西瑟或帕帕迪米特里欧的自动机理论
    3. 如果你知道OOP或者至少认为你有,考虑如何将函数编程技巧与C++结合起来。
    4. 在编译器和开放源代码(如LLVM或GNU工具链)的行上处理某些东西
    5. 整个想法都破灭了——下一个层次意味着更复杂的数据结构。因此,如果你知道AVL,考虑学习左倾红黑树等

    现在很明显,没有人可以不按优先顺序来做这个列表中的每件事,所以我们需要一些关于什么可能是最好的方法的建议。

    注:谢谢大家的回答。

    12 回复  |  直到 14 年前
        1
  •  10
  •   anon anon    14 年前

    回答您的具体问题:

    了解为不同的构造生成什么样的汇编代码 类型,可能用于x86

    我想说的是,学习如何理解编译器生成的汇编语言,如果不是详细的话,也可以概括地说。当然,您不应该试图预测编译器将要做什么。

    忘记语言的细微差别,掌握基本原理——来自 像西瑟或帕帕迪米特里欧这样的地方

    如果它让你兴奋,我想。。。

    如果你知道OOP或者至少你认为你知道,考虑一下如何合并 C++的函数编程技巧

    在C++支持的所有范例中,函数编程可能是最差的支持——如果你想学习FP,学习Haskell(或者别的什么),而不是C++。

    在编译器和开放源代码的行上工作,比如LLVM或 GNU工具链

    GNU是用C编写的,所以它不太可能提高C++技能——我对LLVM了解甚少。

    数据结构。如果你知道AVL, black trees等人

    RB树并不比AVL树复杂多少-同样的基本概念。如果你理解了数据结构教科书中的基本结构,我认为没有必要进一步挖掘,除非你对这个主题特别感兴趣。

        2
  •  14
  •   Jerry Coffin    14 年前

    我想说你可以做清单上的每件事,只是不能一次完成。不过,至少在我看来,你是有点倒退了。学习C++(或任何其他语言)是达到目的的手段,而不是目的。

    与其为了学习而努力学习,不如编写一些代码。当某事看起来笨拙、不必要的困难、不灵活等时,找一个更好的方法来处理它。通过这种方式,您不仅可以学习更先进的技术、数据结构等,还可以很好地了解它真正实现的功能,这样您就可以很好地了解何时、如何以及为什么要使用它(同样重要的是,至少可以了解它的局限性以及它可能何时可用) 适用或有用)。

        3
  •  8
  •   Roddy    14 年前

    我想知道 BOOST .

    你可以从零零碎碎的开始,只需使用它,当你深入到库中时,你会发现自己在想“它是如何工作的?”。

    • 生产和更好的C++程序员!
    • 了解它的工作原理 你是“大师”徽章!!
    • 确保不朽!!!
        4
  •  3
  •   Loki Astari    14 年前

    如果你懂基本语言:

    然后按这种顺序(尽管会有一些回溯)

    • 学会学习和消化 雷伊
      • 弄清楚如何在所有C上下文中使用RAII,这样您就不会被C代码困住。
    • 找出异常以及异常保证是什么。
      • 了解每个容器的要求。
    • 了解迭代器
      • 了解迭代器特性以及它们如何与指针一起工作。
    • 了解算法库
      • 回去学习一下流和迭代器是如何工作的
    • 了解方法指针以及如何在算法中使用它们
    • 了解绑定并查看boost bind
    • 了解boost容器以及它们与标准容器的区别。
    • 了解智能指针。
      • 什么是不同的类型和什么时候有效地使用每一个。

    在这一点上,你将开始学习如何使用C++。

        5
  •  1
  •   Ken Bloom    14 年前

    学习汇编(例如写汇编)可能是个好主意,但我强烈建议你

        6
  •  1
  •   Ken Bloom    14 年前

    我是#4的坚定支持者。学习函数式编程非常有价值。我在C++中还没有做过很多,所以我不知道它是多么自然,但是我喜欢Ruby和斯卡拉如何进行函数编程。

        7
  •  1
  •   Rok Povsic    14 年前

    我建议你进入编程的设计部分。学习如何设计,编写好代码,学习好的编程实践。设计模式、UML、单元测试都属于这里。

        8
  •  1
  •   DigitalZebra    14 年前

        9
  •  1
  •   Paul Reiners    14 年前
        10
  •  1
  •   user1115652 user1115652    14 年前

    研究别人如何优雅地解决难题。非常重要:只是练习,不要忘记评估。检查你的代码或解决问题的方法。

    是的(参考第4点),学习其他编程语言,尤其是那些比C++有特殊优势的语言,而不是直接在C++中应用它们的技术。专注于为自己寻找方法,以尽可能少的错误干扰您的工作流程,找到一个校准系统和抽象的方法,您可以随时应用于解决问题和实施代码。

    我的目标是提高生产率。如果你对理论更感兴趣,你还不如用一些小片段和晦涩难懂的语言特征来充实自己。

        11
  •  0
  •   David Thornley    14 年前

    另一个观点:7、学习其他编程语言,与C++不同,是实用的。一定要了解函数编程,不要担心它如何应用到C++。需要考虑的语言有:Scheme、Common Lisp、Haskell、Prolog、Forth、Smalltalk。你不必精通它们,但你应该试着理解它们是如何工作的,以及在这些语言中什么是好代码。

    如果你只知道一种语言,你的思维就会局限于那种语言中的自然语言。如果你知道不止一个,你就能用更多不同的方式思考。你处理问题的方法会更灵活。

        12
  •  0
  •   hehongyu2000    14 年前