编程大师访谈录

编程大师访谈录

7.4280 评价豆瓣读书
免费试读

作品简介

《编程大师访谈录》是对19位计算机行业先驱的采访实录,采访对象包括查尔斯·西蒙尼、比尔·盖茨、安迪·赫兹菲尔德、雷·奥奇、杰夫·拉斯金等。访谈涉及他们软件创造过程的灵感、技术、编程习惯、动机、反思,以及对未来软件的畅想等。问答中集结了这些计算机先驱的精辟言论,处处闪烁着智慧的火花。

本书适合所有IT从业人员阅读。

Susan Lammers 毕业于斯坦福大学,拥有英语文学士学位,现为手机应用开发公司Flying Sofa的合伙人,也是风险投资资助的创业公司Headbone Interactive的董事长及创始人。Susan是多媒体领域的先锋,曾是微软 公司早期的多媒体出版部联合出版人和总监,负责微软最早的交互式媒体项目,包括微软的电子百科全书Encarta(英卡塔)。 1990年,Lammers离开微软,加入一家创业公司,成为该公司的第三位员工。这家公司就是现今世界数字图像代理公司的领先者Corbis。

作品目录

载入中

热门划线

  1. 最优算法的知识当属科学,结构的想象则是艺术。这些算法的细节,以及编写高效代码实现这些结构的转换,是编程像手艺活的一面。12 人
  2. 最重要的素质是能够把问题的解决方案组织成容易操控的结构,其中每个组件都可以用简单的方式说明。9 人
  3. 通过数学,你学会逻辑推理。你还会学到如何证明,以及怎么处理抽象要素。通过物理学等实验科学或人文学科,你学会如何应用这些抽象在现实中建立联系。7 人
  4. 我认为管理的最佳方法是言传身教,经常复审代码。我们一直坚持开展代码复审。5 人
  5. 就物理学和数学而言,一如其他正统的学科,要想有所成就,必须能够清晰地思考。这就是计算机行业的许多成功人士都来自这些领域的原因所在。而现在人们通常一直待在计算机系,要有所成就会更加困难,因为这是一门非常浅显的学科,无法驱使你全力发挥出自己的聪明才智。5 人
  6. 如果不能确认数据结构是正确的,我是决不会开始编码的。我每次废弃代码的时候,通常是因为底层的数据结构太糟糕,而不是因为所采用的算法。5 人
  7. 那些想法是从哪里来的?把想法转化为现实有多难?开发大型程序是什么感觉?这是一门艺术还是一门科学?是手艺还是技能?同样的事情还能再做一次吗?4 人
  8. 编程的第一步是想象。就是要在脑海中对来龙去脉有极为清晰的把握。4 人
  9. 首先理解问题,然后拟定计划,接着执行计划,最后回顾整个过程。4 人
  10. 如果你不知道问题的答案,就不可能制定时间表,规定项目什么时候完成。4 人
  11. 一切都应该尽可能简单。但要做到这一点你必须掌握复杂性。4 人
  12. 当数据结构还在雏形时,需要高度集中注意力,让它们在脑海中成形。在这个阶段我通常会在早上3点开始工作,一直干到大约下午6点,然后吃晚饭,早一点上床睡觉,再很早地起床,不断推敲构思,直到数据结构定下来。4 人
  13. 现在,一个非常大的瓶颈——也是个人计算机行业不景气的一个原因——就是,我们想不出在实现了电子表格和文字处理后,还能用计算机做些什么。我们不知道下一步是什么。我们被难住了。4 人
  14. 传统的管理规则是,程序员的管理者总是一个更加出色的程序员,没有我们所说的“技术倒挂”,让程序员为一个不知道编程为何物的人工作。我们仍旧遵循这一理念:在一定的级别上,我们会用业务经理,但不会用非程序员管理正在开发的软件项目。4 人
  15. 你必须得有非常聪明的程序员。一个优秀的程序员会一直不断地思考所开发的程序,无论是开车还是吃饭。不停地思考问题,需要耗费大量的脑力。4 人
  16. 采访者:学习计算机科学是成为一名程序员的最佳途径吗?盖茨:不是,成为程序员的最佳途径是编写程序并研究其他人编写的优秀程序。我自己以前就是去翻计算机科学中心的垃圾桶,找出他们的操作系统的程序清单。4 人
  17. 我坚信只能由一个人来做产品和高层结构的设计,最多不能超过两个人。所有的设计出于一个头脑,才能够实现和谐与一致。4 人
  18. 总的来说,不要以为你知道所有的东西,要尝试学习并质疑那些假定的东西。要信心十足,但要保持谦虚,要猜想你可能做错了什么。要有刚好够多的罪恶感——不要太多,不然就会害怕去做任何事情——但要足以建立美感。尝试去做更深刻的理解。不要因为你曾使它运行成功了,就以为再也没有什么需要去了解的了。4 人
  19. 成功来自一遍又一遍地做同样的事情,每一次学习一点点,下一次都做得更好一点。4 人
  20. 只要从新的角度看待程序,原本可能很难解决的问题也会变得容易解决。3 人
  21. 只要将科学、艺术和技能这三者拿捏得恰到好处,你就能取得一些引人瞩目的成绩。3 人
  22. 对我来说,要起到作用或有所改进,合乎逻辑的做法就是尽力完善程序的主要部分,也就是名字。3 人
  23. 编程的第一步是想象。就是要在脑海中对来龙去脉有极为清晰的把握。在这个初始阶段,我会使用纸和铅笔。我只是信手涂鸦,并不写代码。我也许会画些方框或箭头,但基本上只是涂鸦,因为真正的想法在我脑海里。我喜欢想象那些有待维护的结构,那些结构代表着我想编码的真实世界。一旦这个结构考虑得相当严谨和明确,我便开始写代码。我会坐到终端前,或者换在以前的话,就会拿张白纸,开始写代码。这相当容易。我只要把头脑中的想法变换成代码写下来,我知道结果应该是什么样的。大部分代码会水到渠成,不过我维护的那些数据结构才是关键。我会先想好数据结构,并在整个编码过程中将它们牢记于心。3 人
  24. 怎样解题3 人
  25. 抽象的编程和业务的编程之间,主要区别在于后者目的非常明确3 人
  26. 因为从长远来看,你学的内容大部分都没什么价值。你学不到施展聪明才智的新方法,而这些方法对你来说,要比学习如何编写编译器的细枝末节有用得多,尽管后者可能是你本科念计算机科学时的学习内容。3 人
  27. 千万不要过份迷恋一个想法,绝不要固守某样东西以致不能在必要时把它丢掉,这才是程序员应有的态度。3 人
  28. 我花在设计上的时间比花在编码上的时间多,而且我从来没有在合理的时间内完成过一个项目。3 人
  29. 编写程序最重要的部分是设计数据结构。接下来重要的部分是分解各种代码块。在开发到那一步并写出代码之前,你无法敏锐地感知那些公共子例程应该是什么样的。3 人
  30. 编程需要非常大量的精力,所以大多数程序员都比较年轻。这就会带来一个问题,因为编程需要很多的训练。在年轻时,目标不是很持久,可能会被这样那样的事分心。但是年轻的程序员应当坚持下去,他们会变得更出色。作为程序员,我认为自己在1975年到1980年之间的提高是最明显的。在1975年,我会说:“嘿,看看,我什么事情都能做。”我真的认为自己可以,因为我读了大量代码,从来没有发现哪段代码是我无法快速读懂的。今天我仍旧认为检验编程能力的最好方法之一就是给程序员一本30来页的代码,看看他阅读和理解的速度有多快。3 人
  31. 今天我仍旧认为检验编程能力的最好方法之一就是给程序员一本30来页的代码,看看他阅读和理解的速度有多快。3 人
  32. 你要愿意去看别人写的代码,然后写自己的代码,再让其他人复查你的代码3 人
  33. 要跟得上行业的发展,方法之一是使用个人计算机。我要确保阅读了用户手册,并使用了排名前十的软件产品。这些产品不会经常变化,所以我对它们还是很熟悉的。如果你真的关心个人计算机软件,就会使用每一个软件,会去了解它们,并考虑你的软件要如何才能比这些软件包做得更好。3 人
  34. 在一个大点儿的公司里,领导者需要知道每件事,但又不能多到让员工觉得自己不够好或不再被需要了。公司员工需要觉得他们是在负责自己的工作,并且在心理上觉得他们是正在实施的项目的主人,否则就没有积极性了。3 人
  35. 程序是否易于理解?是否优雅?是否体现出对目标的基本理解和精巧的设计,还是只是一些元素杂乱无章地堆砌在一起?是否容易修改、开发或变更?3 人
  36. 时间不要排得太紧,开发过程中要合理安排休息次数。如果打算集中一段时间进行编码,我会排好时间,在开始下一轮重负荷的编码工作之前,留足6个月的时间做些概要设计之类的工作。我会让自己休息一阵。等到重新投入高强度的编程时,我已经巴不得早点开始了。3 人
  37. 编程的第一步是想象。就是要在脑海中对来龙去脉有极为清晰的把握。在这个初始阶段,我会使用纸和铅笔。我只是信手涂鸦,并不写代码。我也许会画些方框或箭头,但基本上只是涂鸦,因为真正的想法在我脑海里。我喜欢想象那些有待维护的结构,那些结构代表着我想编码的真实世界。2 人
  38. 这就像笑话专场,听众围坐一圈,说笑话的人甚至用不着讲笑话。他们只要报个笑话的编号,大家就笑翻了。2 人
  39. PARC的宗旨在于学习2 人
  40. 大部分情况下,新程序就是现有程序的精炼、扩展、泛化或改良。开发全新程序的机会真是少之又少。2 人
  41. 充分明确算法,这样你才能完全掌握这个算法,并了然于胸2 人
  42. 另外,绝不要假设你知道的东西别人不知道。总会有聪明的家伙横空出世,提出更妙的算法,或者想出更简单的方法执行某个任务。这一行的一个诀窍就是尽早认识到这点,迅速采纳并善用之,而不必心存“非我创造不可”的烦恼,非要用自己的方式不可。2 人
  43. 诀窍是学习惠普的做法,把公司当作20家不同的小公司。不断拆分,决不让它发展成庞大的组织,直到没有人嫌它大为止。在工作关系上,员工数量尽量少,工作内容尽可能专,并以项目为导向,这样他们才能达到最佳工作状态。这也是我的目标。2 人
  44. 最困难的部分是确定采用什么算法,然后还要尽可能地简化算法。做到最简单的形式是很难的。2 人
  45. 单一表示法解释程序2 人
  46. 我们有一些非常聪明的人。但是很奇怪,大多数程序员往往知道自己的本事,却不知道如何使用这些本事2 人
  47. 我喜欢做完整的项目,从设计到实现。我喜欢掌控项目中所有的部分。我不是很适合做团队中的一个成员。2 人

喜欢「编程大师访谈录」的人也喜欢