C++ | 进阶路径

7
我了解基本的面向对象编程(OOP)相关主题,RTTI、模板。从Java的集合框架中回到C++,我尝试找到类似的集合并找到了STL,并尝试在我的项目中使用它(虽然我不是非常熟悉)。我进行了搜索并发现像《Accelerated C++》、《Effective and More Effective C++》这样的书籍得到了推荐。
但我不确定应该采用什么样的进阶路径。我正在寻找像这样的东西 - Python-Progression Path
def apprentice():
  read(diveintopython)
  experiment(interpreter)
  read(python_tutorial)
  experiment(interpreter, modules/files)
  watch(pycon)

def master():
  refer(python-essential-reference)
  refer(PEPs/language reference)
  experiment()
  read(good_python_code) # Eg. twisted, other libraries
  write(basic_library)   # reinvent wheel and compare to existing wheels
  if have_interesting_ideas:
     give_talk(pycon)

def guru():
  pass # Not qualified to comment. Fix the GIL perhaps?
  1. Discover list comprehensions
  2. Discover generators
  3. Incorporate map, reduce, filter, iter, range, xrange often into your code
  4. Discover Decorators
  5. Write recursive functions, a lot
  6. Discover itertools and functools
  7. Read Real World Haskell
  8. Rewrite all your old Python code with tons of higher order functions, recursion, and whatnot.
  9. Annoy your cubicle mates every time they present you with a Python class. Claim it could be "better" implemented as a dictionary plus some functions. Embrace functional programming.
  10. Rediscover the Strategy pattern and then all those things from imperative code you tried so hard to forget after Haskell.
  11. Find a balance.

2
尽管您在问题标题和C++标签中提到了C ++,但似乎与C ++ 无关。说起来,这个问题是什么? - CB Bailey
1
隐含的问题是:“对于C++学生,这个列表的等价物是什么?” - Karl Knechtel
@Charles Bailey:我更新了我的问题。 - Vaibhav Bajpai
2
哦天啊,你为什么要发布一张模糊文本的截图,而不是直接展示原始文本给我们看呢? - jalf
@jaif:好的!我已经改成文本形式(从截图中)。 - Vaibhav Bajpai
2个回答

4
这是一个很棘手的问题,因为你真正需要的是变得擅长于你所做的事情,因此没有权威的清单存在。
话虽如此...
阅读Meyers的《Effective C++》和Sutter的《C++编程规范》,如果你是初学者,你可能不会理解所有内容,所以要时不时地重新阅读它们(这也是一种很好的疫苗)。
是时候介绍STL了(它是一个惊人的小珠子),学习使用它的算法而不是手工制作所有东西,如果可能的话,直接跳到C++0x版本。
将Boost软件库融入其中,先从简单的开始:boost::optionalboost::variantboost::lexical_castboost::numeric_cast可以使你的代码更安全、更符合惯用法。还可以尝试使用Boost String Algorithms库。
接下来是模板元编程和Boost.MPL:Abrahams Gurtovoy的《C++模板元编程》会对此有所帮助。你可能需要利用Boost.Preprocessor来处理一些模板内容。
学习更多的Boost库,它是一个巨大的代码库,里面有很多惊人的库。
我自己仍然在进行最后一步,所以无法评论进一步的内容 :)
在每一步中,你都应该写很多代码,阅读是不够的,你需要进行实验。编程不仅仅是技术,程序的架构部分在这个领域非常重要。
噢,试着加入(即使只是阅读)一个开源项目,没有什么比编写代码更好的了,而且当有人审查它时会更好 :)

0

首先要精通C语言。我推荐Peter van der Linden的《深入C语言》。

获取Scott Meyers的《Effective C++》一书,并将其建议牢记于心(《More Effective C++》也很不错)。

阅读Coplien的《高级C++》。

阅读C++ FAQ

此时可以阅读Stroustrup的《C++程序设计语言》。


6
精通C语言可能会教你一些在C++中应该避免的坏习惯。 - Mark B
@Mark B:同意。我绝对不会教潜在的C++学生C语言的习惯。 - Puppy
当你发现一些 C++ 代码运行缓慢时,拥有 C 语言的编程习惯是很好的后备选择。 - Johan Kotlinski
@kotlinski:是的或不是,有快速类型安全的C++库,使用它们吧 :) - Matthieu M.
1
我坚持我的原话。C语言可以让你对硬件有一个很好的视角。此外,写出好的C代码是完全可能的。我同意C语言可能会灌输一些不良习惯,但我认为接触它会使你更加实用主义,减少意识形态色彩。 - dicroce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接