2006年的时候,波兰程序员stiff想出了一个好主意,就是利用互联网上公开的邮件地址,给他认为的那些伟大的程序员们发去了10个问题。有些伟大的程序员回邮件了,有些没回,stiff没说那些没回。回答了问题的程序员包括:
- Linus Torvalds: 写了Linux内核。
- Dave Thomas: 写了不少好书,尤其ruby相关的。
- David Heinemeier Hansson: DHH,写了ruby框架rails。
- Steve Yegge: lisp黑客。有个著名的blog。写了游戏Wyvern。
- Peter Norvig: lisp黑客。Google的Research Director。写了不少人工智能相关书籍。
- Guido Van Rossum: Python语言创造者。
- Bjarne Stroustrup: C++语言创造者。
- James Gosling: Java语言创造者。
- Tim Bray: XML和Atom标准的作者之一。
鉴于stiff也是Emacs用户,我猜测stiff肯定也给RMS发了邮件,至于为什么RMS没有答复,那就未知了。
10个问题分别是:
- 你是怎么学会编程的?学校教育有帮助吗?或者你根本没有受过完整的学校教育?
- 你认为每个程序员都应该拥有的最重要的技能是什么?
- 你认为数学和物理对程序员来说重要吗?为什么?
- 你认为什么将成为计算机编程领域的下一件大事(next big thing)?面向X编程,Y语言,量子计算机,或?
- 如果你有三个月的时间去学一种相对较新的技术,你会选择什么?
- 你认为某些程序员比其他程序员的生产力强10倍或100倍的原因是什么?
- 你最喜欢的工具是什么(操作系统,编程/脚本语言,编辑器,版本控制系统,shell,数据库,或其他你离不开的工具)?为什么你更喜欢它们?
- 你最喜欢的编程相关书籍是?
- 你最喜欢的非编程相关书籍是?
- 你最喜欢的乐队/乐手/作曲家是?
我比较感兴趣的两个问题是,工具和编程书籍。他们对这两个问题的答案是:
工具:
- Steve Yegge:
操作系统:Unix!我现在使用linux,cygwin和darwin的时间一样多。作为提高生产率的工具,unix是无可替代的。每个程序员都应该学会使用/bin和/usr/bin下的工具。脚本语言:Ruby。我能熟练使用基本上所有主要的脚本语言:perl,python,tcl,lua,awk,bash,以及另外一些我正在忘掉的。但是我真的很懒,而Ruby是目前为止最简单的,我们真是天作之合。
文本编辑器:Emacs,因为它是最好的。
版本控制:SVN。
Shell:Bash,因为我懒得去学一个更好的。
数据库:MySQL。
其他:我发现GIMP很有用,但是也很难用。我用它好多年了,但仍然几乎不能用它干什么。但我离不开它,真是讽刺。
Firefox正在成为我的一个重要工具,当我被迫要使用ie或safari时,我会感到窒息。
注意所有这些工具(Unix,Emacs,Firefox,GIMP,MySQL,Bash,SVN,Perforce)有一个共同点:它们是可扩展的;比如,它们都有编程接口。伟大的程序员会去编写他们的工具,而不是仅仅使用它们。
- Linus Torvalds:
我其实没有在工作中使用那么多工具,对其中有些工具,我已经花了时间让它们为我工作。操作系统部分显然是最重要的,但我同样写了我自己的版本控制系统(git),而我使用的编辑器(micro-emacs)也是经过定制和扩展的。除了这三部分,其实我最关心的是我的邮件阅读器。我使用pine,不是说它一定就是最好的,只是因为我习惯了用它而已。
- David Heinemeier Hansson:
OS X, TextMate, Ruby, Subversion, MySQL.这些工具是我目前喜欢的。 - Peter Norvig:
我不喜欢所有三种主流操作系统,Windows,Mac,Linux。我喜欢python和lisp。以及Emacs。 - Dave Thomas:
我几年前转到Macs了,之前我是有超过十年使用经验的Linux用户。Mac下的工具不一定是更好的,但是它们不需要经常维护了,这让我更专注于使用它们。我不是某一种工具的信仰者:我倾向于经常转换,这样我才能获得尽量多工具的使用经验。目前我使用OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgre, 还有许多小的辅助工具。谁知道我明年将会使用什么。
- Guido Van Rossum:
Unix/Linux, Python, vi+emacs, Firefox。 - James Gosling:
这些日子我活在NetBeans里。它能做任何我想做的,非常清晰又有效率。这是我用过的最好的开发环境。 - Bjarne Stroustrup:
Unix,sam(一个非常简单的编辑器),还有一个好的c++编译器,当然。 - Tim Bray:
我喜欢类Unix系统,像Python和Ruby这样的动态语言,以及像Java这样的静态类型语言(尤其是Java APIs),Emacs,Bash,NetBeans。
编程书籍:
- Steve Yegge: SICP。
- Linus Torvalds: Kernighan & Ritchie’s “The C Programming Language” ; Andrew Tanenbaum’s “Operating Systems: Design and Implementation”.
- David Heinemeier Hansson: Extreme Programming Explained.
- Peter Norvig: Structure and Interpretation of Computer Programs.
- Dave Thomas: IBM’s “IBM/360 Principles of Operation.
- Guido Van Rossum: Neil Stephenson’s Quicksilver.
- James Gosling: Programming Pearls by Jon Bentley.
- Bjarne Stroustrup: K&R.
- Tim Bray: Bentley’s Programming Pearls
可以看到,工具部分9人中有6个提到了Emacs,提到vi的只有一个,且是和emacs并列提到。有两人提到NetBeans,他们都是Java背景。
书籍部分,出现两次的书有:SICP,K&R以及Programming Pearls。Lisp黑客提到的都是SICP。
全文及原文在此。