十年内自学编程

十年内自学编程

Peter Norvig

为什么大家都这么着急?

走进任何一家书店,您都会看到如何在24小时内自学Java,以及在几天或几个小时内自学C、SQL、Ruby、算法等各种各样的语言。亚马逊高级搜索[标题:teach, yourself, hours, since: 2000,找到了512本这样的书。在前十本书中,九本是编程书(另一本是关于簿记的)。用“学习”代替“自学”,用“天”代替“小时”,也会得到类似的结果。

结论是,要么人们急于学习编程,要么编程比其他任何东西都要容易得多。Felleisen等人在他们的《如何设计程序》一书中承认了这一趋势,他们说“糟糕的编程很容易。”傻瓜可以在21天内学会它,即使他们是傻瓜。”《Abtruse Goose》漫画也有自己的风格。

让我们来分析一下《24小时自学c++》这款游戏的意义:

自学:在24小时内,你将没有时间写几个重要的程序,并从你的成功和失败中学习。您将没有时间与有经验的程序员一起工作,了解在c++环境中生活是什么样子的。简而言之,你没有时间学太多东西。所以这本书只能谈论肤浅的熟悉,而不是深刻的理解。正如亚历山大·蒲柏所说,一知半解是一件危险的事情。

c++:在24小时内,你可能能够学习一些c++的语法(如果你已经知道另一种语言),但你不可能学到很多关于如何使用这门语言的知识。简而言之,如果你是一个基本的程序员,你可以学习用c++语法编写Basic风格的程序,但是你不能学习c++到底有什么好处(和坏处)。那么重点是什么呢?Alan Perlis曾经说过:“如果一门语言不影响你思考编程的方式,那么它就不值得你去了解。”一个可能的问题是,您必须学习一点c++知识(或者更有可能是JavaScript或Processing之类的知识),因为您需要与现有的工具进行接口,以完成特定的任务。但是你并不是在学习如何编程;你正在学习如何完成这项任务。

24小时:不幸的是,这还不够,如下一节所示。

十年内自学编程

研究人员(布鲁姆(1985),布莱恩和哈特(1899),海斯(1989),西蒙& Chase(1973))显示大约需要十年开发经验的各种领域,包括国际象棋、音乐作曲,电报操作,绘画、弹钢琴、游泳、网球以及神经心理学和拓扑学的研究。关键是深思熟虑的练习:不仅仅是一遍又一遍地做,而是挑战自己,做一个超出你目前能力范围的任务,尝试它,在做的时候和之后分析你的表现,并纠正任何错误。然后重复。并再次重复。似乎没有真正的捷径:即使是4岁的音乐天才莫扎特,也花了13年多的时间才开始创作出世界级的音乐作品。在另一个流派中,甲壳虫乐队似乎以一系列的热门歌曲和1964年在埃德·苏利文秀上亮相而突然走红。但自1957年以来,他们一直在利物浦和汉堡的小俱乐部踢球,虽然他们在早期有广泛的吸引力,但他们的第一个巨大的成功是1967年发行的Sgt. Peppers。

马尔科姆•格拉德威尔(Malcolm Gladwell)推广了这一观点,尽管他专注于1万个小时,而不是10年。亨利·卡蒂埃-布列松(1908-2004)有另一个衡量标准:“你的前一万张照片是你最差的。”(他没有预料到,有了数码相机,有些人能在一周内达到这个水平。)真正的专长可能需要一生的时间:塞缪尔•约翰逊(Samuel Johnson, 1709-1784)曾说过:“任何部门的卓越成就都只能通过一生的努力获得;不能以较低的价格购买。”乔叟(1340-1400)抱怨道:“吕弗河太短,去勒内的船太长。”希波克拉底(约公元前400年)以摘录“ars longa, vita brevis”而闻名,这是较长的引文“ars longa, vita brevis, praeceps, experimentum pericullosum, idirium difficile”的一部分,英文翻译为“生命短暂,工艺漫长,机会稍息,实验不确定,判断困难”。当然,没有一个数字可以最终答案:这似乎不合理假设所有技能(如编程,国际象棋,跳棋,和播放音乐)可能都需要完全相同的时间掌握,也没有,所有的人将完全相同的时间。正如k·安德斯·埃里克森(K. Anders Ericsson)教授所说:“在大多数领域,即使是最有才华的人也需要多少时间才能达到最高水平,这是值得注意的。”1万小时这个数字给你的感觉是我们在说的是每周10到20小时的年数,有些人会认为这些人是最有天赋的人

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。