编程人生:15位软件先驱访谈录


请输入要查询的词条内容:

编程人生:15位软件先驱访谈录




基本信息


原书名: Coders at Work原出版社: Apress

作者: (美)Peter Seibel

译者: 图灵俱乐部

丛书名: 图灵程序设计丛书 IT人文

出版社:人民邮电出版社

ISBN:9787115239075

上架时间:2010-12-16

出版日期:2011 年1月

开本:16开

页码:469

版次:1-1

内容简介


这是一本访谈笔录,记录了当今最具个人魅力的15 位软件先驱的编程生涯。包括donaldknuth、jamie zawinski、joshua bloch、ken thompson 等在内的业界传奇人物,为我们讲述了他们是怎么学习编程的,在编程过程中发现了什么以及他们对未来的看法,并对诸如应该如何设计软件等长久以来一直困扰很多程序员的问题谈了自己的观点。

本书适合所有程序员,也适合所有对计算机行业、对软件开发感兴趣的人。

作者


Peter Seibel Common Lisp专家,Jolt生产效率大奖图书Practical Common Lisp的作者。耶鲁大学英语专业毕业,后投身于互联网行业,曾负责Mother Jones Magazine和Organic Online的Perl专栏以及WebLogic的Java专栏,并曾在加州大学伯克利分校成人教育学院教授Java编程。2003年辞职专心研究Lisp编程,之后即有了那部Jolt大奖图书。现在他是Gigamonkeys Consulting公司的首席执行官,和家人幸福地生活在加州伯克利。

前言


抛开Ada Lovelace(19世纪的一位伯爵夫人,她为Charles Babbage未完成的分析机设计了算法)的工作不说,人类在计算机编程领域奋斗的时间还不及一个人的寿命长,从1941年Konrad Zuse完成Z3电子机械计算机(首个可运行的通用计算机)算起,只有短短68年。曾有6位女性(Kay Antonelli、Jean Bartik、Betty Holberton、Marlyn Meltzer、Frances Spence和Ruth Teitelbaum)在美军的计算机部队工作,她们手工计算弹道数据表,后来被调去做ENIAC(首台通用电子计算机)最早的程序员。若从这时候算起,人类的编程历史则只有64年。在婴儿潮早期出生的人们以及他们的父母,很多至今仍然健在,他们出生时世界上还不存在计算机程序员。

当然,这些已经是历史了。现在世界上有很多程序员。劳动统计局在2008年对美国125万人进行了统计,大约每106个工作者当中就有1个是计算机程序员或软件工程师。这还没算美国之外的职业程序员、数不清的学生和业余编程爱好者,还有很多人从事其他正式工作,但却花费了一部分或很多时间来试图驯服计算机。虽然有数以百万计的人写过代码,虽然在编程出现后人们写过的代码没有数万亿行也有数十亿行,我们仍然不断地在这一领域进行创造。人们仍然在争论编程到底是数学还是工程,是工艺、艺术还是科学。我们仍然在(经常是带有强烈情绪地)争论编程的最佳方式,因特网上有无数的博客文章和论坛帖子来讨论这些问题。书店也摆满了各种论述新编程语言、新编程方法、新编程思想的书。

本书按照文学期刊《巴黎评论》(The Paris Review)的传统,采取了一种不同的方法来讲述什么是编程。这家期刊曾派了两位教授去采访小说家E. M. Forster,这次采访和随后的一系列问答式的采访后来辑录为Writers at Work一书。

我采访了15位成就斐然、经验丰富的程序员,其中有些人是系统黑客,如Ken Thompson(Unix的发明者)和Bernie Cosell(ARPANET早期实现者之一);有些人既有强大学术实力本身,又是著名黑客,如Donald Knuth、Guy Steele和Simon Peyton Jones;有些人是业界的研究员,如IBM的Fran Allen,爱立信的Joe Armstrong,Google的Peter Norvig,以及曾在施乐帕克研究中心工作过的Dan Ingalls和L Peter Deutsch;有些人是Netscape的早期实现者,如Jamie Zawinski和Brendan Eich;有些人参与设计和实现了现在的万维网,如刚才提到的Eich,以及Douglas Crockford和Joshua Bloch;还有Live Journal的发明人Brad Fitzpatrick(在伴随Web成长起来的一代程序员当中,他是一个当之无愧的典型)。

