1996年SICP第2版的致谢
我们希望感谢许多在这本书和这一教学计划的开发中帮助过我们的人们。
我们的工作明显是课程“6.231”的后继。“6.231”是20世纪60年代由Jack Wozencraft和Arthur Evans Jr.在MIT教授的一门有关程序设计语言学和lambda演算的美妙课程。
我们从Robert Fano那里受益良多,是他组织了MIT电子工程和计算机科学的基础教学计划,并特别强调工程设计的原理。他领导我们开始这一事业,并为此写出了第一批问题注记。本书就是从那里演化出来的。
我们试图教授的大部分程序设计风格和美学都是与Guy Lewis Steele Jr.一起开发的,他在Scheme语言的初始开发阶段与Gerald Jay Sussman合作。此外,David Turner、Peter Henderson、Dan Friedman、David Wise和Will Clinger也教给我们许多函数式程序设计社区的技术,它们出现在本书里的许多地方。
Joel Moses教我们大型系统的构造。他从Macsyma符号计算系统的经验中得到的真知灼见是:应避免复杂的控制,集中精力到数据的组织,以反映被模拟世界的真实结构。
许多有关程序设计及其在我们的智力活动中的位置的认识来自Marvin Minsky和Seymour Papert。从他们那里我们理解了,计算提供了一种探索思想的表达方式的手段,没有它,这些思想会因为太复杂而无法精确处理。他们更强调说,学生写作和修改程序的能力可以成为一种强有力的工具,可以将探索变成一种自然的活动。
我们也完全同意Alan J.Perlis的看法,程序设计包含着许多乐趣,我们应该认真地支持程序设计的趣味性。这种乐趣部分地来源于观看大师们的工作。我们非常幸运曾在Bill Gosper和Richard Greenblatt手下学习程序设计。
很难列出对这一教学计划的开发做出过贡献的所有人。我们衷心感谢在过去15年里与我们一起工作过,并在此科目上付出时间和心血的所有教师、答疑老师和辅导员们,特别是Bill Siebert、Albert Meyer、Joe Stoy、Randy Davis、Louis Braida、Eric Grimson、Rod Brooks、Lynn Stein和Peter Szolovits。我们想特别对Franklyn Turbak(现在在Wellesley)出色的教学贡献表达谢意,他在本科生指导方面的工作为我们的努力设定了一个标准。我们还要感谢Jerry Saltzer和Jim Miller帮助我们克服并发性中的难点,还有Peter Szolovits和David McAllester对第4章里有关非确定性求值的阐述的贡献。
许多人为在他们自己的大学里讲授本书付出了极大努力。其中与我们密切合作的有以色列理工学院的Jacob Katzenelson、加州大学尔湾分校的Hardy Mayer、牛津大学的Joe Stoy、普渡大学的Elisha Sacks,以及挪威科技大学的Jan Komorowski。我们特别为那些在其他大学移植这一科目,并由此获得重要教学奖的同行们感到骄傲,包括耶鲁大学的Kenneth Yip、加州大学伯克利分校的Brian Harvey和康奈尔大学的Dan Huttenlocher。
Al Moyé安排我们到惠普公司为工程师教授这一材料,并为课程制作了录像带。我们感谢那些有才干的教师——特别是Jim Miller、Bill Siebert和Mike Eisenberg,他们设计了结合这些录像带的继续教育课程,并在全世界的许多大学和企业讲授。
其他国家的许多教育工作者也在翻译本书的第1版方面做了许多工作。Michel Briand、Pierre Chamard和André Pic翻译出法文版,Susanne Daniels-Herold翻译出德文版,Fumio Motoyoshi翻译出日文版。我们不知道谁做的中文版,但也把本书选作为一个“未经授权”的翻译工作看作一种荣誉。
要列举出所有为我们用于教学的Scheme系统做出过贡献的人是非常困难的。除了Guy Steele之外,主要的专家还包括Chris Hanson、Joe Bowbeer、Jim Miller、Guillermo Rozas和Stephen Adams。在这一工作上付出许多时间的还有Richard Stallman、Alan Bawden、Kent Pitman、Jon Taft、Neil Mayle、John Lamping、Gwyn Osnos、Tracy Larrabee、George Carrette、Soma Chaudhuri、Bill Chiarchiaro、Steven Kirsch、Leigh Klotz、Wayne Noss、Todd Cass、Patrick O’Donnell、Kevin Theobald、Daniel Weise、Kenneth Sinclair、Anthony Courtemanche、Henry M.Wu、Andrew Berlin和Ruth Shyu。
除了MIT的实现之外,我们还想感谢在IEEE Scheme标准方面工作的许多人,包括William Clinger和Jonathan Rees,他们编写了R4RS;还有Chris Haynes、David Bartley、Chris Hanson和Jim Miller,他们撰写了IEEE标准。
多年来Dan Friedman一直是Scheme社团的领袖。这一社团的工作范围已经从语言设计问题扩展到重要教育创新的相关问题,例如基于Schemer’s Inc.的EdScheme的高中教学计划,以及由Mike Eisenberg还有由Brian Harvey和Matthew Wright撰写的绝妙著作。
我们还要感谢那些为本书的成书做出贡献的人们,特别是MIT出版社的Terry Ehling、Larry Cohen和Paul Bethge。Ella Mazel为本书找到了最美妙的封面图。对于第2版,我们要特别感谢Bernard和Ella Mazel对本书设计的帮助,以及David Jones作为TEX专家的非凡能力。我们还要感谢以下读者对这个新书稿提出了很深刻的意见,包括Jacob Katzenelson、Hardy Mayer、Jim Miller,特别是Brian Harvey,他对于本书所做的就像Julie对他的著作Simply Scheme所做的那样。
最后我们还想对有关的资助组织表示感谢,它们多年来一直支持这一工作的进行。包括来自惠普公司的支持——Ira Goldstein和Joel Birnbaum的帮助使之成为可能。还有来自DARPA的支持——得到了Bob Kahn的帮助。
Harold Abelson和Gerald Jay Sussman