网球[转]Teach Yourself Programming in Ten Years——用十年叫会好编程

绅士的移位

作者:Peter Norvig 

  网球被当是相同宗绅士的移位,因为他要求人们在球场上须举止文明。粗俗的举措不仅为人耻笑,而且还要吃惩治(武汉街头巷尾是免通过上衣打网球的…)自1976年吧,职业网球赛就制订有行为规范,其规定包括:滥用球打,骂人,延误比赛相当还见面叫惩罚,如果权其无转,裁判员有且以该清除出场地,大部分选手让吸引到之类别上去,主要是为这项活动要求的体育风度,我当这里列有几漫长未成文的规定,这些还是组成网球运动中优秀的体育道德要素。
  使用完场地后该使场所保持原样
  注意别要求,一般不能过仔裤
  准时到达比赛场地,即使是在座同一摆友谊比赛
  比赛开始前,让你的敌方有预备活动时,也就是说陪他(她)打来回球,而无是演习你的超身球。
  当对方的圆球有或是界外球时,也将他通过去,把其当成界内球处理。
  比赛完后,不管您是北是常胜,都要同您的敌方握手以显示敬意。

译者:刘海粟 

历次都如举行伸展运动

正文原文为:http://norvig.com/21-days.html 

  对社会及与运动的总人口的话,他们最忽视的同等桩事就是是展开运动。好多总人口乐的来临网球场,打上几乎独来回球,就以为她们周身热起来了,可以由比赛了。正是这些人口,愿意花很多钱卖网球装备,上网球课,来提、高该网球技术,而忽视热身运动,其实同样举足轻重之或正说又要的凡提高你身体的柔韧性,这样在你打球的下不至于拉伤。

拖欠翻文档的PDF版可以当这里收获:http://download.csdn.net/source/2983778 

  常见的网球运动伤害
1,网球肘
2,腕伤
3,肩周损伤
4,膝盖
5,膝关节扭伤
6,大腿后肌肉拉伤
7,腹股沟拉伤
一个好之教练可以让你免受伤

为什么周都这么匆忙? 
任由移动上前同小书店,你尽管能看《7龙学会Java》以及各种万变不离其宗的图书,形如:在数天或是数小时内学会Visual
Basic、Windows系统、互联网等等。我当亚马逊 做了个高级搜索 :
pubdate: after 1992 and title: days
and 
(title: learn or title: teach yourself)
[1] 
一头取得了248只结实。前78只凡是精打细算机类图书(第79独凡是《30天学会孟加拉语
》)。我把搜索中的“days (天)”替换成“hours
(小时)”,结果取了一个相似度惊人之结果:253本书中,前77以还是测算机类图书,紧随其后的第78按是《24时内使会融洽语法与格调
》。而以200称作自此,有96%是精打细算机类图书。
由此可见:要么是人人都于抢的上学电脑,要么就是由于某种原因计算机于其他任何东西还如用心。而尚未同本书是有关如何以数日中学会贝多芬或是量子力学甚至是狗的哺育的。Felleisen等丁在《如何计划程序
》中呢指出了马上无异方向,他们说:“糟糕之编程非常简单,蠢货都能以21上的年月内学会,即便他们即使是干净木头都足以!”
给我们来分析一下如《三龙内学会C++
》这样的题意味着什么:
学会:
3龙的日子,你一点一滴无工夫错开做到部分大型程序,也束手无策从中间的成与挫折中汲取知识。你吧尚未工夫以及一个起经历的程序员一起坐班并熟悉C++环境下之开销是只什么则。总之,你没时间错开深入之学。所以这种题只能为你一个浅的认要不深入之敞亮。正像Alexander
Pope说的——一知道半解是项危险的业务。 
C++:
3龙外而也许学会一些C++的语法(前提是您拟了其他编程语言),但您模仿不顶什么样错过下这种语言。总而言之,如果你是——比方说——一个Basic程序员,你或许能学会以Basic的品格就此C++语法编程,但你无法控制C++真正的独到之处(或缺陷)。问题何在?Alan
Perlis
曾说罢:“如果同栽语言不能够影响你的编程思路,那就是未值得学习。”唯一合理的解说就是是您才待学习一丁点之C++(类似的还有JavaScript或是Flash的Flex)以便为有特定对象要失去老是一个存活工具的接口。但倘若如此,你就是未是以上学如何编程,而只是是在求学怎么做到而的靶子而已。 
其三龙外:
很丧气,正像咱于产同样节约吃如显的那样,这远不够。 

