伙计们,我需要找到一个像codingbat这样的好网站来“重新学习”C ++。我在学校学到了它,但后来我从来没有认真对待它。我不是在寻找像Project Euler这样的东西,因为它专注于数学问题。我需要一些真正关注C ++原则,特征和工具的东西。
答案 0 :(得分:12)
我不认为这样的网站存在,我怀疑它会永远存在。原因是C ++很大 - 我的意思是 reeaallllyyy 很大。
当你开始专业地编写C ++代码(即每周40小时)并花费1或2小时来学习关于C ++ 的新东西(即每周5-10小时),阅读书籍和文章,你需要几个月甚至几年才能成为一名真正的专业C ++程序员 - 毫不客气地假设你的工作并不需要你学习任何第三方API,新工具,技术和什么,这会分散你学习C ++的注意力。
几年来,我为已经有一年Java风险的学生教过C ++。在4-5个月,12-15个讲座,以及实验室中至少两倍的时间,我已经设法将它们从“Hello,world!”中拖出来。一直到模板元编程的简短介绍。知道该范围所涵盖的所有区域的每个人都会告诉你,在此之后,他们仍然是血腥的新手。
(哎呀,我使用C ++大约15年,赚了我的钱写C ++代码> 10年,并且几乎每周仍然学习新的东西。而且这甚至都没有考虑到巨额的新标准倾倒在我们身上的新标准已经“蠢蠢欲动”好几年了。
由于要学习C ++需要覆盖的领域庞大,并且由于C ++已经足够大,以至于它的程序员可以分为几代,当涉及到哪些标准习语和“最佳”时他们学到的实践,最后因为(再次由于它令人难以置信的巨大)新技术不断发现和发展(模板元编程,现在是C ++的一个非常重要的特性,是意外没有人计划过) ,C ++社区对成语和实践的看法并不像Java社区那样紧凑,在没有引起激烈讨论的情况下,几乎无法作为一套规则进行沟通。 (我认为有几个不同的非常好的和推荐的最佳实践书籍的事实列出了几十个经验法则,以及他们中的一些人后来获得了这一事实一本补充更多最佳实践的书,字面上讲述了很多内容。)
你会发现许多专业的C ++程序员乐于使用C ++提供的30%。例如,许多人只是将它用作OO语言,错过了模板(可能除了STL),异常和其他非常有用的东西。但 C ++是一种多范式语言。它支持面向对象的编程以及通用编程,生成编程,许多函数式编程,以及其他一些范例。在这些范式结合起来的情况下,它变得最强大。
那么我的建议是什么?
查看The Definitive C++ Book Guide and List。
首先从初学者的书中挑选。既然你说你已经接触过C ++,我推荐Andrew Koenig和Barbara Moo的 Accelerated C ++ 。这是一个很好的介绍,对于它改变教学C ++的方式不能称赞,但它带来了相当陡峭的学习曲线。此外,有250页,它只是一个简短的介绍 于一个替代很可能是任一斯坦利李普曼的 C ++引物(其中,在1000页,将详细介绍相同的地面)或布鲁斯Eckel的用C思考++ (其中我不“不知道”或Bjarne Stroustrup的经典 C ++编程语言(也是1k页)或他的最新着作编程 - 使用C ++的原理和实践(我还没看过)尚未) 这些书有足够的任务让你忙碌一段时间。添加一些你自己的,你可以忙着学习几个月。
然后慢慢按照列表的方式工作。
下一个C ++标准,现在通常预计在2011年,将为该语言添加一些具有挑战性的概念(如 rvalue references )和一个大大扩展的标准文库。 (目前的草稿几乎是最后一页的两倍。)不幸的是,由于标准尚未完成,因此没有可用的书籍。这些都是在文章和在线讨论中展开的(虽然维基百科有a pretty good article about it),而它只适用于流利的C ++程序员,而不适用于C ++新手。不幸的是,没有一篇文章教过C ++ 1x到C ++的新手而且我担心你可能需要几年时间才能在几本推荐书之间做出选择。
并且不要忘记C++ FAQ,这是一个非常好(并且非常易读)的最佳实践(及其理性)在线集合,尽管它绝不是介绍性文本。
答案 1 :(得分:3)
没有替代练习。
在你的机器上找到你想要的程序(可能就像计算项目中行数一样简单),并用C ++编写。
我希望我可以告诉你,我有一个很棒的资源,可以向你展示书中的每一个C ++技巧,但事实是,你就是那个资源。
实践。从自己的错误中学习。你是最好的老师。
答案 2 :(得分:1)
Sphere Online Judge看起来它可以与C ++(以及许多其他语言)一起使用。它不像CodingBat那么简单,但会有更复杂的问题。