Acknowledgments
致谢
We would like to thank the many people who have helped us develop this book and this curriculum.
我们希望感谢许多在这本书和这一教学计划的开发中帮助过我们的人们。
Our subject is a clear intellectual descendant of ``6.231,'' a wonderful subject on programming linguistics and the lambda calculus taught at MIT in the late 1960s by Jack Wozencraft and Arthur Evans, Jr.
可以把这门课看做是课程“6.231”的后继者。“6.231”是 20 世纪 60 年代后期由 Jack Wozencraft 和 Arthur Evans, Jr. 在 MIT 教授的有关程序设计语言学和 lambada 演算的一门美妙课程。
We owe a great debt to Robert Fano, who reorganized MIT's introductory curriculum in electrical engineering and computer science to emphasize the principles of engineering design. He led us in starting out on this enterprise and wrote the first set of subject notes from which this book evolved.
我们由 Robert Fano 那里受惠良多。是他组织了 MIT 电子工程和计算机科学的教学计划。强调工程设计的原理。他领着我们开始了这一事业,并为此写出了第一批问题注记。本书就是从那里演化出来的。
Much of the style and aesthetics of programming that we try to teach were developed in conjunction with Guy Lewis Steele Jr., who collaborated with Gerald Jay Sussman in the initial development of the Scheme language. In addition, David Turner, Peter Henderson, Dan Friedman, David Wise, and Will Clinger have taught us many of the techniques of the functional programming community that appear in this book.
我们试图支教授的大部分程序设计风格和艺术都是与 Guy Lewis Steele Jr. 一起开发的,他与 Gerald Jay Sussman 在 Scheme 语言的初始开发阶段合作工作。此外,David Turner、Peter Henderson、Dan Friedman、David Wise 和 Will Clinger 也教给我们许多函数式程序设计社团所掌握的技术,它们出现在本书的许多地方。
Joel Moses taught us about structuring large systems. His experience with the Macsyma system for symbolic computation provided the insight that one should avoid complexities of control and concentrate on organizing the data to reflect the real structure of the world being modeled.
Joel Moses 教我们如何考虑大型系统的构造。他在 Macsyma 符号计算系统上的经验中得到的真知灼见是,应该避免控制中的复杂性,将精力集中到数据的组织上,以反映所模拟世界里的真实结构。
Marvin Minsky and Seymour Papert formed many of our attitudes about programming and its place in our intellectual lives. To them we owe the understanding that computation provides a means of expression for exploring ideas that would otherwise be too complex to deal with precisely. They emphasize that a student's ability to write and modify programs provides a powerful medium in which exploring becomes a natural activity.
这里的许多有关程序设计及其在我们的智力活动中位置的认识是 Mrvin Minsky 和 Seymour Papert 提出的。从他们那里我们理解了,计算是一种探索各种思想的表达方式的手段,如果不这样做,这些思想将会因为太复杂而无法精确地处理。他们更强调说,学生编写和修改程序的能力可以成为一种威力强大的工具,使这种探索变成一种自然的活动。
We also strongly agree with Alan Perlis that programming is lots of fun and we had better be careful to support the joy of programming. Part of this joy derives from observing great masters at work. We are fortunate to have been apprentice programmers at the feet of Bill Gosper and Richard Greenblatt.
我们也完全同意 Alan Perlis 的看法,程序设计有着许多乐趣,我们应该认真地支持程序设计的趣味性。这种趣味性部分来源于观看大师们的工作。我们非常幸运曾经在 Bill Gosper 和 Richard Greenblatt 手下学习程序设计。
It is difficult to identify all the people who have contributed to the development of our curriculum. We thank all the lecturers, recitation instructors, and tutors who have worked with us over the past fifteen years and put in many extra hours on our subject, especially Bill Siebert, Albert Meyer, Joe Stoy, Randy Davis, Louis Braida, Eric Grimson, Rod Brooks, Lynn Stein, and Peter Szolovits. We would like to specially acknowledge the outstanding teaching contributions of Franklyn Turbak, now at Wellesley; his work in undergraduate instruction set a standard that we can all aspire to. We are grateful to Jerry Saltzer and Jim Miller for helping us grapple with the mysteries of concurrency, and to Peter Szolovits and David McAllester for their contributions to the exposition of nondeterministic evaluation in chapter 4.
很难列出所有曾对这一教学计划的开发做出过贡献的人们。我们衷心感谢在过去 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 对于第四章里非确定性求值讨论的贡献。
Many people have put in significant effort presenting this material at other universities. Some of the people we have worked closely with are Jacob Katzenelson at the Technion, Hardy Mayer at the University of California at Irvine, Joe Stoy at Oxford, Elisha Sacks at Purdue, and Jan Komorowski at the Norwegian University of Science and Technology. We are exceptionally proud of our colleagues who have received major teaching awards for their adaptations of this subject at other universities, including Kenneth Yip at Yale, Brian Harvey at the University of California at Berkeley, and Dan Huttenlocher at Cornell.
许多人在他们自己的大学里讲授本书时付出了极大努力,其中与我们密切合作的有 Technion 的 Jacob Katzenelson、Irvine 加州大学的 Hardy Mayer、牛津大学的 Joe Stoy、普度大学的 Elisha Sacks 以及挪威科技大学的 Jan Komorowski。我们特别为那些在其他大学改制这一课程,并由此获得重要教学奖的同行们感到骄傲,包括耶鲁大学的 Kenneth Yip、加州大学伯克利分校的 Brian Harvey 和康乃尔大学的 Dan Huttenlocher。
Al Moyé arranged for us to teach this material to engineers at Hewlett-Packard, and for the production of videotapes of these lectures. We would like to thank the talented instructors -- in particular Jim Miller, Bill Siebert, and Mike Eisenberg -- who have designed continuing education courses incorporating these tapes and taught them at universities and industry all over the world.
Al Moy&ecute; 安排我们到惠普公司为工程师教授这一课程,并为这些课程制作了录像带。我们感谢有些才干的教师——特别是 Jim Miller、Bill Siebert 和 Mike Eisenberg——他们设计了结合这些录像带的继续教育课程,并在全世界的许多大学和企业讲授。
Many educators in other countries have put in significant work translating the first edition. Michel Briand, Pierre Chamard, and André Pic produced a French edition; Susanne Daniels-Herold produced a German edition; and Fumio Motoyoshi produced a Japanese edition. We do not know who produced the Chinese edition, but we consider it an honor to have been selected as the subject of an ``unauthorized'' translation.
其他国家的许多教育工作者也在翻译本书的第一版方面做了许多工作。Michel Briand、Pierre Chanard 和 André Pic 做出了法文版,Susanne Daniels-Herold 做了德文版,Fumio Motoyoshi 做了日文版。
It is hard to enumerate all the people who have made technical contributions to the development of the Scheme systems we use for instructional purposes. 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.
要列举出所有为我们用于教学的 Scheme 系统做出过贡献的人是非常困难的。除了 Guy Stelle 之外,主要的专家还包括 Chris Hanson、Joe Bowbeer、Jim Miller、Guillermo Rozas 和 Stephen Adams。在这项工作中付出许多时间的还有 Richard Stallman、Alan Bawden、Kent Pitman、Jon Taft、Nell Mayle、John Lamping、Gwyn Osnos、Tracy Larrabee、George Carrette、Soma Chaudhuri、Bill Chiarchiaro、Steven Kirsch、L:eigh Klotz、Wayne Noss、Todd Cass、Patrlck O'Donnell、Kevin Theobald、Daniel Weise、Kenneth Sinclair、Anthony Courtemanche、Henry M. Wu、Andrew Berlin 和 Ruth Shyu。
Beyond the MIT implementation, we would like to thank the many people who worked on the IEEE Scheme standard, 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.
除了 MIT 实现之外,我们还应该感谢那些在 IEEE Scheme 标准方面工作的人们,包括 William Clinger 和 Jonathan Rees,他们编写了 R4RS,以及 Chris Hanynes、David Bartley、Chris Hanson 和 Jim Miller,他们撰写了 IEEE 标准。
Dan Friedman has been a long-time leader of the Scheme community. The community's broader work goes beyond issues of language design to encompass significant educational innovations, such as the high-school curriculum based on EdScheme by Schemer's Inc., and the wonderful books by Mike Eisenberg and by Brian Harvey and Matthew Wright.
Dan Friedman 多年以来一直是 SCheme 社团的领袖。这一社团的工作范围已经从语言设计问题,扩展到围绕着重要的教育创新问题,例如基于 Schemer's Inc. 的 EdScheme 的高中教学计划,以及由 Mike Eisenberg 和由 Brian Harvey 和 Matthew Wright 撰写的绝妙著作。
We appreciate the work of those who contributed to making this a real book, especially Terry Ehling, Larry Cohen, and Paul Bethge at the MIT Press. Ella Mazel found the wonderful cover image. For the second edition we are particularly grateful to Bernard and Ella Mazel for help with the book design, and to David Jones, TEX wizard extraordinaire. We also are indebted to those readers who made penetrating comments on the new draft: Jacob Katzenelson, Hardy Mayer, Jim Miller, and especially Brian Harvey, who did unto this book as Julie did unto his book Simply Scheme.
我们还要感谢那些为本教材的成书做出贡献的人们,特别是 MIT 出版社的 Terry Ehling、Larry Cohen 和 Paul Bethge。Ella Mazel 为本书找到了最美妙的封面图画。对于第二版,我们要特别感谢 Bernard 和 Ella Mazel 对本书设计的帮助,以及 David Jones 作为 TeX 专家的非凡能力。我们还要感谢下面的读者,他们对于这个新书稿提出了深刻的意见:Jacob Katzenelson、Hardy Mayer、Jim Miller,特别是 Brian Harvey,他对于本书所做的也就像 Julie 对于 Harvey 的著作 Simply Scheme 所做那样。
Finally, we would like to acknowledge the support of the organizations that have encouraged this work over the years, including support from Hewlett-Packard, made possible by Ira Goldstein and Joel Birnbaum, and support from DARPA, made possible by Bob Kahn.
最后我们还想对资助组织表示感谢,它们多年来一直支持这项工作的进行。包括来自惠普公司的支持(由 Ira Goldstein 和 Joel Birnbaum 促成);还有来自 DARPA 的支持(得到了 Bob Kahn 的帮助)。
致谢
We would like to thank the many people who have helped us develop this book and this curriculum.
我们希望感谢许多在这本书和这一教学计划的开发中帮助过我们的人们。
Our subject is a clear intellectual descendant of ``6.231,'' a wonderful subject on programming linguistics and the lambda calculus taught at MIT in the late 1960s by Jack Wozencraft and Arthur Evans, Jr.
可以把这门课看做是课程“6.231”的后继者。“6.231”是 20 世纪 60 年代后期由 Jack Wozencraft 和 Arthur Evans, Jr. 在 MIT 教授的有关程序设计语言学和 lambada 演算的一门美妙课程。
We owe a great debt to Robert Fano, who reorganized MIT's introductory curriculum in electrical engineering and computer science to emphasize the principles of engineering design. He led us in starting out on this enterprise and wrote the first set of subject notes from which this book evolved.
我们由 Robert Fano 那里受惠良多。是他组织了 MIT 电子工程和计算机科学的教学计划。强调工程设计的原理。他领着我们开始了这一事业,并为此写出了第一批问题注记。本书就是从那里演化出来的。
Much of the style and aesthetics of programming that we try to teach were developed in conjunction with Guy Lewis Steele Jr., who collaborated with Gerald Jay Sussman in the initial development of the Scheme language. In addition, David Turner, Peter Henderson, Dan Friedman, David Wise, and Will Clinger have taught us many of the techniques of the functional programming community that appear in this book.
我们试图支教授的大部分程序设计风格和艺术都是与 Guy Lewis Steele Jr. 一起开发的,他与 Gerald Jay Sussman 在 Scheme 语言的初始开发阶段合作工作。此外,David Turner、Peter Henderson、Dan Friedman、David Wise 和 Will Clinger 也教给我们许多函数式程序设计社团所掌握的技术,它们出现在本书的许多地方。
Joel Moses taught us about structuring large systems. His experience with the Macsyma system for symbolic computation provided the insight that one should avoid complexities of control and concentrate on organizing the data to reflect the real structure of the world being modeled.
Joel Moses 教我们如何考虑大型系统的构造。他在 Macsyma 符号计算系统上的经验中得到的真知灼见是,应该避免控制中的复杂性,将精力集中到数据的组织上,以反映所模拟世界里的真实结构。
Marvin Minsky and Seymour Papert formed many of our attitudes about programming and its place in our intellectual lives. To them we owe the understanding that computation provides a means of expression for exploring ideas that would otherwise be too complex to deal with precisely. They emphasize that a student's ability to write and modify programs provides a powerful medium in which exploring becomes a natural activity.
这里的许多有关程序设计及其在我们的智力活动中位置的认识是 Mrvin Minsky 和 Seymour Papert 提出的。从他们那里我们理解了,计算是一种探索各种思想的表达方式的手段,如果不这样做,这些思想将会因为太复杂而无法精确地处理。他们更强调说,学生编写和修改程序的能力可以成为一种威力强大的工具,使这种探索变成一种自然的活动。
We also strongly agree with Alan Perlis that programming is lots of fun and we had better be careful to support the joy of programming. Part of this joy derives from observing great masters at work. We are fortunate to have been apprentice programmers at the feet of Bill Gosper and Richard Greenblatt.
我们也完全同意 Alan Perlis 的看法,程序设计有着许多乐趣,我们应该认真地支持程序设计的趣味性。这种趣味性部分来源于观看大师们的工作。我们非常幸运曾经在 Bill Gosper 和 Richard Greenblatt 手下学习程序设计。
It is difficult to identify all the people who have contributed to the development of our curriculum. We thank all the lecturers, recitation instructors, and tutors who have worked with us over the past fifteen years and put in many extra hours on our subject, especially Bill Siebert, Albert Meyer, Joe Stoy, Randy Davis, Louis Braida, Eric Grimson, Rod Brooks, Lynn Stein, and Peter Szolovits. We would like to specially acknowledge the outstanding teaching contributions of Franklyn Turbak, now at Wellesley; his work in undergraduate instruction set a standard that we can all aspire to. We are grateful to Jerry Saltzer and Jim Miller for helping us grapple with the mysteries of concurrency, and to Peter Szolovits and David McAllester for their contributions to the exposition of nondeterministic evaluation in chapter 4.
很难列出所有曾对这一教学计划的开发做出过贡献的人们。我们衷心感谢在过去 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 对于第四章里非确定性求值讨论的贡献。
Many people have put in significant effort presenting this material at other universities. Some of the people we have worked closely with are Jacob Katzenelson at the Technion, Hardy Mayer at the University of California at Irvine, Joe Stoy at Oxford, Elisha Sacks at Purdue, and Jan Komorowski at the Norwegian University of Science and Technology. We are exceptionally proud of our colleagues who have received major teaching awards for their adaptations of this subject at other universities, including Kenneth Yip at Yale, Brian Harvey at the University of California at Berkeley, and Dan Huttenlocher at Cornell.
许多人在他们自己的大学里讲授本书时付出了极大努力,其中与我们密切合作的有 Technion 的 Jacob Katzenelson、Irvine 加州大学的 Hardy Mayer、牛津大学的 Joe Stoy、普度大学的 Elisha Sacks 以及挪威科技大学的 Jan Komorowski。我们特别为那些在其他大学改制这一课程,并由此获得重要教学奖的同行们感到骄傲,包括耶鲁大学的 Kenneth Yip、加州大学伯克利分校的 Brian Harvey 和康乃尔大学的 Dan Huttenlocher。
Al Moyé arranged for us to teach this material to engineers at Hewlett-Packard, and for the production of videotapes of these lectures. We would like to thank the talented instructors -- in particular Jim Miller, Bill Siebert, and Mike Eisenberg -- who have designed continuing education courses incorporating these tapes and taught them at universities and industry all over the world.
Al Moy&ecute; 安排我们到惠普公司为工程师教授这一课程,并为这些课程制作了录像带。我们感谢有些才干的教师——特别是 Jim Miller、Bill Siebert 和 Mike Eisenberg——他们设计了结合这些录像带的继续教育课程,并在全世界的许多大学和企业讲授。
Many educators in other countries have put in significant work translating the first edition. Michel Briand, Pierre Chamard, and André Pic produced a French edition; Susanne Daniels-Herold produced a German edition; and Fumio Motoyoshi produced a Japanese edition. We do not know who produced the Chinese edition, but we consider it an honor to have been selected as the subject of an ``unauthorized'' translation.
其他国家的许多教育工作者也在翻译本书的第一版方面做了许多工作。Michel Briand、Pierre Chanard 和 André Pic 做出了法文版,Susanne Daniels-Herold 做了德文版,Fumio Motoyoshi 做了日文版。
It is hard to enumerate all the people who have made technical contributions to the development of the Scheme systems we use for instructional purposes. 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.
要列举出所有为我们用于教学的 Scheme 系统做出过贡献的人是非常困难的。除了 Guy Stelle 之外,主要的专家还包括 Chris Hanson、Joe Bowbeer、Jim Miller、Guillermo Rozas 和 Stephen Adams。在这项工作中付出许多时间的还有 Richard Stallman、Alan Bawden、Kent Pitman、Jon Taft、Nell Mayle、John Lamping、Gwyn Osnos、Tracy Larrabee、George Carrette、Soma Chaudhuri、Bill Chiarchiaro、Steven Kirsch、L:eigh Klotz、Wayne Noss、Todd Cass、Patrlck O'Donnell、Kevin Theobald、Daniel Weise、Kenneth Sinclair、Anthony Courtemanche、Henry M. Wu、Andrew Berlin 和 Ruth Shyu。
Beyond the MIT implementation, we would like to thank the many people who worked on the IEEE Scheme standard, 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.
除了 MIT 实现之外,我们还应该感谢那些在 IEEE Scheme 标准方面工作的人们,包括 William Clinger 和 Jonathan Rees,他们编写了 R4RS,以及 Chris Hanynes、David Bartley、Chris Hanson 和 Jim Miller,他们撰写了 IEEE 标准。
Dan Friedman has been a long-time leader of the Scheme community. The community's broader work goes beyond issues of language design to encompass significant educational innovations, such as the high-school curriculum based on EdScheme by Schemer's Inc., and the wonderful books by Mike Eisenberg and by Brian Harvey and Matthew Wright.
Dan Friedman 多年以来一直是 SCheme 社团的领袖。这一社团的工作范围已经从语言设计问题,扩展到围绕着重要的教育创新问题,例如基于 Schemer's Inc. 的 EdScheme 的高中教学计划,以及由 Mike Eisenberg 和由 Brian Harvey 和 Matthew Wright 撰写的绝妙著作。
We appreciate the work of those who contributed to making this a real book, especially Terry Ehling, Larry Cohen, and Paul Bethge at the MIT Press. Ella Mazel found the wonderful cover image. For the second edition we are particularly grateful to Bernard and Ella Mazel for help with the book design, and to David Jones, TEX wizard extraordinaire. We also are indebted to those readers who made penetrating comments on the new draft: Jacob Katzenelson, Hardy Mayer, Jim Miller, and especially Brian Harvey, who did unto this book as Julie did unto his book Simply Scheme.
我们还要感谢那些为本教材的成书做出贡献的人们,特别是 MIT 出版社的 Terry Ehling、Larry Cohen 和 Paul Bethge。Ella Mazel 为本书找到了最美妙的封面图画。对于第二版,我们要特别感谢 Bernard 和 Ella Mazel 对本书设计的帮助,以及 David Jones 作为 TeX 专家的非凡能力。我们还要感谢下面的读者,他们对于这个新书稿提出了深刻的意见:Jacob Katzenelson、Hardy Mayer、Jim Miller,特别是 Brian Harvey,他对于本书所做的也就像 Julie 对于 Harvey 的著作 Simply Scheme 所做那样。
Finally, we would like to acknowledge the support of the organizations that have encouraged this work over the years, including support from Hewlett-Packard, made possible by Ira Goldstein and Joel Birnbaum, and support from DARPA, made possible by Bob Kahn.
最后我们还想对资助组织表示感谢,它们多年来一直支持这项工作的进行。包括来自惠普公司的支持(由 Ira Goldstein 和 Joel Birnbaum 促成);还有来自 DARPA 的支持(得到了 Bob Kahn 的帮助)。