餐饮以及常规

故十年叫会协调编程 
研究员们(Bloom (1985) , Bryan & Harter
(1899) , Hayes (1989) , Simmon & Chase (1973)
)已经指出在诸多天地受到怀念达到融会贯通都亟待花十年左右的时,这其间包括国际象棋、音乐创作、电报操作、绘画、钢琴演奏、游泳、网球以及针对性神经心理学或是拓扑学的钻研。关键在于用心去练习:并非独自是一样全勤又平等全方位的但重复,而是一旦失去挑战一个刚好高于你时水平的靶子。去尝试,并当开的时节跟成功后分析好的见,指出有的失实。之后更,再又……这没捷径:甚至是莫扎特——4岁时他即是单乐神童了,但同是用了13年的辰才做出世界级的音乐。另一个事例,虽然看上去甲壳虫乐队是于1964年之埃德·沙利文秀上平等夜间成名的,但事实上她们早在1957年就是开在利物浦同汉堡之稍俱乐部中上演了,而且虽然好已经受到群众的垂青,但她俩先是赖主要之成却是1967年批发的专栏——《Sgt.
Peppers》。Malcolm Gladwell
公布了一如既往份关于柏林音乐学院生的钻告诉,比较了优质、中等及落后的老三近似学生并也她们制定了演习时:
老三组
人从几一样之年纪初步练习演奏——大约五春秋左右。起初的几年被,每个人还练习几乎一模一样之岁月——每周2至3只小时。但顶了八载左右的上,真正的距离开
始出现了。那些班中极优良的学生的练习习量开始越其他人:九秋时上每周6时,十二东经常每周8小时,十四春秋时每周16小时,越来越多。到了二十寒暑之常
候,他们每周的勤学苦练时间超过了30小时。二十年度时,在材料演奏者的人生历程中总共练习了10,000小时。相较之下,仅仅是好学生的练时只有
8,000时,而未来的音乐教师就发生4,000钟头之操练。 

  1,碳水化合物食品
2,蔬菜
3,水果
4,奶产品
5,蛋白质

故而,或许10,000时——而休是10年——才是一个神奇之数字。Samuel
Johnson
(1709-1784)认为就可能要花费又增长之时:“要贯彻任何领域的超人才能够还是索要终身奋斗之——不见面更产生重新不比的代价来得到其了。”而Chaucer
(1340-1400)则抱怨“人生短暂,但却闹极度多技艺要效仿。”Hippocrates
(约公元前400年)因那句“ars longa, vita brevis”而名,全文是“Ars longa,
vita brevis, occasio praeceps, experimentum periculosum, iudicium
difficile”,这话用中文 [2]
表达出来既是“技艺永恒,生命短暂,机会易逝,实验诡诈,抉择艰难”。虽然于拉丁文中“ars”一歌词既可代表“艺术”也得表示“技术”,但于原的希腊文中“techne”一歌词则只有“技能”的意思要未“艺术”。
以下是自编程成功的诀窍:

场边的零食

