Bill Joy MIT BBS上说微软电话面试的一道题就是“Who do you think is the

best coder, and why?”。我觉得挺有意思的,也来凑个热闹。排名不分先后。
传奇编程高手:
Bill Joy
John Carmack
David Cutler
Donald E. Knuth
Ken Thompson
Rob Pike
Dennis M. Ritchie
Edsger Wybe Dijkstra
Anders Hejlsberg
Bill Joy
Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD

。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一

个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的

Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,

1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但

当时还是研究生的B伯伯怒了,拒绝把BBNTCP/IP加入BSD,因为他觉得BBN的

TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的

伯克利版TCP/IP。当时BBN和DARPA签了巨额合同开发TCP/IPStack,谁知他们的

代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在

会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出

来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯

硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他

就把Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据

Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往

往在关键之处,B伯伯发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。

对了,他还是Java Spec和JINI的主要作者之一。
John Carmack
John Carmack,id Software的founder和Lead Programmer。上个月和一个搞图

形的师兄聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许

搞研究的和搞实战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥

。90年代初只要能在PC上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了

石破天惊的Castle Wolfstein, 然后再接再励,doom, doomII, Quake...每次都

把3-D技术推到极致。J哥哥的简历上说自己的专长是"Exhaust 3-D technology"

,真是牛人之言不我欺的说。做J哥哥这样的人是很幸福的,因为各大图形卡厂

家一有了新产品就要向他“进贡” ,不然如果他的游戏不支持哪种卡,哪种卡

基本就会夭折乐。当初MS的Direct3D也得听取他的意见,修改了不少API。当然

,J哥哥在结婚前十数年如一日地每天编程14小时以上,也是偶们凡人望尘莫及

的。对了,J哥哥高中肆业(?),可以说是自学成才。不过呢,谁要用这个例子

来为自己学习不好辩护,就大错特错了。那 Leonardo Da Vinci还是自学成才呢

(人是私生子,不能上学)。普通人和天才还是有区别的。对了,其实偶们叫“达

分奇”是相当不对的,因为Vinci是地名,而Da Vinci就是从Vinci来的人的意思

。换句话说,Leonardo Da Vinci就是“从Vinci来的Leonardo”的意思。叫别人

“Da Vinci”就不知所谓乐。嗯,扯远了,打住。 More about Carmack Here
David Cutler
David Cutler,VMS和Windows NT的首席设计师,去微软前号称硅谷最牛的

kernel开发员。当初他和他的手下在微软一周内把一个具备基本功能的bootable

kernel写出来,然后说:“who can't write an OS in a week?",也是牛气冲

天的说。顺便说一句,D爷爷到NT3.5时,管理1500名开发员,自己还兼做设计和

编程,不改coder本色啊。D爷爷天生脾气火爆,和人争论时喜欢双手猛击桌子以

壮声势。:-) 日常交谈F-word不离口。他面试秘书时必问:"what do you think

of the word '****'?" ,让无数美女刹羽而归。终于有一天,一个同样火爆的

女面对这个问题脱口而出:"That's my favorite word"。于是她被录取乐,为D

爷爷工作到NT3.5发布。
Donald E. Knuth
Don Knuth(Donald E. Knuth)。高爷爷其实用不着偶多说。学编程的不知道他就

好像学物理的不知道牛顿,学数学的不知道欧拉,学音乐的不知道莫扎特,学

Delphi的不知到 Anders Hejlsberg,或者学Linux不知道Linus Torvalds一样,

不可原谅啊。:-)为了让文章完整,就再罗唆几句吧。高爷爷本科时就开始给行

行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别人时收一两千美元,

那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高爷爷不爽过

,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞出

了个Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的

编程比赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code

freeze,还附带2^n美分奖励等等都是耳熟能详,偶就不饶舌乐。顺便说一下,

高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可谓字

字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且

没有学究气,不失轻快跳脱。记得几年前读Concrete Mathematics,时不时开怀

大笑,让老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知

