这也是对初学者忠告系列的文章,也被转载过很多次,有N个版本,C++、ASP、Java、C#都有,50条有些文章里缩减成了28条或更少,题目也很多样,如博客园知识库中的版本叫《请不要做浮躁的程序员》。
正如这文章里所说,要克服浮躁。然而浮躁是这个时代的特征,从网上千篇一律、人云亦云、以讹传讹的转载中就能看出来。我们的社会缺乏创造性,就是能有自己独立见解的人太少。这个《学习XXX的50条忠告》文章,相对于《C#风潮》一文,争议较多,因此才会有这么多版本出来。在此逐条点评一下,不是想当老师,只是希望与大家交流一下。好像比较早的是C++版本吧,就用这个吧,不过完全是从跨语言的角度看。
1.把C++当成一门新的语言学习(和C没啥关系!真的);
C++面向对象的思想与C相比倒是全新的,但C++和C怎么会没关系呢?程序员学C++往往是先学C语言开始的,两者间可不是Javascript和Java的关系。
2.看《Thinking In C++》,不要看《C++变成死相》;
好书与好的入门书是不一样的,还是先看《Essential C++》吧。后半句什么意思?
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
这是什么逻辑?初学者为什么不先找看容易一点书呢?
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
对,好像也只有C++容易给初学者这种迷惑,其他平台潇洒漂过。
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
对。
6.会用Visual C++,并不说明你会C++;
不会C++的说会用VC,谁会信呢?
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
天下事有难易乎?为之,则难者亦易矣。
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
少玩游戏是对的,不解后面意思,谁会认为游戏能提高编程水平吗?
9.看Visual C++的书,是学不了C++语言的;
当年我就是因为看了《21天精通VC++》之类的书,结果放弃了C++的。还是Delphi/C#/VB程序员要幸福得多,不过有得必有失,有失必有得。
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
XX语言不行了,那什么行就什学么呗。浮躁是学习中的常见情绪,但不要极度浮躁,不然学什么什么不行。
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
社会需要什么,你对什么有兴趣,就学什么?为什么不能问呢?
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
按上一条选你要学的东西,一定有钱途。你不用去抢银行,去抢建议你抢银行的人的饭碗吧。
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
光中文版的书足够你学了。
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
估计是被问到关公秦琼哪个猛之类问题雷到了。这就是初学者,不要怕问的问题没水平,别灰心不是所有人都这么不耐烦。
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
还有一种就本文的原作者及绝大多数转载的人。
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
把过时的技术丢到垃圾桶里,把不过时的思想记在心里。
17.C++不仅仅是支持面向对象的程序设计语言;
不错,多范式的编程语言,创始人说的。
18.学习编程最好的方法之一就是阅读源代码;
阅读优秀的源代码。
19.在任何时刻都不要认为自己手中的书已经足够了;
所以,我干脆不看书了,要看就看精品。
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
《圣经》、《宝典》之类的书,多数是垃圾书。
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
仔细看还看不懂的书,请把它扔掉。
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
如今出版的,很少值得连读两遍的书。
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
不了解这些书,很疑惑初学者看得过来吗?要么书很薄,要么翻翻大致章节就行了。
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
C++的初学者(比如我),不明白。
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
不怕讨论争吵,就怕不懂装懂。
26.请看《程序设计实践》,并严格的按照其要求去做;
尽信书不如无书。
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
大部分一样。
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
地球是圆的吗,你不相信也没问题。你开始怎么想的关系不大,只要知道怎么到哪里,坐什么交通工具就行了。
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
应该说明只会写个Hello World,那还不能算学过。
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
请去公司面试或实习一下,实践才是判断真理的唯一标准。
后面20条基本都有道理,作者像是换了一个人似的。可能写了一半,被领导PK了一顿,“年轻人,可别太浮躁啊!”。