本着编程产生兴趣,并碰着自兴出发去做些什么。你若坚信其亦可连的为你带乐趣好给您能为她倾注十年的心机。 
及另程序员交流,阅读外的主次。这比较另外一样本书要同等桩训练还使着重。 
编程。学习之卓绝好方式就是是止举行边学
。更学术性的说:“在一定领域内,个人能力的危上限无法透过长远经验而机关获取。但纵然是经验丰富的私家也可经刻意的竭力要取得经验的加强。”(p.
336
)并且“最为可行的上学得针对特定个人、信息上报及再和改正错误的会有一个老少咸宜难度之确定性目标”
(p. 20-21)。《实践着体会:日常生活中之思,数学与文化
》是平等遵照对拖欠意见有趣之参阅书籍。 
要是您愿意,在大学被投入四年之光阴(或者连续当研究生学院投入还多之年华)。这将设您获取部分办事的入门资质,并且会于您有些有关这科目尤其刻骨铭心的认,而而您无喜学习,你吗可以(需要有的奉)在工作中获得接近之更。但不管怎样,仅仅看开是绝对不够的。“计算机是的傅不见面吃任何人成为标准程序员,正如研究笔刷和颜料不见面给任何人成为业内画家一样。”,《新黑客辞典》的作者Eric
Raymand如是说。我所请了之极好的程序员之一 [3]
仅拥有高中学历。他可缔造有了众光辉 的软件 ,拥有他协调的讯息组
,甚至在股票期权中赚取到足够的钱买下同样贱自己之夜总会 。 
及另程序员共同完成一些项目。在少数种类受到变成最优秀之程序员,而于其它有种中变为最好糟糕的。当您无限精彩时,你以发生时机测试好领导一个路之力,并且以你的视野去激励其他人。当您顶不好时,你如果学习大师们举行了啊,而不希罕做啊(因为他俩让你错过也她们做)。 
从今任何程序员那里接手一些品种。理解其他人修好的次第。看看发生啊要掌握的,并于原作者不在的当儿试着自己去化解一些题目。考虑一下如何筹划而的先后会给她再也易吃那些自您手里接手项目的众人掌握。 
念至少六种植编程语言。其中囊括同种支持类华而不实的言语(如Java或C++),一种植支持函数抽象的言语(如LISP或ML),一栽支持语法抽象的语言(如LISP),一种植支持声明规范的语言(如Prolog或C++模板),一栽支持协程的语言(如Icon或Scheme)以及同种支持并行处理的言语(如Sisal)。 
纪事在“计算机科学”中发生一个“计算机”。你如解计算机要多长时间去实践你的同等漫漫指令、需要多长时间从外存中读取一个许(带有或无带有缓存缺失)、需要多长时间从磁盘中老是读博字符以及需要多长时间完成磁盘的复定位。(答案于这边

参与一个言语的业内制订工作。这可以是ANSI
C++委员会项目,也得以只是是决定你的代码是故2只还是4独空格作为缩进。但无论如何,这将会晤为您拟到其他人对语言的溺爱及她们到底对斯起多么偏好,甚至你还可能理解为什么他们会发这个偏好。 
拥有尽快从言语标准化工作被抽身的理智。 

  最要做的几件重要工作有就是是确保喝足的趟,你当太阳下打球,没半个钟头而喝及500ml的水,也许有人说立刻也最为多矣,但为调动你的潜力,宁可多喝水,也不可知少喝水。在打球期间,你或发饿,并且乏力,在斯时段,吃等同块巧克力或香蕉。

是因为以上经历,我死怀疑若会从本本中学到多少。在自第一个男女发生生前,我读了颇具的指南书籍,但还是感到茫然。30个月下,当我第二单子女出生的时刻,我还需回到复习那些书吗?不,这次完全依赖自身之个人经验了。这对准自我吧肯定比家等写的数千页的纸更起功力。
Fred Brooks,在他的文章《没有银弹
》中指出了寻找相同各英雄的次序设计者的老三个步骤:
抢系统的规定一批顶级设计者队伍。 
差一个业务主管来顶住前景的前行与确保职业规划。 
也增长设计师们的互相影响及激励提供足够的机。 

由了结球后的于留

这样做的前提是已经使了某具有一个伟人设计者所当之素质,他如果做的只有是失去引导其他人的前行。Alan
Perlis
将这些易得更其简洁:“每个人犹能够学会雕塑:米开朗基罗这样的总人口反而需要上怎样不失雕塑。伟大之程序员也是如此。”
从而,尽管去置办那本Java的教程吧。或许你会从中学到几什么,但你莫见面因此改变人生,也非会见于24时、24天还是24独月后成为一个确的程序员。 

  我于平糟糕重复,要多喝水为补充失去的水分,水分对你的肌至关重要,水会将营养送上肌肉中,打球后未急于用,休息45分钟

参考文献: 
Bloom, Benjamin (编)《在青少年中培养人才
》, 百龄坛, 1985.
Brooks, Fred, 《没有银弹 》, IEEE计算机,
vol. 20, no. 4, 1987, p. 10-19.
Bryan, W.L.和Harter,
N.《电报语言研究:一种植习惯及的得到》, 心理学回顾, 1899, 8,
345-375
Hayes, John R., 《完全问题要解 》,
Lawrence Erlbaum, 1989.
Chase, William G.和Simon, Herbert
A.《国际象棋的感知 》, 认知心理学, 1973, 4, 55-81
Lave, Jean,
《实践着体会:日常生活中之盘算,数学和知识 》, 剑桥大学出版社,

答案: 
当第一流PC机上各种操作的切近时间:
实施典型指令 
1/1,000,000,000 秒 =1 纳秒 

自一级缓存中读取数据 
0.5 纳秒 

支行预测错误 
5 纳秒 

起二级缓存中读取数据 
7 纳秒 

互斥锁定 / 解锁 
25 纳秒 

自从主存储器中读取数据 
100 纳秒 

于 1Gbps 的网被发送 2KB 数据 
20,000 纳秒 

从外存中读取 1MB 数据 
250,000 纳秒 

自新的磁盘位置读取数据 ( 寻轨 ) 
8,000,000 纳秒 

打磁盘中读取 1MB 数据 
20,000,000 纳秒 

以美国向阳欧洲发包并返回 
150 毫秒 =150,000,000 纳秒 

附录:语言的选项 
无数人口且问我当率先学啊种编程语言。答案并无唯,但用考虑以下几点:

好用你的冤家等。每每让问及“我该用啊种操作系统,Windows、Unix还是Mac?”的时光,我之报总是:“用你的意中人等还于于是的那种。”你于朋友那里学到的东西只要多高于操作系统或编程语言中的本来优势。但也如考虑到您未来底冤家:若你继续上学,你必会投入到某个程序员社区被失去。你所选择的言语是否具备一个周边向上的社区?还是濒临灭绝?是否生足的图书、网站或者在线论坛为你寻找答案?你是否喜欢那些社区被的众人? 
保障简单。像C++或Java这种编程语言是啊那些由关心他们代码执行效率还阅历老到的程序员组成的普遍团队来进行正规化开发使计划之。因此,这些编程语言都装有为这些情形而设计之复杂性结构。你体贴的凡读编程,而不是那些复杂的物。所以若要的凡如出一辙种植为程序员新手便于记忆与习要规划的语言。 
运作。你再度爱哪种上钢琴演奏的点子:正常的竞相模式,当你按照下一个琴键的时马上就足以听见相应之音符。还是“批发”模式,只有以公成功整段乐曲之后才会听到动静?显然互动模式被上钢琴变得重新简便易行,编程亦是这么。坚持同等种植互相模式之言语并行使它们。 

让有上述这些轨道,我建议首先学的语言是Python
或Scheme
。但您本身的状况或者截然不同,所以还有好多任何科学的选择。如果你的年龄是只位数,你可能再也喜欢Alice
或Squeak
(年长一些的学习者可能吗会爱这些)。重点在于——你选择而你起来。

附录:书籍与其余资源 
经常有人问有哪些书还是网站可学。我一再“仅仅看开是绝对不够的”,但我可推荐以下这些:
Scheme: 《计算机程序的结构与诠释
》(Abelson和Sussman)可能是针对性计算机是最好之牵线,同时作为了解计算机对的同样种植途径,本书也教如何编程。你可关押这本开之在线视频讲座
,或是完整的在线文本
。这仍开具有挑战性并将淘汰部分用外方法获得成功之人。 
Scheme: 《如何筹划程序
》(Felleisen等虚构)是如出一辙本好美好之牵线如何用典雅而且休失实用的计去编程的书。 
Python: 《Python编程:计算机是导论
》(Zelle)是一律管之所以Python完成的没错的导论。 
Python: Python网站 上之组成部分在线教程
都是非常实用的。 
Oz: 《计算机编程的定义,技术及模型
》(Van
Roy和Haridi)被认为是现代Abelson与Sussman的传人。本书通过编程的完好构思,在更爱阅读和学习之以,较之Abelson与Sussman获得了再宽泛的视野。该书采用了一如既往种植名叫Oz的编程语言,虽然其并无深受民众所知晓,但可以非常好的作为其它语言的底子来上学。 

作者注: 
T. Capey指出,亚马逊网站上《完全问题要解
》一书的页面被,“购买这商品之买主也又请”一桩里曾经起了《30天学会孟加拉语》和《24时内使会协调语法与格调》。我猜测这间绝大多数底食指是后文中看到那些书之。感谢Ross
Cohen在Hippocrates问题达到针对自的支援。

翻译注: 
[1]毕为:出版日期在1992年后,题目中富含“天”并而寓“学习”或“自学”。
返回>> 
[2]初稿中呢“in
English”,是将前的拉丁文翻译啊英文。因为本文是翻译稿,所以一直说成汉语。
返回>> 
[3]指Jamie Zawinski——XEmacs和Netscape
Navigator的老祖宗。 返回>>