鱼之乐,更不知那完全是高爷爷的功劳。说到写作高手,不能不提Stephen A.

Cook。他的文章当年就被我们的写作老师极力推荐,号称典雅文风的样本。库爷

爷一头银发,身材颀长,总是面带谦和的微笑,颇有仙风道骨,正好和他的仙文

相配的说。高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那

样八方奔走,但他捐献了好多作品,都可以在网上看到,比如著名的

Mathematical Writing,MMIXWare,The Tex Book等,更不用说足以让他流芳百

世的Tex乐。
Ken Thompson
Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M.

Riche老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系

统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken

爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代,普通

人都认为只有大型机才能运行通用的操作系统,小型机只有高山仰止的份儿。至

于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是他和DMR

怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不

知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C

重写,于是C在随后20年成就了不知多少豪杰的梦想和光荣。Ken爷爷还有段佳话

:装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现

Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高

,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,

修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清净了”的时

候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好

继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来

,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里

。每次C编译器编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,

都是用Ken爷爷的C编译器。
Rob Pike
Rob Pike, AT&T Bell Lab前Member of Technical Staff ,现在google研究操

作系统。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis

M. Ritche开发Unix的猛人,UTF-8的设计人。他还在美国名嘴David Letterman

的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的是,

罗伯伯还是1980年奥运会射箭的银牌得主。他也是个颇为厉害的业余天文学家,

设计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典,The Unix

Programming Environment 和 The Practice of Programming 的作者之一。如

果初学者想在编程方面精益求精,实在该好好读读这两本书。它们都有中文版的

说。罗伯伯还写出了Unix下第一个基于位图的窗口系统,并且是著名的blit 终

端的作者。当然了,罗伯伯还是号称锐意革新的操作系统,Plan9,的主要作者

。可惜的是,Plan9并没有引起多少人的注意。罗伯伯一怒之下,写出了振聋发

聩的雄文 Systems Software Research is Irrelevant,痛斥当下系统开发不思

进取,固步自封的弊病。虽然这篇文章是罗伯伯含忿出手,颇有偏激之词,但确

实道出了系统开发的无奈:开发周期越来越长,代价越来越大,用户被统一到少

数几个系统上,结果越来越多的活动是测量和修补,而真正的革新越来越少。就

在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在还有一家大众公司

在不遗余力地把系统开发推向极致的话,也就是google 乐。随便看看google的

成果就知道了。具有超强容错和负载平衡能力的分布式文件系统GFS (现在能够

用100,000台廉价PC搭起一个巨型分布系统,并且高效便宜地进行管理的系统也

不多哈),大规模机器学习系统(拼写检查,广告匹配,拼音搜寻。。。哪个都很

牛的说),更不用说处理海量并行计算的各式google服务了。Rob在System

Software Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前

沿成果了。想不到他错了,因为google关心。google网络了大批功成名就的牛人

,还有大量初生牛犊般博士做开发,显然不是没事耍酷,而是因为它们的开发总

是试图吸取系统研究的最新成果。 想必Rob Pike在google很幸福。愿他做出更

棒的系统。
Dennis M. Ritchie
Dennis M. Ritchie 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis

M. Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当

然,C的前身是B,而B是Ken Thompson一手做出来的)。J 两人1983年分享图灵奖

,是有史以来少数几个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan

Kay才因为SmallTalk得奖,所以就成了唯二的乐) 。一个人一生能做出一个卓越

的系统已经不易,DMR的C和UNIX长盛不衰近30年,至今生机勃勃,DMR此生可以

无憾的说。D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并

在电路设计方面卓有成就,还出了本颇有影响的书The Design of Switching

Circuits,据说在交换理论和逻辑设计方面有独到的论述。当然,D爷爷和他老

爸是不同时代的人:他老爸的研究成形于晶体管发明之前,而D爷爷的工作离了

晶体管就玩儿不转乐。:-D不要看D爷爷搞出了C,其实他最爱的编程语言是Alef

,在Plan9上运行,支持并行编程。Alef的语法和C相似,但数据类型和执行方式

