• 君生我未生

    2009-02-07

    君生我未生,我生君已老 君恨我生迟,我恨君生早
    君生我未生,我生君已老 恨不生同时,日日与君好
    我生君未生,君生我已老 我离君天涯,君隔我海角
    我生君未生,君生我已老 化蝶去寻花,夜夜栖芳草

  • 原文: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. 尽早系统地识别出最好的设计者群体。

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

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


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

  • 大家可能都看过濮存昕在CCTV的一条非常煽情的公益广告,大致是这么说的:“公益广告能不能改变生活中的陋习呢?我说不,公益广告对于社会中的那些不文 明的现象,也许不可能药到病除,但我相信一条公益广告就好像是一盏灯……”中间穿插许多濮存昕和CCTV认为的“社会不文明现象”,以及看了公益广告之后 人们的反应,例如在踩踏公共长椅的时候垫一张纸,排队过马路的时候退后一步,等等。
      
      这条广告的拍摄技巧和诉...
  • 大家可能都看过濮存昕在CCTV的一条非常煽情的公益广告,大致是这么说的:“公益广告能不能改变生活中的陋习呢?我说不,公益广告对于社会中的那些不文 明的现象,也许不可能药到病除,但我相信一条公益广告就好像是一盏灯……”中间穿插许多濮存昕和CCTV认为的“社会不文明现象”,以及看了公益广告之后 人们的反应,例如在踩踏公共长椅的时候垫一张纸,排队过马路的时候退后一步,等等。
      
      这条广告的拍摄技巧和诉求也没什么特殊,只看 一次很容易就会忘记,但CCTV近一年来是反复轰炸,各个频道都有,奥运会期间更是见缝插针地播出,播一次要一分钟,可谓不惜血本。我这个平时不怎么看电 视的人,奥运会期间也不得不在电视机前接受濮存昕的“社会文明教育”了。
      
      我不喜欢插队、不看红绿灯过马路、乱丢废弃物等现象,对 濮存昕的这个广告没有特别的抵触,但看多了总觉得不是滋味。我们的社会存在许多不文明现象,但是最需要纠正、最需要媒体和社会关注的,难道是濮存昕说的这 些现象吗?我看不是吧。这令我想起了一个故事:东汉顺帝年间,大将军梁冀专横跋扈,人心惶惶,各地盗贼蜂起。为了安定地方情绪,梁冀派出八位御史从洛阳出 发巡视四方,其中一位御史张纲刚出洛阳,就当众叹息道:“豺狼当道,安问狐狸?”意思是说,现在大奸贼梁冀在上面胡作非为呢,还哪有工夫惩治那些小贼啊? 说完就把自己的车轮卸下埋了,写下几万字的弹劾梁冀奏章,坐在路边等死。这段历史我初中时第一次看到,以后每次看到,都感到意气昂昂啊!
      
      我相信,许多人与我抱有类似的想法,即我们社会的不文明现象,主要不是由我们这些守法的纳税人引起的,而是由各级政府机关、公务员、国有企事业单位和其他公权力机构的失职或滥用职权引起的,以下是非常粗略的总结:
      
      我认为领导出门动辄占用一列或多列车道,开奥运会在整个北京设立“奥运车道”,严重阻碍正常交通,甚至当这些车道处于空闲时仍不许市民使用的行为,是不文明的;
      
      我认为三天两头扒开马路进行大修,路口建筑物不停地拆了建、建了拆,红绿灯和街上实际的行车状态完全对不上,红灯时仍然允许车辆右转,交通警察除了罚款之外不起任何实质性作用的行为,是不文明的;
      
      我认为地方政府野蛮拆迁,组织干警或非法武装人员驱赶正常居民,甚至在一夜之间“荡平”整个居民区,只给予其微薄的补助,并拒绝一切媒体采访的行为,是不文明的;
      
      我认为政府官员动辄扰民,例如视察时组织大量学生和职工迎接(甚至要求迎接者提前很长时间准备所谓的文艺演出和欢迎辞),工厂停止运转,占用市民休闲散步用地的行为,是不文明的;
      
      我认为中国石油、中国石化等垄断国企拿着高额补贴还叫嚷要提升油价与国际接轨,中国电信、中国移动收费不透明且经常恶意克扣预付费,既想当婊子又想立牌坊的行为,是不文明的;
      
      我认为在中学和大学阶段,向尚未建立成熟价值观的学生灌输大量官方哲学和政治说教,却忽视至关重要的法律、公民意识、道德情操和古典文化教育,误人子弟的行为,是不文明的。
      
       事实上,濮存昕在CCTV的公益广告中提到的那些不文明现象,在很大程度上并非出于当事人自身不文明,更不是所谓的“陋习”。我们街头的垃圾桶等设施, 经常由于公共管理部门的失职而处于报废或无人看管的状态,人们面对着臭气熏天且运转不良的垃圾回收设施,选择扔在外面,是值得理解的;我们城市的导盲设施 基本是摆设,各级政府从来没有真心希望协助残疾人出行,也没有哪个残疾人会敢于单独出行,不能归咎于占用盲道等残疾人设施的普通市民;我们的公共绿地面积 非常小,要么被圈占,要么被划入豪华住宅区,剩下的还随时可能遭到拆迁开发之厄,所以我怀疑所谓在公园里踩踏长椅的行为有什么普遍性。
      
       我还要说:如果不是城市规划部门搞的一塌糊涂,车辆横行、交通灯靠不住,人们何苦冒着生命危险乱穿马路呢?如果不是道路拥堵严重,为了奥运会和领导出行 等活动经常占用资源,交通警察经常不尽责,车辆何苦违法违规地乱闯红灯呢?如果不是空地和绿地都被拿来作为房地产开发商的生财工具了,小孩子们何苦在人行 道甚至街道上踢球呢?如果不是大量安分守法的市民在拆迁浪潮中被赶到市郊了,他们何苦每天长途跋涉上下班,何苦带着一腔怨气,又何苦做出CCTV认为的“ 不文明现象”呢?
      
      最后,我还必须指出,CCTV在这部公益广告中使用的某些镜头,严重不尊重广大守法公民,也不符合实际。当濮存 昕坐在宽敞的报告厅里侃侃而谈“改变我们生活中的陋习、不文明现象”时,对应的镜头是在过街天桥上拖着沉重的行李来往的市民,以及夜幕下行色匆匆的人群。 这些人都没有濮存昕的财富,没有CCTV的权力,这不意味着CCTV就有资格肆意侮辱践踏他们。他们中的大部分比CCTV的领导,比各级地方政府的公务员 更有道德,更有理想,也更有文化(如果文化是以真正的学识而非表面的资格来定义);他们依靠自己的血汗和智慧获得收入,而不是依靠关系或领导的赏识,在电 视上耍嘴皮子获得高薪;他们害怕政府,害怕法律,除非走投无路或者无计可施,绝不会主动去违反法律,也不会主动背离公共道德。
      
      我 希望,在CCTV下次播出这条“公益广告”的时候,换掉这些侮辱我们的守法公民的
  • 过了12点,开始动手写日志。

    12日将是很繁忙的一天,如果可能的话,要完成两份材料,一份报表,然后再给老雕写两篇他要的软性文字,而且是要能打动妇女要他们掏钱进他的纳兰美容院 的。我不得不承认,在网上学习点什么东西,速度简直是惊人的。在今天之前,我对明珠这位文盲大学士的公子全然没什么了解,明天为了广大北京妇女的需要,我 就得立即了解这个人,然后以他老朋友的口吻去把词人和美容院联系起来。这个世界真疯狂。

    我也是...
  • 缅甸风灾和中国汶川的震灾有颇多相似之处。它们都制造了重大的人身伤亡和经济损失。缅甸和中国都是发展中国家;他们都在国际社会上都面临着“专制”的指责——所幸,中国政府正在逐步走向开明。32年前的唐山大地震,中国政府拒绝了西方国家的救援。现在,出现在灾区的有包括美国、日本、中国台湾在内的多支救援队伍。5年前的非典刚刚爆发,政府甚至屏蔽了了大部分的信息源。而现在,我们的媒体不但尽可能的活跃在抗震救灾第一线,通过各种途径获取消息源,还创造性的在头版打出黑白版面,...
  • 什么是karma?

    最近看过莎朗.斯通在卡城影展上发言视频的人都会对这个词很有兴趣,关于四川汶川地震,她的回应说:这是karma。

    karma或者Karman是一个古老的佛教名词,在中文里曾经翻译为羯磨,现在普遍的说法叫做“业”。而业这个概念甚至远比佛教出现的时间还早, 古印度还没有被雅利安人征服之前,就可能存在。业是一种很复杂、古老、神秘的概念,在讨论莎朗.斯通之前,有必要讨论业;而在讨论业之...
  • 在救援队抵达北川县委大楼勘察时,北川县政法委书记张同凯喊道:“救救我,我是张书记!”

    都江堰市光亚学校语文老师范美忠抢在全班同学之前逃出教室,在网上回顾说:“在这种生死抉择的瞬间,只有为了我的女儿我才可能考虑牺牲自我,其他的人,哪怕是我的母亲,在这种情况下我也不会管的。”

    就这两件事已经有太多人做了评论,我一直没有说话,是因为范美忠老师的那副模样实在是让我难以忍受。平白无故...
  • 请问您下车么?----- 不下

    请问能换下位子么?----- 不换。。。 

  • 在留言看见了很多爱国青年的留言,我加以回答。不知道为什么,爱国者的嘴巴总是比较臭,行为总是比较暴,所以我在这里做了大量的过滤工作,好让这场问答显得像是场只是不同观点的对话。以下的问题虽然只有十几个字,但事实都是我从几百个字里进行删选出来的,我删除了大量语气的助词。

     

    问题1:外国人过来抽你一个耳光,你也无动于衷,不还手,来显示自己很大度?

    回答:外国人没有过来抽我耳光。

     
    ...