顶级程序员的心得 Coders at Work (II)

正在读 “Coders at Work”,   对15 位顶级程序员的采访, 总共600页。 这些看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选,面试程序员,优秀程序员的特点,和程序设计的句子。下面是 3 个程序员的心得,和我的几句解释。 Peter Norvig 讲了NASA 的一个著名事故的一些故事,我也重构了一下,写在后面.

 

Coder

What they say about good programmer, interview, and design

My interpretation

Simon Peyton Jones

Haskell architect, MSR-Cambridge researcher

Beautiful Code: agrees with Tony Hoare that good code should obviously have no bugs, rather than having no obvious bugs.   but “looking at the bare code may not be enough,   it’s not a characteristic of beautiful code that you should be able to just look at the bare code and see why it’s right.   (AVL tree is one example)

漂亮的代码:

 Tony Hoare 说的那样 它们明显没有bug; 而不是没有明显的bug.

但是“漂亮”并不意味着看着源代码就能马上读懂。 例如 AVL , 光看代码你不懂为什么这些子树要转来转去。但是如果你理解了它的核心思想,看到它维护了这个不变量 (invariant) 从而保证 log 级的访问速度,你就会说,啊,明显理当如此。

Peter Norvig

In charge of Research at Google,  NASA.

 

Made fun of PowerPoint AutoContent Wizard

 

image

Advice to school:

Teach more on team work.  “when I was in school, working as a team was called cheating”.

 

Successful programmer:

The bravado and willingness to “go ahead” with incomplete but essential info.

 

Interview:

I don’t like the trick puzzle questions.  It’s important to have someone that you can get along with.  More,  Can they technically do what they said they can do?   You really want to have people write code on the board.

 

XP, pair programming:

10% of the time is to share is important,  but if doing it most of the time, it won’t be as effective.

 

UML:

I never liked any of these UML-type of tools.  If you can’t do it in the language itself that’s a weakness of the language.

学校教育:

应该教更多的团队合作,“我上学的时候,团队合作被认为是作弊” (现在有些学校还是这样)

 

成功的程序员:

他们更多的是“我只要懂得我需要的,就可以开始干活了”, 而不是“我得完全理解某个领域,才能开始”。

 

面试:

不喜欢用智力题目,要依赖于面对面的问答来判断这个应聘者是否能够和团队合得来,更重要的是,让他们在黑板上写代码,看看他们是否真的能“说到做到”。

 

XP, 结对编程:

10% 的时间用来交流是很重要的,但是如果大部分时间都用来结对,那效率不会太高。

 

UML:

我从来不喜欢这类工具,如果你不能在计算机语言中表达(UML 要表达的东西) 那这是这种语言的弱点。

Guy Steele

Help created Common Lisp and Scheme, Emacs

image

Code writing:

When you are writing code you’re writing as much for human readers as for the computer.

 

If efficiency is important, I’ll often resort to a trick. And then I realize that will mislead a human.  And you have to comment it or do something to flag that, to make it more readable.

代码:

当你写代码的时候,你写给机器看,同时也写给人看。

 

如果效率很重要,我会用一些小技巧。 这些技巧会误导读代码的人,你得加上注释,或者类似的东西标注一下,让它更可读。

 

Peter Norvig 同学在NASA 工作的时候,参与了NASA 的一个著名事故的调查 ( 1999 火星气候卫星因导航出现重大错误而坠入火星大气层)  从他在这本书的问答中,我们可以看到一个大略的错误发生过程:

 

1)      软件外包公司对于 mission-critical 的软件模块有很完备的检查和测试,但是对于其他模块则没有完备的管理。

2)      程序员写了一个不重要的log 功能,其中用英制 (* 英尺) 表示力,  但是 NASA 用“牛顿”=  千克*/(*)

3)      外包公司接到一个新的工程,他们进行了软件重用,log 功能中记录的力被重用为导航功能的输入参数,成为 mission-critical 的模块。 //错误: 一个模块从 non-mission-critical 变成 mission-critical 没有经历必要的复审和测试。

4)      这个新的工程由发包公司 Lockheed (洛克希德公司) 交给了客户 JPL (喷气推进实验室)