在采访中,我问他们有关编程的问题,问他们是怎么学习编程的,在编程过程中发现了什么,以及他们对未来的看法。而且我很用心地请他们多谈谈长久以来程序员一直在苦苦思索的那些问题:我们应该如何设计软件?编程语言在帮助我们提高生产力和避免错误方面扮演了什么角色?有什么办法可以更容易地查出难以发现的bug?

这些问题远远还没有解决,所以我的采访对象持有非常不同的观点也就不那么奇怪了。Jamie Zawinski和Dan Ingalls强调尽早让代码跑起来的重要性,而Joshua Bloch则描述了在实现之前,他如何设计API并测试它们能否支持要写的代码。Donald Knuth讲述了他在编写排版软件TeX的时候,怎样在敲代码之前先用铅笔在纸上完整地实现整个系统。Fran Allen大力批判近几十年来人们躺在C语言的脚下对计算机科学的兴趣越来越低,Bernie Cosell称之为“现代计算机最严重的安全问题”,Ken Thompson却认为安全问题是程序员而不是编程语言造成的,Donald Knuth也说C的指针是他所看到过的“最令人赞叹的记法改进之一”。一些受访者对“形式化证明可能有助于改善软件质量”这一观点嗤之以鼻,而Guy Steele则漂亮地展示了这种做法的优点和限制。

然而,仍然有一些主题是大家都认同的。几乎所有人都强调保持代码可读性是很重要的。大部分受访者都认为最难查找的bug出现在并发代码中。没有人认为编程问题已经完全解决了,他们大多数人仍然在寻找编写软件的更好办法,比如怎样自动分析代码,如何让程序员更好地协作,或者寻找(或设计)更好的编程语言。同时几乎所有人都认为多核CPU的大量采用将会给软件开发带来重大改变。

这些谈话发生在计算机发展史的一个特定时刻。因此,本书中讨论的一些话题在当前是紧迫问题,今后将不再是问题而变成了历史。但即使是像编程这种新兴领域,历史也能为我们提供很多教训。除此之外,我觉得我的受访者们可能有一些共识,包括什么是编程,如何更好地编程,等等,不仅现在的程序员会从中受益,将来几代程序员也将从中受益。

最后提一下本书的书名:Coders at Work。这个书名与前面提到的《巴黎评论》出的Writers at Work系列以及Apress的Founders at Work (该书讲述如何创办技术公司,而本书讨论计算机编程)相呼应。我意识到编程涵盖的范围太广了,而“编码”(coding)则可以特指其中一个很窄的部分。我个人从不认为一个糟糕的程序员会是一个优秀的编码者,也不相信好的程序员会不是出色的设计者、沟通者和思考者。毋庸置疑,这些受访者都是优秀的编码者、程序员、设计者和思考者,而且还不仅仅如此。我相信接下来你在阅读他们的谈话内容时一定能够体会到这一点。希望你能喜欢这本书!

目录


第1篇 jamie zawinski        1

第2篇 brad fitzpatrick        37

第3篇 douglas crockford        69

第4篇 brendan eich        101

第5篇 joshua bloch        129

第6篇 joe armstrong        157

第7篇 simon peyton jones        185

第8篇 peter norvig        221

第9篇 guy steele        253

第10篇 dan ingalls        289

第11篇 l peter deutsch        321

第12篇 ken thompson        347

第13篇 fran allen        375

第14篇 bernie cosell        401

第15篇 donald knuth        435

参考书目        471