都和C大大不同。说到语言,D爷爷对后来人有非常中肯的建议:抱着学习的目的

来开发你自己的语言,不要冀望于它被众人接受。这个建议不光对语言开发有用

,也适用于其它大型系统的开发。别的不说,DMR后来领导自己的团队在1995年

和1996分别推出了Plan9和 Inferno操作系统,又用多少人知道呢?其实,D爷爷

当初也没想过C会风行世界。他开发C的初衷和 Eric S. Raymond在Cathedral

and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁知D爷爷

无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次

采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实

现。当然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言

出色的审美意识奠定了C广为流传的基础。最后八卦一下。D爷爷的业余爱好和

NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜欢开NASCAR,而KM独爱巨无

霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就是Ken Thompson了。

现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开发部的头,整

日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也就长留

你我心中乐。P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是

写了那本经典K&R C。据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最

能写文章,他次之,而Ken写得最少;但说到编程,Ken爷爷才是当之无愧的老大


Edsger Wybe Dijkstra
Edsger Wybe Dijkstra 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起

找最短路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起

Quick Sort一样。其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡

献。比如Dijkstra算法,无非是戴爷爷在1956年为了展示新计算机 ARMAC的计算

能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最短路径

算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒

太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛

人们忙着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于

离散算法的专业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才

把这个算法发表在Numerische Mathematik的创刊号上,权为捧场。:-) EWD在多

个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较深

刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。戴爷爷大概因为

最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工作,并且把

设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要知到

,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不

情愿,但经不住项目负责人Bram和Carel的轮番“吹捧”:我们知道实时中断让

您工作变得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣

炮弹彻底击穿,接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围

绕这个写出了自己的博士论文,顺利戴上博士帽。让戴爷爷真正成名立万的还是

在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日没夜地工作了8个月,

就搞出了Algo60,也因此获得了1972年的图灵奖。因为Algo60,戴爷爷发表了一

篇石破天惊的文章:Recursive Programming,于是人们才知道,原来高级语言

也可以高效地实现递归,原来从此以后,所有程序员都不可避免地和戴爷爷发明

的一个词(应该说是概念)打交道:堆栈。而且Algo60还让戴爷爷深入地思考多道

程序设计的问题,最终发明了每个系统程序员都绕不开的概念:semaphore。当

然,戴爷爷总是把他发明的概念严格形式化,极具科学家本色的说。和这些成就

想比,他提出的吃饭的哲学家问题,也就没什么好说的了。说来好笑,当时的大

学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是专门搞数值分

析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴爷爷这

样的牛人创造历史。他一边教数值分析(:-D) ,一边开始开发一个