5)      火箭带着卫星发射了,在10个月的飞行中,JPL  可以每天两次启动小推进器,来调整太空船的航向,在这一过程中,有人发现了导航功能的一些不正常现象, 于是 -

a.       JPL 发邮件给 Lockheed, 说 – 这个模块有些参数看起来好像不正常

b.      Lockheed 回邮件...

c.       JPL 再发邮件

d.      最后没有人再发邮件了

e.      JPL的同志认为, Lockheed 的同志们估计已经搞定了。

f.        Lockheed 的同志认为, JPL 的同志们没再追问这个问题,可能已经不是问题了。

错误: 这个问题从来没有收录到NASA 的错误跟踪系统 (Bug tracking system),只是在email 中交流,导致最后没有人对这个问题负责。在错误跟踪系统中,总得有一个人“拥有”这一个bug,这样可以避免推诿责任 (MSF 也很重视这一点)

十个月之后, 1999923 日,卫星抵达火星大气层,错误的导航参数造成卫星坠入大气层烧毁。 单单卫星的造价就高达一亿两千五百万美元。

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

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

相关文章

matlab车辆测距,一种基于单目视觉的车辆测距方法

一种基于单目视觉的车辆测距方法【专利说明】一种基于单目视觉的车辆测距方法 所属技术领域[0001] 本发明属于目标检测与测距领域,尤其涉及一种基于单目视觉的车辆测距方法.【背景技术】[0002] 随着公路交通特别是高速公路系统的发展,交通事故率也呈现上…

顶级程序员的心得 Coders at Work (III)

这是第三部分&#xff08;第一&#xff0c;第二部分&#xff09;&#xff0c;非常有意思的问答&#xff0c;值得仔细琢磨。 这里只是一些和程序员发展&#xff0c;面试&#xff0c;优秀程序员的特点等相关的部分。 有些想法和 MSF 中的原则也很相似 &#xff08;见 <移山之…

html留言板 php,linux下使用Apache+php实现留言板功能的网站

一.首先我们的linux服务器上要安装Apache和phpphp的安装方法和Apache方法如同一辙二.关闭防火墙服务&#xff0c;关闭selinux请参考&#xff1a;http://www.cnblogs.com/dagege/p/5947251.html三.我们通过FTP服务或使用rz命令将文件放到Apache的根目录下 /var/www/html示例文件…

顶级程序员的心得 Coders at Work (IV)

