致谢

我们想感谢帮助开发本书和本课程的许多人。

我们的课程是"6.231"的清晰知识后裔——这是 Jack Wozencraft 和 Arthur Evans, Jr. 在 1960 年代末在 MIT 教授的一门关于编程语言学和 lambda 演算的精妙课程。

我们深深感谢 Robert Fano,他重组了 MIT 电气工程和计算机科学的入门课程,以强调工程设计原理。他领导我们开始了这项事业,并撰写了第一批课程笔记,本书由此演变而来。

我们试图教授的许多编程风格和美学是与 Guy Lewis Steele Jr. 共同发展的,他与 Gerald Jay Sussman 合作进行了 Scheme 语言的初始开发。 此外,David Turner、Peter Henderson、Dan Friedman、David Wise 和 Will Clinger 教会了我们书中出现的函数式编程社区的许多技术。

Joel Moses 教会了我们关于大型系统结构的知识。他在 Macsyma 符号计算系统中的经验提供了一个洞见:应该避免控制的复杂性,专注于组织数据以反映被建模世界的真实结构。

Marvin Minsky 和 Seymour Papert 塑造了我们对编程及其在我们的智识生活中地位的许多态度。我们感谢他们让我们理解到,计算为探索思想提供了一种表达手段,否则这些思想因过于复杂而无法精确处理。他们强调,学生编写和修改程序的能力提供了一种强大的媒介,使探索成为一种自然的活动。

我们也非常认同 Alan Perlis 的观点,编程充满乐趣,我们最好谨慎地支持编程的快乐。 这种快乐的一部分来自于观察大师们的工作。我们很幸运曾作为学徒程序员,师从 Bill Gosper 和 Richard Greenblatt。

很难确定所有为我们课程发展做出贡献的人。 我们感谢过去十五年来与我们共事的所有讲师、辅导教师和导师,他们为我们的课程付出了许多额外的时间, 特别是 Bill Siebert, Albert Meyer, Joe Stoy, Randy Davis, Louis Braida, Eric Grimson, Rod Brooks, Lynn Stein, and Peter Szolovits. 我们要特别感谢 Franklyn Turbak(现在 Wellesley)的杰出教学贡献;他在本科生教学中的工作树立了我们都可以追求的标准。 我们感谢 Jerry Saltzer 和 Jim Miller 帮助我们应对并发的奥秘,感谢 Peter Szolovits 和 David McAllester 对第 4 章中非确定性求值阐述的贡献。

许多人在其他大学讲授这些材料付出了显著努力。我们密切合作的一些人有 Technion 的 Jacob Katzenelson、加州大学欧文分校的 Hardy Mayer、牛津的 Joe Stoy、普渡大学的 Elisha Sacks 以及挪威科技大学(Norwegian University of Science and Technology)的 Jan Komorowski。我们特别自豪的是,我们的同事因在其他大学改编这门课程而获得了重要的教学奖项,包括耶鲁大学的 Kenneth Yip、加州大学伯克利分校的 Brian Harvey 和康奈尔大学的 Dan Huttenlocher。

Al Moyé 安排我们在惠普向工程师讲授这些材料,并制作了这些讲座的录像带。 我们要感谢才华横溢的讲师们——特别是 Jim Miller、Bill Siebert 和 Mike Eisenberg——他们设计了包含这些录像带的继续教育课程,并在世界各地的大学和工业界教授这些课程。

许多其他国家的教育工作者为翻译第一版付出了显著工作。 Michel Briand、Pierre Chamard 和 André Pic 制作了法文版; Susanne Daniels-Herold 制作了德文版; Fumio Motoyoshi 制作了日文版。 我们不知道是谁制作了中文版,但我们认为被选为"未经授权"翻译的对象是一种荣誉。

很难一一列举所有为我们教学使用的 Scheme 系统的发展做出技术贡献的人。 In addition to Guy Steele, principal wizards have included Chris Hanson, Joe Bowbeer, Jim Miller, Guillermo Rozas, and Stephen Adams. Others who have put in significant time are 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, and Ruth Shyu.

除了 MIT 的实现,我们还要感谢许多参与 IEEE Scheme 标准工作的人, including William Clinger and Jonathan Rees, who edited the R4RS, and Chris Haynes, David Bartley, Chris Hanson, and Jim Miller, who prepared the IEEE standard.

Dan Friedman 是 Scheme 社区的长期领导者。 该社区的更广泛工作超越了语言设计问题,涵盖了重要的教育创新,例如 Schemer's Inc. 基于 EdScheme 的高中课程,以及 Mike Eisenberg 和 Brian Harvey 与 Matthew Wright 的精妙著作。

我们感谢那些为本书成书做出贡献的人,特别是 MIT 出版社的 Terry Ehling、Larry Cohen 和 Paul Bethge。Ella Mazel 找到了精美的封面图片。 对于第二版,我们特别感谢 Bernard 和 Ella Mazel 在书籍设计上的帮助,以及非凡的 TEX 魔术师 David Jones。 我们还感谢那些对新草稿提出深刻见解的读者:Jacob Katzenelson、Hardy Mayer、Jim Miller,特别是 Brian Harvey,他对本书所做的正如 Julie 对他的著作 Simply Scheme 所做的一样。

最后,我们要感谢多年来鼓励这项工作的组织支持,包括由 Ira Goldstein 和 Joel Birnbaum 促成的惠普的支持,以及由 Bob Kahn 促成的 DARPA 的支持。