编程需十年

来源:互联网 发布:c语言数据结构 编辑:程序博客网 时间:2024/05/17 21:47

转载自:http://my.oschina.net/kursk/blog/9081

为何都想速成?

逛逛书店,你会看到《7天自学Java》等诸如此类的N天或N小时学习Visual Basic、Windows、Internet的书。我用了亚马逊网站的强大搜索(点此),出版年份选92年以后,书名关键词“天”、“自学”、“教你”,然后有248个结果,前78个是计算机类图书,第79个是《30天学孟加拉语》。我用“小时”换下“天”,结果惊人,有多达253本书,其中77本计算机图书,第78是《24小时自学语法句式》。在前200中,96%是计算机的书。

结论就是要么人们急于学习电脑,要么计算机比其他东西学起来要异常简单。没有任何书是关于几天学习贝多芬或量子物理的,甚至连犬类装扮都没有。费雷森(Felleisen)等人在其著作《如何设计程序》中同意这个趋势,因为提到:“坏设计很简单,笨蛋才用21天学,尽管他们还是真傻。” 

 

让我们看看书名如《三日学C++》的意味:

 

学习: 三天内你可能没有时间写出有意义的程序,或者从中积累经验。你不可能有时间去跟职业编程者一起去理解在C++环境下的状况。简而言之,你没有充足的时间学很多。所以这本书只能说肤浅的知识。正如亚历山大·波普(Alexander Pope)所言:一知半解乃危殆之事。

C++: 三天内你可能学会C++的句法(如果你已经了解其他的语言),但你还不会使用它。简言之,假如是个Basic程序员,你可能写C++程序是Basic的风格,但你不能理解C++的真实好处。那要点是什么?艾伦·佩里斯(Alan Perlis)曾经说过:“一门不能影响你编程观点的语言不足学。”. 有可能你学了一点点C++(更确切地说是如Javascript或Flash的Flex),因为你需要一个界面有现成的工具去完成特定的任务。但是你不是学习如何编程,而是学习如何去完成任务。

三天: 不幸地是,这远远不够,下一部分会详细讲。

十年磨砺编程

研究人员 (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) 得出结论欲在诸多领域达到职业水平需要十年,比如国际象棋,作曲,电报操作,绘画,弹钢琴,游泳,网球以及神经心理学和拓扑学的研究。 关键是精心练习,不只是一遍一遍重复,而是挑战一项恰好超越你能限的事情,尝试并思考你的表现,并自我矫正。然后不断挑战。这并无捷径,4岁的音乐奇才莫扎特用了13年才能创作世界级的音乐。另外,披头士乐队似乎在1964年的埃德·苏利文( Ed Sullivan show)演出中一炮而红,但是他们自从1957年就在利物浦和汉堡的酒吧演出,在取得广泛关注后的早期,第一部重量级作品《佩珀军士》(Sgt. Peppers)发行是在1967年。 马尔科姆·格兰德维尔(Malcolm Gladwell)撰文描述了一项针对柏林音乐学院学生的研究,他们被分为尖子,中等和不足三类,并被问到他们练琴的情况:

所以,更确切地说,一万小时,而非十年,是个神奇之数。萨缪尔·约翰逊(Samuel Johnson, 1709-1784) 认为还需更长时间:“卓越乃一生之追求,而非其他。” 乔叟(Chaucer , 1340-1400)抱怨道"the lyf so short, the craft so long to lerne." (生之有限,学也无涯)。希波克拉底(Hippocrates , c. 400BC)因这句话被世人所知:"ars longa, vita brevis"(译注:拉丁语,意为“艺无尽,生有涯”),更长的版本是 "Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile",翻译成英文就是 "Life is short, [the] craft long, opportunity fleeting, experiment treacherous, judgment difficult." (生有涯,艺无尽,机遇瞬逝,践行误导,决断不易),然而在拉丁语中,ars 既含艺术,又寓工艺,希腊语原文使用的 "techne" 只表示“技艺”,而非“艺术”。

我的编程成功秘笈是:

 

首先要对编程感冒,你编程你快乐。一定要让它足够有趣,因为你要保持你的兴趣长达十年。

与别的编程者交流;阅读别人的代码。这比看任何书或参加培训课都重要。

实践。最好的学习乃实践。技术上讲,“编程之化境非通过充裕的实践经验而自然达到,但个人的性能可由专致的努力大力提升。” (p. 366)  “最有效率的学习需要明确的目标,适当的难度,知识回馈,并容许重复或修正错误。” (p. 20-21) 《实践认知:日常之思维、数学及文化》(Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life) 在这方面可做参考。

 后续内容因,发布的信息中包含站点屏蔽的文字 所以请到转载连接处查看(本人评:真实见鬼了)