[转]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的元老。 返回>>