原文地址:http://norvig.com/21-days.htmlcss
翻译放在了每一小段的下面html
为何每一个人都急于求成!?前端
Walk into any bookstore, and you'll see how to Teach Yourself Java in 24 Hours alongside endless variations offering to teach C, SQL, Ruby, Algorithms, and so on in a few days or hours. The Amazon advanced search for [title: teach, yourself, hours, since: 2000 and found 512 such books. Of the top ten, nine are programming books (the other is about bookkeeping). Similar results come from replacing "teach yourself" with "learn" or "hours" with "days."node
The conclusion is that either people are in a big rush to learn about programming, or that programming is somehow fabulously easier to learn than anything else. Felleisen et al. give a nod to this trend in their book How to Design Programs, when they say "Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies." The Abtruse Goose comic also had their take.python
Let's analyze what a title like Teach Yourself C++ in 24 Hours could mean:git
alongside :靠着边adv;在...旁边prep
endless :无止境的adj;环状的
variation :变更,变化n
offering :提供v&n
conclusion :结尾,结束,意见,结论
fabulously :难以置信的adv
Felleisen et al. :Felleisen 和其余全部人
nod :点头,
trend :趋势,倾向,流行
idiots :白痴
dummies :
dummy :假的,虚拟的,哑吧
Abtruse Goose
comic :漫画
analyze :对...进行分析
significant :重要的,重大的,有意义的
affect :影响;伪装;感动
tiny :极小的
interface :接口
accomplish :完成
unfortunately :不幸的
中文翻译:
随便走进一家书店,均可以看到相似《24小时学会Java》这样的书,旁边还有不少相似于:几天,几小时内学会C语言、SQL、Ruby以及算法这样的书。若是使用亚马逊上的高级搜索,title:teach,yourself,hours,since:2000这个关键字,将会返回512本这样的书。最前面的10本中,9本是关于编程的(剩下的一本是关于记帐的)。若是把关键字teach yourself 替换成 learn,或者将hours替换成days,返回的结果大同小异。
咱们能够得出结论,人们在学习编程的时候,喜欢急于求成,想快速学好。或者认为编程比其余事情好学,Felleisen 以及其余的做者在他们的书《How to Design Programs》里面说到‘编写烂程序,一点也不难。白痴也能够在21天内学会,即便他们是傻瓜,’在漫画网站Abtruse Goose中也表达了这一点。程序员
咱们来分析一下,像《teach Yourself C++ in 24 Hours》这样的标题的书,表达出来的是什么。web
十年学会编程算法
Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. In another genre, the Beatles seemed to burst onto the scene with a string of #1 hits and an appearance on the Ed Sullivan show in 1964. But they had been playing small clubs in Liverpool and Hamburg since 1957, and while they had mass appeal early on, their first great critical success, Sgt. Peppers, was released in 1967.编程
researcher :研究员;调查者n expertise :专门知识或者技能 variety :品种,种类 composition :创做,写做 telegraph :电报,电信,打电报,电报机 operation :操做,运转 painting :油画n neuropsychology :神经心理学n;/ˌnjʊərə(ʊ)saɪ'kɒlədʒɪ/ topolology :拓扑学;地质学,局部解刨学 deliberative :审议的,供审议的 deliberative practice :有益练习 analyzing :分析 performance :演出,表演,行为,成就 correct :改正,纠正vt;正确的adj appear :显现,出现vi shortcut :捷径n Mozart :莫扎特 prodigy :奇才,天才 genre :类型,流派 beatle :小妞,(有男子气概的)独立摩登新女性 the Beatles :英国摇滚乐队The Beatles burst :爆炸,炸裂vt&vi;忽然打开;爆炸,爆裂n;爆发,突发 scene :情景;景象 appearance :出现,显露,外观n Livepool :利物浦 Hamburg :汉堡(德国西部-城市) mass :大量n;大规模的adj appeal :呼吁,恳求;有吸引力 early on :早期 critical :批评的,爱挑剔的,决定性的,危险的 Sgt. Peppers, :Beatles乐队的专辑 released :已发布;释放v
研究员告诉咱们,想在任何领域成为专家,大概须要10年的时间,这些领域包括下棋,做曲,发电报,弹钢琴,游泳,打网球,研究神经心理学和拓扑学。关键在于有针对性的训练,而不是漫无目的重复,训练的内容要恰好超过你现有的水平,练习之后要分析你的表现,改正发现的错误,而后重复,再重复。没有什么捷径可走,即便是莫扎特,一个4岁就能弹琴的音乐天才,也是用了13年的时间,才真正的写出世界级的音乐做品。在流行音乐圈,Beatles(披头士)好像是在1964年访美期间一晚上成名的。实际上,他们从1957年就已经开始在利物浦和汉堡的小酒馆里唱歌了,他们组建乐队的时间就更早了,他们第一张取得巨大成功的专辑《佩帕军士》,是在1967年发行的。
Malcolm Gladwell has popularized the idea, although he concentrates on 10,000 hours, not 10 years. Henri Cartier-Bresson (1908-2004) had another metric: "Your first 10,000 photographs are your worst." (He didn't anticipate that with digital cameras, some people can reach that mark in a week.) True expertise may take a lifetime: Samuel Johnson (1709-1784) said "Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price." And Chaucer (1340-1400) complained "the lyf so short, the craft so long to lerne." Hippocrates (c. 400BC) is known for the excerpt "ars longa, vita brevis", which is part of the longer quotation "Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile", which in English renders as "Life is short, [the] craft long, opportunity fleeting, experiment treacherous, judgment difficult." Of course, no single number can be the final answer: it doesn't seem reasonable to assume that all skills (e.g., programming, chess playing, checkers playing, and music playing) could all require exactly the same amount of time to master, nor that all people will take exactly the same amount of time. As Prof. K. Anders Ericsson puts it, "In most domains it's remarkable how much time even the most talented individuals need in order to reach the highest levels of performance. The 10,000 hour number just gives you a sense that we're talking years of 10 to 20 hours a week which those who some people would argue are the most innately talented individuals still need to get to the highest level."
popularize :使受欢迎
concentrate :专心于;注意集中vt&vi;浓缩vt
metric :度量标准
photograph :照片,相片;给...拍照
worst :最坏的adj&adv
anticipate :预感,指望,先于...行动vt
digital cameras :数码相机
excellence :优秀,长处,
attained :取得,得到
labor :劳工n;劳动vi;详细分析vt,使厌烦
purchase :购买
complained :抱怨
craft :手艺;工艺n;精巧地制做vt
lerne :不知道是否是 学习的意思?
the lyf so short, the craft so long to lerne :
excerpt :摘录,摘要
ars longa, vita brevis : 生命短暂,艺术长远(拉丁语)
quotation :引用,引述
Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile:
生命很短暂,可是艺术却能够很高深,机遇转瞬即逝,探索难以琢磨,抉择困难重重
render :翻译
opportunity :机会
fleeting :飞逝的,转瞬间的
experiment :实验,试验
treacherous :骗人的,不可信的 /'tretʃ(ə)rəs/
judgment :判断
reasonable :合理的,同情达理的
assume :假定;承担;呈现;采起
exactly ;精确的
nor :也不
remarkable :异常的,引人注目的
talented :有才能的,多才的
individual :个别的,单独的,我的的
argue :争吵,辩论vt&vi;坚定主张,劝说,代表
innately :天赋的;与生俱来的
马尔科姆·格拉德威尔让下面这个理论广为人知,虽然他表达的是专一10,000个小时而不是10年(出自异类 : 不同的成功启示录)。法国现实主义摄影大师亨利·卡蒂埃-布列松有另一个观点,“你的前10,000张照片是你最差的”。(这位大师没有意识到数码相机的出现,不少人能在一周内就能够拍10,000张照片)真正的大师要用一辈子来完成,英国做家,文学评论家和诗人塞缪尔·约翰逊说过:“在任何领域取得卓越的成就都要用一辈子的努力,你不可能用很低的代价就完成。”英国的诗人乔叟也曾经说过:”生命是短暂的,艺术的学习没有尽头。”希波克拉底(公元前400年)有一个广为人知的语语录,"ars longa, vita brevis",他也认为艺术没有止境,生命却有尽头。这句话来自一首长诗,"Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile"翻译成中文( 文中是英语)的意思是:“生命很短暂,可是艺术却能够很高深,机遇转瞬即逝,探索难以琢磨,抉择困难重重。”固然,不会有一个肯定的答案告诉你须要多长时间,毕竟,假设掌握全部的技能(好比编程,下棋,跳棋和音乐)须要相同的时间也不合适,不一样的人也会用不一样的时间。K.Anders Ericsson教授说过:“值得注意的是,在大多数领域,即便你是个天才,要达到专家级别的高水平仍然须要时间。10,000个小时只是给你一个概念,一个天才,若是每周练习10到20个小时的时间,仍然须要数年时间才能达到专家级别的水平。”
那么,你想成为一名程序员吗
Here's my recipe for programming success:这是我学习编程成功的秘诀
对编程要有兴趣,找到编程中的快乐。保证足够的乐趣,你才能在编程这件事情上花费10年或者10000个小时的时间
recipe :食谱;方法;秘诀n
technically :技艺上,技巧上;严格的来讲
maximal :最全面的;最高的
individuals :个别的
given :规定的adj;考虑到prep
increased :增长的
deliberate :蓄意的,慎重的,镇定自若的,从容不迫的,仔细考虑
effort :努力,尽力,成就
effective :有效的
well-defined :清晰可辩的
appropriate :适当的
particular :特定的
informative :提供信息的
feedback :反馈;回复
opportunity :机会
repetition :重复
corrections :纠正
reference :说起,涉及,参考
viewpoint :观点
和其余程序员交流,阅读其余程序员的代码。这比看书或者参加培训课程重要的多!
graduate :研究生的
access :通道,入口
credential :资格证书,资格
field :田,地,场所,领域
dedication :奉献,应该指的是奉献时间和意志力吧,
in any case :不管如何
brushes ;刷子,画笔
pigment :颜料
expert :熟练地adj;专家n;当专家vt
hired :租用,雇用
stock options :职工优先认股权
inspire :鼓舞
vision :视力,眼力,幻象,美景,想象力n;显现,梦见,想象vt
original :原物,原做,原型n;原始的adj
around :处处;大约,在附近adv;四处,在...周围prep
maintain :保持,继续,保养,维护
half dozen :半打
emphasize :强调,这里应该是,语言比较强势,比较在行的部分
class abstraction :面相对象编程 /əb'strækʃ(ə)n/
functional abstraction :函数式编程
syntactic abstraction :句法抽象
declarative specifications :声明性规范
parallelism :并发
execute :执行
instruction :命令
cache miss :表示缓存没有命中
consecutive :连续的,连贯的
location :位置
involved :卷入,有关,复杂的adj;设计,使参与v
get involved :介入
standardization :标准化 /ˌstændədai'zeiʃən/ 这里应该是一个语言标准化论坛或者社区的工做
effort :努力,尽力,成就
committee :委员会
indentation :代码缩进
perhaps :也许
sence :领悟,感受n;意识到
有良好的判断力,尽量块的完成语言标准化的工做
With all that in mind, its questionable how far you can get just by book learning. Before my first child was born, I read all the How To books, and still felt like a clueless novice. 30 Months later, when my second child was due, did I go back to the books for a refresher? No. Instead, I relied on my personal experience, which turned out to be far more useful and reassuring to me than the thousands of pages written by experts.
你要思考这些,很难说你能从书本中学到多少东西。我第一个小孩出生的时候,我读了全部的“如何作”系列的书,可是,依然像一份无能的新手,没有什么头绪。30个月之后,当个人第二个孩子出生,我还要重温一下那些书么?固然不用了!我彻底靠我本身的经验,事实也证实我本身的经验要赛过那些专家们写的上千页的书。
Fred Brooks, in his essay No Silver Bullet identified a three-part plan for finding great software designers:
弗雷德的书《No Silver Bullet》累出了三条建议
一、尽早系统的的识别出顶尖工程师
二、每一个人分配一个职业生涯导师
三、提供机会,让这些人相互交流和激励
clueless :无能的
novice :新手
due :到期的。应得的
refresher :复习进修的
relied :依赖
reassuring :安慰的,可靠的,鼓气的
expert :熟练的,内行的;专家,能手;当专家
essay :散文
No Silver Bullet :没有银弹
identify :认出,识别,支持
Systematically :有系统的;/ˌsistə'mætikəli/
Assign :分配,指派
mentor :有经验可信赖的顾问
prospect :前途,预期
provide opportunities :提供机遇
interact :互相影响
stimulate :刺激;鼓舞 /'stɪmjʊleɪt/
This assumes that some people already have the qualities necessary for being a great designer; the job is to properly coax them along. Alan Perlis put it more succinctly: "Everyone can be taught to sculpt: Michelangelo would have had to be taught how not to. So it is with the great programmers". Perlis is saying that the greats have some internal quality that transcends their training. But where does the quality come from? Is it innate? Or do they develop it through diligence? As Auguste Gusteau (the fictional chef in Ratatouille) puts it, "anyone can cook, but only the fearless can be great." I think of it more as willingness to devote a large portion of one's life to deliberative practice. But maybe fearless is a way to summarize that. Or, as Gusteau's critic, Anton Ego, says: "Not everyone can become a great artist, but a great artist can come from anywhere."
So go ahead and buy that Java/Ruby/Javascript/PHP book; you'll probably get some use out of it. But you won't change your life, or your real overall expertise as a programmer in 24 hours or 21 days. How about working hard to continually improve over 24 months? Well, now you're starting to get somewhere...
此处假设有一些人天生有成为伟大工程师的潜质,而后,就是正确的去引导他们。艾伦·佩里斯一针见血地说:”假如每一个人均可以学会雕刻,那就得教米开朗基罗哪些事不能作。对于伟大程序员,也是如此。”Perlis认为,伟大的人有一种内在的特质,这种特质每每比接受训练更重要。可是,这些特质是从哪里来的呢?与生俱来的?仍是经过后天勤奋而来的?正如 动画片《料理鼠王》里的幻象大厨Auguste Gusteau说的那样:“谁都能作饭,但只有那些无所畏惧的人才能成为大厨!”我认为“把你生命中的大部分时间花在有针对性的练习上”这种精神,看做一种自愿奉献的精神!但或许“无所畏惧”才是体现这种精神的真谛。或者,就像是《料理鼠王》里那个与 Gusteau 做对的刻薄的美食评论家 Anton Ego 说的那样:“不是任何人都能成为伟大的艺术家,不过,伟大的艺术家能够来自任何地方。”
因此,买本 Java/Ruby/Javascript/PHP 的书就开始学习吧。你可能会从中学到点儿有用的东西。可是若是你想要改变本身的生活,靠在 21 天内或 24 小时内获得所有的编程技能,提升你实际的编程水平,这是不可能的。你尝试过连续 24 个月不间断的努力提升本身么?OK!,为了你的目标开始奋斗吧……
assume :假定;承担
qualities :品质
necessary :须要
properly :适当的
coax :哄,用豪华劝说
succinctly :简便地
sculpt :雕刻;造型 /skʌlpt/
Michelangelo :米开朗琪罗
greats :伟人
internal :国内的,内部的,内在的
transcends :赛过
training :训练
innate :先天的
diligence :勤奋,注意的程度
quality :质量,才能
Auguste Gusteau :料理鼠王
fictional :虚构的
chef :厨师长
Ratatouille :蔬菜杂烩
fearless :无畏的,大胆的
willingness :心甘情愿,乐意;自动自发
devote :致力于,奉献于
portion :部分;一份;命运n;分配,给嫁妆vt
deliberative :审议的,供审议的;这里应该是刻意练习的意思
summarize :总结,概述
critic :批评家,评论家
overall :所有的;全体的
expertise 专门知识·
continually :不断地;频繁的
参考文献
Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.
Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.
Bryan, W.L. & Harter, N. "Studies on the telegraphic language: The acquisition of a hierarchy of habits. Psychology Review, 1899, 8, 345-375
Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.
Chase, William G. & Simon, Herbert A. "Perception in Chess" Cognitive Psychology, 1973, 4, 55-81.
Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.
References :参考文献
Approximate timing for various operations on a typical PC:
在一台普通的电脑上执行各类命令须要的时间
Approximate :近似的
timing :定时;调数;时间选择;为...安排时间
various :各类各样的
operations :运做
typical :典型的
nanosec :毫秒
execute typical instruction | 1/1,000,000,000 sec = 1 nanosec |
fetch from L1 cache memory | 0.5 nanosec |
branch misprediction | 5 nanosec |
fetch from L2 cache memory | 7 nanosec |
Mutex lock/unlock | 25 nanosec |
fetch from main memory | 100 nanosec |
send 2K bytes over 1Gbps network | 20,000 nanosec |
read 1MB sequentially from memory | 250,000 nanosec |
fetch from new disk location (seek) | 8,000,000 nanosec |
read 1MB sequentially from disk | 20,000,000 nanosec |
send packet US to Europe and back | 150 milliseconds = 150,000,000 nanosec |
语言的选择
Several people have asked what programming language they should learn first. There is no one answer, but consider these points:
appendix :附录
做者说,没有一个固定的答案,可是也给了一些建议
一、看看你的朋友怎么说,他们用的什么系统,他们使用什么语言,他们可以给你什么建议,这样作的优点,就是快速了解各类系统和语言之间的差别,也能够各类逛论坛,寻找新朋友。你要考虑的是这门语言的社区是否够大,是否是一个快要挂掉的社区。经过读书,网站,论坛,在线帮助能不能快速找到你的问题的答案。你是否喜欢这个社区的人们,你喜欢和他们讨论各类问题和交流吗?
二、简单一点,像C++和JAVA是为专业的程序开发人员设计的,他们关心的是代码在环境中的运行速度。结果就是,这些语言被设计的很复杂,你入门编程不须要这么复杂的语言。你须要那种被设计的很简单,并且容易记忆的语言,专为初学者设计的语言。
三、开始动手,就像学习弹钢琴同样,你按下一个键,就能听到音符的声音,这就是交互式的学习。或者“批处理”模式,就像在你弹完一首曲子后,立刻就能听到。交互式学习,让学习变得简单。对于编程也是同样,那么就坚持使用交互式模式学习编程吧。 (应该有专门的交互式学习环境,我也没了解过,可是我在学习vim的时候,官方文档中是有交互式的学习文档,并且还找到了vim学习的交互式游戏网站)
advantage :优点,获利
offset :抵消,偏离量
intrinsic :本质的,固有的
community :社区
dying :临终的,死
forums :论坛
concerned :有关的
efficiency :效率
complicated :难懂的,复杂的
circumstances :环境
complication :并发症;复杂
interactive :交互式的
note :笔记,音符
batch :一批;一炉n;分批处理vt
Insist :坚持,强调
Given these criteria, my recommendations for a first programming language would be Python or Scheme. Another choice is Javascript, not because it is perfectly well-designed for beginners, but because there are so many online tutorials for it, such as Khan Academy's tutorial. But your circumstances may vary, and there are other good choices. If your age is a single-digit, you might prefer Alice or Squeak or Blockly (older learners might also enjoy these). The important thing is that you choose and get started.
基于这些条件,我推荐的语言是Python和Scheme。另外一个选择是Javascript(前端编程语言),不是由于他们设计的完美,而是由于,能在网上找到不少这些语言的教程,像可汗学院。每一个人的状况也是不一样的,若是是10岁如下的小孩子,我建议是Alice or Squeak or Blockly (年龄大一些的我也建议,也能从中学到东西),最重要的是你选择以后,开始学习,并坚持下去(最后这个是我本身加的)
given :赠予的;沉溺的;考虑到
criteria :标准,条件
recommendations :推荐
perfectly :完美的
tutorials :教程
circumstances :状况,环境 /'sɜːkəmst(ə)ns/
vary :变化
single-digit :个位数,单位数
附录:推荐的书和资源
Several people have asked what books and web pages they should learn from. I repeat that "book learning alone won't be enough" but I can recommend the following:
Resources :资源
recommend :推荐
following :下面的
T. Capey points out that the Complete Problem Solver page on Amazon now has the "Teach Yourself Bengali in 21 days" and "Teach Yourself Grammar and Style" books under the "Customers who shopped for this item also shopped for these items" section. I guess that a large portion of the people who look at that book are coming from this page. Thanks to Ross Cohen for help with Hippocrates.