Who do you think is the best coder, and why?相关推荐

  1. 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤

    MATLAB Coder可以从MATLAB代码生成独立的.可读性强.可移植的C/C++代码. 使用MATLAB Coder产生代码的3个步骤:准备用于产生代码的MATLAB算法:检查MATLAB代码的 ...

  2. 一个Java方法能有多少个参数类型?这个好奇coder做了个实验

    在 JVM 中,一个 Java 方法,最多能定义多少参数呢?这是一个很无聊的问题,即使能定义一万个,十万个,谁又会真的去这么做呢.但是作为一个 coder,最重要的不就是好奇心吗,没有好奇心,和一条咸 ...

  3. 处理Matlab Coder之后, Compiler can't find tmwtypes.h问题

    作为一个强大的科学计算软件,matlab广泛应用于较多领域,以其简单的编程风格,便利的调试环境等众多优点,在编写算法与测试的时候通常用到.然而很多的实际运用上matlab毕竟还不是很普及,相反还是c与 ...

  4. 面对复杂业务,if-else coder 如何升级?

    作者 | 张建飞  阿里巴巴高级技术专家 导读:针对业务在不同场景下的差异,我们常常会习惯性地使用 if-else 来实现不同的业务逻辑,久而久之代码越来越难以维护.那么如何消除这些 if-else? ...

  5. 420一个像素多少个字节_一个Java方法能有多少个参数类型?这个好奇coder做了个实验...

    在 JVM 中,一个 Java 方法,最多能定义多少参数呢?这是一个很无聊的问题,即使能定义一万个,十万个,谁又会真的去这么做呢.但是作为一个 coder,最重要的不就是好奇心吗,没有好奇心,和一条咸 ...

  6. GDCM:gdcm::Coder的测试程序

    GDCM:gdcm::Coder的测试程序 GDCM:gdcm::Coder的测试程序 GDCM:gdcm::Coder的测试程序 #include "gdcmCoder.h" n ...

  7. 学习、纪律与交流——《Clean Coder》读后感

    看Bob大叔的书,还要追溯到<敏捷软件开发--原则.模式与实践>(http://book.douban.com/subject/1140457/).这是一本改变我对软件看法的书,也使得我彻 ...

  8. @成都的Coder ,一起探讨终端架构持续演进

    简介:6月19日,mPaaS 盛邀各位 Coder,莅临成都蚂蚁 C 空间,共同探讨面向未来的移动端动态化架构设计思路以及动态化背景下的移动端技术选型趋势. 相约天府蓉城 针对纯原生开发面临的动态发布 ...

  9. 谁是最好的Coder

    描述 计科班有很多Coder,帅帅想知道自己是不是综合实力最强的coder. 帅帅喜欢帅,所以他选了帅气和编程水平作为评选标准. 每个同学的综合得分是帅气程度得分与编程水平得分的和. 他希望你能写一个 ...

  10. swift5自定义构造函数和自定义变量报required init?(coder: NSCoder) { fatalError(“init(coder:) has not bee错问题

    swift5自定义构造函数和自定义变量报required init 全局类下 UIViewController,通过构造方法传递属性值.还有一种方法,通过属性监听去给给viewController 传 ...

最新文章

  1. python中for语句用法_python中for循环的用法
  2. AI版「盗梦空间」?谷歌大脑「世界模型」可实现在其梦境中对智能体进行训练
  3. 通过 .gitlab-ci.yml配置任务-官方配置文件翻译
  4. 细思极恐!只需54块钱,你也能让AI伪造一系列联合国发言
  5. 浏览器对象模型BOM
  6. [转]Vi 教程(Unix行编辑器)
  7. php os darwin,解决Mac os(10.12.6) 编译php7提示“/usr/lib/system/libsystem_darwin.dylib”找不到...
  8. 虚拟机Ubuntu20.04.2LTS卸载python3.8出现tty1-tty6循环登录,无法进入图形化界面,乱码(亲测)
  9. 360浏览器升级_360安全卫士下载|360安全卫士 12.0 最新版
  10. 开课吧:继承是什么?继承的基础有什么?
  11. Java基础复习---线程创建
  12. java 中的随机数
  13. 1.4部署到IIS「深入浅出ASP.NET Core系列」
  14. P2P网贷谋求“去担保”:引入保险 收益下滑
  15. 华盛顿大学计算机硕士什么时候录取,2020年华盛顿大学排名TFE Times美国最佳计算机科学硕士专业排名第5...
  16. idea社区版本下载
  17. USB 3.0 对无线鼠标的干扰问题
  18. 用python爬取阳光电影的链接
  19. Android Framework 框架系列之PowerManager
  20. linux trac svn,SVN+Trac版本库的创建和Trac环境设置

热门文章

  1. 计算机显示器怎么调左右,电脑屏幕内容左右看不到边怎么调
  2. 【(类似DP)优化】 分梨子
  3. Html 用户反馈界面
  4. django-模板语言-verbatim标签-不使用DTL的解析
  5. Python入门(二)-编程环境
  6. 共线方程求解外方位元素--单片空间后方交会
  7. 终有一天,你没法成为曾经梦里的那个人了。
  8. 如何提高笔记本电脑开机速度
  9. 分水岭算法(学习笔记)
  10. Python自做的一个zabbix_sender程序