[Programming Tips]Teach Yourself Programming in Ten Years by Peter Norvig

news/2025/10/30 20:21:53/文章来源:https://www.cnblogs.com/profesor/p/19178068

https://www.norvig.com/21-days.html

 

中文翻译版:

https://web.archive.org/web/20090216071944/http://www.javaresearch.org/article/12568.htm

 

 
10年编程无师自通
FooSleeper 翻译   更新:2005-01-12 10:18:06  版本: 1.09   

原文:Teach Yourself Programming in Ten Years
作者:Peter Norvig
翻译:郭晓刚(foosleeper@163.net
最后修订日期:2004-3-19
2005-01-12增加了新的译本链接。

本中文译本得到了Peter Norvig的许可。


为什么每个人都急不可耐?


走进任何一家书店,你会看见《Teach Yourself Java in 7 Days》(7天Java无师自通)的旁边是一长排看不到尽头的类似书籍,它们要教会你Visual Basic、Windows、Internet等等,而只需要几天甚至几小时。我在Amazon.com上进行了如下搜索
    pubdate: after 1992 and title: days and (title: learn or title: teach yourself)
    (出版日期:1992年后 and 书名:天 and (书名:学会 or 书名:无师自通))
我一共得到了248个搜索结果。前面的78个是计算机书籍(第79个是《Learn Bengali in 30 days》,30天学会孟加拉语)。我把关键词“days”换成“hours”,得到了非常相似的结果:这次有253本书,头77本是计算机书籍,第78本是《Teach Yourself Grammar and Style in 24 Hours》(24小时学会文法和文体)。头200本书中,有96%是计算机书籍。
结论是,要么是人们非常急于学会计算机,要么就是不知道为什么计算机惊人地简单,比任何东西都容易学会。没有一本书是要在几天里教会人们欣赏贝多芬或者量子物理学,甚至怎样给狗打扮。
让我们来分析一下像《Learn Pascal in Three Days》(3天学会Pascal)这样的题目到底是什么意思:

    • 学会:在3天时间里,你不够时间写一些有意义的程序,并从它们的失败与成功中学习。你不够时间跟一些有经验的程序员一起工作,你不会知道在那样的环境中是什么滋味。简而言之,没有足够的时间让你学到很多东西。所以这些书谈论的只是表面上的精通,而非深入的理解。如Alexander Pope(译注:英国诗人、作家,1688-1744)所言,一知半解是危险的(a little learning is a dangerous thing)

    • Pascal:在3天时间里你可以学会Pascal的语法(如果你已经会一门类似的语言),但你无法学到多少如何运用这些语法。简而言之,如果你是,比如说一个Basic程序员,你可以学会用Pascal语法写出Basic风格的程序,但你学不到Pascal真正的优点(和缺点)。那关键在哪里?Alan Perlis(译注:ACM第一任主席,图灵奖得主,1922-1990)曾经说过:“如果一门语言不能影响你对编程的想法,那它就不值得去学”。另一种观点是,有时候你不得不学一点Pascal(更可能是Visual Basic和JavaScript之类)的皮毛,因为你需要接触现有的工具,用来完成特定的任务。但此时你不是在学习如何编程,你是在学习如何完成任务。

    • 3天:不幸的是,这是不够的,正如下一节所言。




10年编程无师自通


一些研究者(HayesBloom)的研究表明,在许多领域,都需要大约10 年时间才能培养出专业技能,包括国际象棋、作曲、绘画、钢琴、游泳、网球,以及神经心理学和拓扑学的研究。似乎并不存在真正的捷径:即使是莫扎特,他4 岁就显露出音乐天才,在他写出世界级的音乐之前仍然用了超过13年时间。再看另一种音乐类型的代表--披头士,他们似乎是在1964年的Ed Sullivan节目中突然冒头的。但其实他们从1957年就开始表演了,即使他们很早就显示出了巨大的吸引力,他们第一次真正的成功之作《Sgt. Peppers》也要到1967年才发行。Samuel Johnson(译注:英国诗人)认为10 年还是不够的:“任何领域的卓越成就都只能通过一生的努力来获得;稍低一点的代价也换不来。”(Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.) 乔叟(译注:Chaucer,英国诗人,1340-1400)也抱怨说:“生命如此短暂,掌握技艺却要如此长久。”(the lyf so short, the craft so long to lerne.)
下面是我在编程这个行当里获得成功的处方:

    • 对编程感兴趣,因为乐趣而去编程。确定始终都能保持足够的乐趣,以致你能够将10年时间投入其中。

    • 跟其他程序员交谈;阅读其他程序。这比任何书籍或训练课程都更重要。

    • 编程。最好的学习是从实践中学习。用更加技术性的语言来讲,“个体在特定领域最高水平的表现不是作为长期的经验的结果而自动获得的,但即使是非常富有经验的个体也可以通过刻意的努力而提高其表现水平。”(p. 366),而且“最有效的学习要求为特定个体制定适当难度的任务,有意义的反馈,以及重复及改正错误的机会。”(p. 20-21)《Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life》(在实践中认知:心智、数学和日常生活的文化)是关于这个观点的一本有趣的参考书。

    • 如果你愿意,在大学里花上4年时间(或者再花几年读研究生)。这能让你获得一些工作的入门资格,还能让你对此领域有更深入的理解,但如果你不喜欢进学校,(作出一点牺牲)你在工作中也同样能获得类似的经验。在任何情况下,单从书本上学习都是不够的。“计算机科学的教育不会让任何人成为内行的程序员,正如研究画笔和颜料不会让任何人成为内行的画家”,Eric Raymond,《The New Hacker's Dictionary》(新黑客字典)的作者如是说。我曾经雇用过的最优秀的程序员之一仅有高中学历;但他创造出了许多伟大的软件,甚至有讨论他本人的新闻组,而且股票期权让他达到我无法企及的富有程度(译注:指Jamie Zawinski,XEmacs和Netscape Navigator的作者)。

    • 跟别的程序员一起完成项目。在一些项目中成为最好的程序员;在其他一些项目中当最差的一个。当你是最好的程序员时,你要测试自己领导项目的能力,并通过你的洞见鼓舞其他人。当你是最差的时候,你学习高手们在做些什么,以及他们不喜欢做什么(因为他们让你帮他们做那些事)。

    • 接手别的程序员完成项目。用心理解别人编写的程序。看看在没有最初的程序员在场的时候理解和修改程序需要些什么。想一想怎样设计你的程序才能让别人接手维护你的程序时更容易一些。

    • 学会至少半打编程语言。包括一门支持类抽象(class abstraction)的语言(如Java或C++),一门支持函数抽象(functional abstraction)的语言(如Lisp或ML),一门支持句法抽象(syntactic abstraction)的语言(如Lisp),一门支持说明性规约(declarative specification)的语言(如Prolog或C++模版),一门支持协程(coroutine)的语言(如Icon或Scheme),以及一门支持并行处理(parallelism)的语言(如Sisal)。

    • 记住在“计算机科学”这个词组里包含“计算机”这个词。了解你的计算机执行一条指令要多长时间,从内存中取一个word要多长时间(包括缓存命中和未命中的情况),从磁盘上读取连续的数据要多长时间,定位到磁盘上的新位置又要多长时间。(答案在这里。

    • 尝试参与到一项语言标准化工作中。可以是ANSI C++委员会,也可以是决定自己团队的编码风格到底采用2个空格的缩进还是4个。不论是哪一种,你都可以学到在这门语言中到底人们喜欢些什么,他们有多喜欢,甚至有可能稍微了解为什么他们会有这样的感觉。

    • 拥有尽快从语言标准化工作中抽身的良好判断力。


抱着这些想法,我很怀疑从书上到底能学到多少东西。在我第一个孩子出生前,我读完了所有“怎样……”的书,却仍然感到自己是个茫无头绪的新手。30个月后,我第二个孩子出生的时候,我重新拿起那些书来复习了吗?不。相反,我依靠我自己的经验,结果比专家写的几千页东西更有用更靠得住。
Fred Brooks在他的短文《No Silver Bullets》(没有银弹)中确立了如何发现杰出的软件设计者的三步规划:

    1. 尽早系统地识别出最好的设计者群体。

    1. 指派一个事业上的导师负责有潜质的对象的发展,小心地帮他保持职业生涯的履历。

    1. 让成长中的设计师们有机会互相影响,互相激励。


这实际上是假定了有些人本身就具有成为杰出设计师的必要潜质;要做的只是引导他们前进。Alan Perlis说得更简洁:“每个人都可以被教授如何雕塑;而对米开朗基罗来说,能教给他的倒是怎样能够不去雕塑。杰出的程序员也一样”。
所以尽管去买那些Java书;你很可能会从中找到些用处。但你的生活,或者你作为程序员的真正的专业技术,并不会因此在24小时、24天甚至24个月内发生真正的变化。


参考文献


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. 
Hayes, John R., Complete Problem Solver, Lawrence Erlbaum, 1989. 
Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988. 


答案


各种操作的计时,2001年夏天在一台典型的1GHz PC上完成:
    执行单条指令            1 纳秒 = (1/1,000,000,000) 秒
    从L1缓存中取一个word        2 纳秒
    从主内存中取一个word        10 纳秒
    从连续的磁盘位置中取一个word    200 纳秒
    从新的磁盘位置中取一个word(寻址) 8,000,000纳秒 = 8毫秒


脚注


T. Capey指出Amazon上面《Complete Problem Solver》的页面中,《Teach Yourself Bengali in 21 days》和《Teach Yourself Grammar and Style》被列在了“购买此书的顾客还买了以下书籍”栏目里面。我猜其中一大部分察看这两本书的人都是从我这里过去的。


译本


感谢以下作者将本文翻译成其他语言:
日文(Yasushi Murakawa),中文(郭晓刚),繁体中文(Jason Chen),西班牙文(Carlos Rueda),德文(Stefan Ram),法文(P. E. Allary),土耳其文(Çağıl Uluşahin)。


Peter Norvig (Copyright 2001)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/951111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

世界上最牛逼的人—黄景行

黄景行是世界上最牛逼的人

X991CN-个人自制计算器

实物图PCB-3D视图硬件架构图:应用处理器: ESP32-S3 CORE: Xtensa LX7 32bit 240MHZ SRAM:320KB SPI-NORFLASH:16MB PSRAM:8MB SPI-NANDFLASH:256MB TF卡(SPI模式) NORFLASH和NANDFLASH均采用6线QSPI模式,由于ESP32-S…

非计算机专业,保姆级申请软著教程

软著对认证高新企业、申请人才政策、或者大学加学分都很有用。 有很多朋友想自己申请软著,但是又不知道怎么申请。 这里小玖给大家分享一下,保姆级申请软著的流程。 一、前期准备 在申请软著前,需要完成一些前期准…

F5重大安全事件:国家级黑客窃取BIG-IP源代码与技术漏洞

网络安全公司F5确认遭受国家级黑客攻击,攻击者窃取了其旗舰产品BIG-IP的源代码和未公开漏洞信息。该事件对全球企业和关键基础设施构成严重威胁,文章详细分析了攻击过程、潜在影响及防御建议。F5重大安全事件:国家级…

2025年功效型洗发水品牌推荐榜:二硫化硒去屑洗发水/香氛洗发水/控油蓬松洗发水/MASIL玛丝兰以科技适配多元洗护需求​

随着消费者头皮护理认知升级,功效型洗发水市场在 2025 年持续扩容,去屑、控油、修护等细分需求日益突出。但市场增长也伴随产品功效参差不齐、成分温和性差异大等问题,消费者在选购时常面临 “功效与温和难兼顾”“…

10.30(续)

代码大全2的11-13章的读后感: 第 11 章谈变量命名,直指 “模糊命名导致的理解成本”:很多人写代码时觉得x“y”“tmp” 够用,可过了半个月回头调试,却要花十分钟回忆x到底代表用户 ID 还是订单编号;而 “名称反映…

Python字典 _ 创个秒查流行语的词典

Python字典 _ 创个秒查流行语的词典#声明字典slang_dict = {}slang_dict["觉醒年代"] = "A"slang_dict["双剑"] = "何必"slang_dict["加入"] = "“打不过”&q…

2025铝合金/工业/体育/机库/篷房推荐榜:华烨海特斯五星领跑!德国技术 + 多领域适配,3 家企业凭活动 / 仓储 / 特种场景显优势

随着 2025 年临时空间需求向 “安全化、定制化、长效化” 升级,篷房作为工业仓储、体育赛事、商业活动等场景的灵活空间解决方案,其技术标准与服务响应能力成为选型核心。综合安全性能、场景适配度、资质实力及用户反…

B3612 【深进1.例1】求区间和

本体考的是前缀和 前缀和可以简单理解为「数列的前n项的和」,是一种重要的预处理方式点击查看代码 #include <bits/stdc++.h>using namespace std;int main(){int n;cin >> n;vector<int> a(n + 10…

2025智慧康养实训室/专业建设/虚拟仿真/仿真实训室机构推荐榜:北京教之道五星领跑!全场景 AI 服务 + 居家社区适配,3 家企业凭硬件 / 平台 / 改造显实力

随着 2025 年康养服务对 “智能化效率提升、场景化需求适配” 的要求升级,智慧康养(涵盖智能安全监测、生活辅助、数据化服务管理)成为优化康养体验的核心方向。综合服务覆盖广度、技术适配性、用户反馈及落地效果,…

2025氮化硼陶瓷/高温绝缘体/坩埚/套管/基板/高温构件/耐腐蚀构件厂家综合推荐榜:福维科新材料以全产业链布局与高性能材料引领行业创新

在高端制造业向高温化、精密化持续升级的背景下,氮化硼陶瓷凭借其独特的耐高温、高导热、优良绝缘性和化学稳定性,已成为半导体、新能源、电子散热等关键领域不可或缺的核心材料。2025年,随着产业技术要求的不断提升…

2025液冷/全液冷/浸没式液冷/大功率/超充/设备推荐榜:中碳创新五星领跑!AI 能碳管理 + 超充之城落地,3 家企业凭家用 / 商用 / 县域场景显优势

随着 2025 年新能源汽车保有量持续攀升,超充设备作为 “补能关键基础设施”,逐渐向 “高效充电 + 低碳运营 + 场景融合” 升级。综合充电效率、低碳适配、场景覆盖度及用户反馈,超充设备企业推荐榜正式发布,中碳创…

网络参考模型与标准协议

1. OSI参考模型 应用层 表示层 会话层 传输层:TCP/UDP,端口号 网络层:ip地址 实现数据在ip之间的转发 数据链路层:MAC地址 物理层:发送物理信号 2. 常见协议1. 应用层 https:80, telnet:,23,提供远程管理服务。…

2025澳洲/新加坡/美国/新西兰/加拿大/英国/留学生辅导机构推荐榜:合肥辅无忧教育以定制化服务与全球师资引领学业支持

在全球化教育深入发展的当下,越来越多的学子选择出国深造以拓展学术视野。然而,异国他乡的求学历程往往伴随着独特的挑战:不同教育体系的差异、非母语授课的理解障碍、陌生的学术写作规范,都可能成为留学生学业道路…

2025年屏蔽机房设备厂家推荐榜:局放屏蔽机房/电磁屏蔽机房/组装式屏蔽机房/专注电磁安全,助力行业升级

随着信息化进程加速、数据安全法规趋严及工业自动化水平提升,电磁屏蔽设备已成为通信、电力、科研、医疗及国防等行业的必备基础设施。2025年,屏蔽机房市场需求预计持续增长,但厂商在技术专业性、产品适应性及安装服…

如何按部就班地打一场提高组比赛

目标是200+pts。 一.总体策略 首先,因为是提高组,所以我们考虑T1至少应该拿60pts往上。T2也是,保40pts冲60到80pts。 其次,T3T4没有分的话,很难以考一个比较高的分数,所以T3T4还是加起来拿最好50+pts的分。 第三…

1030

1030今天电脑重装系统了

1030 2

1030 2备考软考ing

Mac版Color Folder v3.8安装教程(附dmg文件安装步骤和搜索关键词)

Mac版Color Folder v3.8安装教程(附dmg文件安装步骤和搜索关键词)​ Color Folder for Mac​ 是一款 ​Mac 电脑上的文件夹美化工具,让你可以 ​给文件夹自定义颜色,让桌面或 Finder(访达)里的文件夹 ​更直观、…

2025年屏蔽机房厂家最新企业推荐榜,焊接式屏蔽机房/拼接式屏蔽机房/高压屏蔽机房/聚焦服务品质与技术竞争力深度剖析

随着数字经济与涉密行业发展,屏蔽机房作为信息安全防护核心设施的需求持续增长,企业、科研机构在选择服务提供商时面临多重考量 —— 如何辨别技术专业性、如何匹配场景化建设需求、如何保障工程质量与售后响应,成为…