( 第一&#xff0c;第二&#xff0c; 第三部分 ) “Coders at Work”, 对15 位顶级程序员的采访&#xff0c; 总共600页。 看似冗长的问答中有不少精辟的言论。 我摘录了一些关于挑选&#xff0c;面试程序员&#xff0c;优秀程序员的特点&#xff0c;和程序设计的句子。下面…

多个php 链接数据库,ThinkPHP实现多数据库连接的解决方法

1.ThinkPHP实现连接多个数据的时候&#xff0c;如果数据库在同一个服务器里的话只需要这样定义模型&#xff1a;Model:namespace Shebao\Model;use Common\Model\CommonModel;class CeshiModel extends CommonModel{protected $trueTableName shebao.sb_person; //数据库名.表…

编程之美 - 哪个题目最美?

编辑部搞的活动&#xff0c; 请大家帮个忙&#xff0c;来投票吧&#xff0c;看看《编程之美》第1章“游戏之乐——游戏中碰到的题目”大家最喜欢哪个题目&#xff0c;或者大家认为哪个题目最有趣。         可以选择以下任何网址参与投票&#xff1a;   CSDN&#xff1…

php实现把es6转为es5,使用webpack将ES6转化ES5的实现方法

babel使用打开babel官网&#xff0c;按教程安装babel安装npm install --save-dev babel-loader babel/core babel/preset-env配置rulesmodule: {rules: [{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }]}生成 .babelrc文件{"presets"…

BUAA - 各项目组对软件用户数的估计

项目组: 底限 - 高限 CodeHolic: 200 – 1000 Code Canvas: 30 – 200 Stone: 50 – 200 Bugzapper: 100 - 1,000 CodeAngel: 200 – 800 Dream: 500 – 800 Xirtam: 1 – 100 Terminator: 100 – 300

THU – team project final review score

FOCUS Lifer: 24.14 Quadriad: 13 Transformer5: 16.71 LunaR: 24.57 Dragon: 17.86 (full score is 30pts, from 7 judges)

ssl在线申请php源码,简易实现HTTPS之自动实现ssl

众所周知 HTTP 协议是一种不安全的协议&#xff0c; 而 HTTPS 协议是 HTTP over SSL/TLS 的缩写&#xff0c;表示“使用 SSL/TLS 的 HTTP &#xff0c;也就是通常所说的“超文本传输安全协议”。 HTTP 搭配 SSL/TLS 协议可以搭建加密传输、身份认证的网络协议。没有升级到 HTTP…

BUAA - Team Review Score

Team Review Score1 19.002 22.573 19.864 17.005 26.146 21.437 17.438 20.29

php怎么上传函数,php上传函数怎么封装

php上传函数怎么封装&#xff1f;<?php //上传文件调用 $file $_FILES[image]; //允许上传的类型 $allow array(image/jpeg, image/png, image/jpg, image/gif); $path ./uploads; $maxsize 1024 * 1024 * 3; $result upload($file, $allow, $error, $path, $maxsize)…

THU: 成绩录入系统的bug

各位老师&#xff0c;您好&#xff01; 本学期课程网上录入成绩的时间马上就要截止&#xff0c;请注意&#xff01; 1、 录入成绩系统开通时间&#xff1a;2010年1月8日&#xff08;周五&#xff09;8&#xff1a;30 &#xff5e; 1月27日&#xff08;周三&#xff09;16&…

php-frm进程管理,PHP内核探索-进程管理

进程管理方式首先我们了解一下php的三种不同的进程管理方式&#xff1a;static&#xff1a;静态管理进程。在启动时&#xff0c;master按照pm.max_children配置fork出对应数量的work进程&#xff0c;即work的进程是固定不变的。dynamic&#xff1a;动态管理进程。在fpm启动时先…

THU – team players 合作精神

我朝的教育体系虽然时不时灌输“互相帮助”的精神&#xff0c;但是所有小考&#xff0c;中考&#xff0c;大考&#xff0c;无一不是考察个人独立作战。你要互相帮助&#xff0c;不但违反考场纪律&#xff0c;而且其他同学的好成绩对你是一个直接的威胁。 在这种价值体系下产出的…

PKU 学生的反馈 2009-1

反馈1: 软件实现技术课程总结 (1) 本学期的《软件实现技术》课程顺利结束了。作为选择这门课的学生&#xff0c;我在这里对这门课做一个回顾&#xff0c;并总结一下我对这门课的一些感受。 《软件实现技术》这门课是微软和北大软件与微电子学院合作的一门课程&#xff0c;课…

php 导出txt 缩进,indent - 缩进文本

缩进每一行的字符串&#xff0c;默认是缩进4个空格。 可选的参数可以设置缩进的空格数量。 可选的第二个参数设置缩进使用的字符&#xff0c;如用 "\t" 来代替空格缩进。参数顺序类型必选参数默认值说明1integerNo4设置缩进多少空格2stringNo一个空格设置用什么字符来…

PKU 学生的反馈 2009 –2

《软件实现技术》课程总结 从义无反顾选择了《软件实现技术》这门课程到现在已经整整4个月了&#xff0c;现在课程完满结束&#xff0c;有些东西是该总结一下了。 第一次上课的时候&#xff0c;除了软微的蒋老师、郁老师&#xff0c;微软的几位老师也参加了。邹欣老师强调作业…

oracle中主键自增长,oracle 数据库主键自动增长方法

oracle 数据库没有像 MYSQL一样有 自动ID增值 的功能&#xff0c;如要实现可以用触发器。首先就是建立一个序列&#xff0c;序列有有自动增值的功能,再建立一个触发器。如&#xff1a;建立一个序列CREATE SEQUENCE auto_seqminvalue 1 -- 最小值increment by 1 -- 每次增加值数…

PKU 学生反馈 3

[罗列了一些学生的反馈] 1. 作业的内容与时间要求上更加固定、明确。或者对于变化预先说明。 2. 课程的理论部分可以更加吸引人&#xff0c;该部分通过预习-考试-讲解的方式加深理解。 3. 预先说明本课程的定位 4. 希望每个团队有一个mentor知道下项目开发过程。 5. 对于所…