第二版序言

Preface to the Second Edition

有没有可能软件不同于其它任何东西,注定是要被抛弃的:关键就是要永远视它为肥皂泡?

——艾伦·佩利

Is it possible that software is not like anything else, that it is meant to be discarded: that the whole point is to always see it as a soap bubble?

Alan J. Perlis


自1980年以来,MIT计算机科学入门课程就一直是基于本书中的内容之上的。当第一版出版时,我们已经讲授了4年这些内容。第二版面世时,时间又过去了12年。我们很高兴自己的作品受到了广泛的接受,并被纳入到其他的课本中。我们看到我们的学生从本书中选取想法和程序,并把它们作为新型计算机系统和语言的核心。古老的犹太双关语获得了实现『在犹太法典《塔木德》中,“孩子”是“banayich”,而“建设者”是“bonayich” ——译按』,我们的学生成为了我们的建设者。能拥有如此能干的学生和技艺高超的建设者,我们感到很幸运。

The material in this book has been the basis of MIT's entry-level computer science subject since 1980. We had been teaching this material for four years when the first edition was published, and twelve more years have elapsed until the appearance of this second edition. We are pleased that our work has been widely adopted and incorporated into other texts. We have seen our students take the ideas and programs in this book and build them in as the core of new computer systems and languages. In literal realization of an ancient Talmudic pun, our students have become our builders. We are lucky to have such capable students and such accomplished builders.


在准备此版的过程中,我们根据自己的教学经验以及在MIT和其他地方收到的评论加入了数以百计的说明。我们重新设计了这本书中的大部分重要编程系统,包括通用算数系统、解释器、寄存器机模拟器和编译器。我们重新编写了所有程序样例,确保它们可以在所有符合IEEE Scheme标准(IEEE 1990)的Scheme实现上运行。

In preparing this edition, we have incorporated hundreds of clarifications suggested by our own teaching experience and the comments of colleagues at MIT and elsewhere. We have redesigned most of the major programming systems in the book, including the generic-arithmetic system, the interpreters, the register-machine simulator, and the compiler; and we have rewritten all the program examples to ensure that any Scheme implementation conforming to the IEEE Scheme standard (IEEE 1990) will be able to run the code.


此版强调几个新的主题,最重要的就是在计算模型中合理利用时间的不同方式:带有状态的对象、并发编程、函数式编程、惰性求值以及非确定型编程。我们添加了有关并发和非确定型的章节,并试图将这一主题糅合进整本书中。

This edition emphasizes several new themes. The most important of these is the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming, lazy evaluation, and nondeterministic programming. We have included new sections on concurrency and nondeterminism, and we have tried to integrate this theme throughout the book.


本书的初版紧紧跟随我们MIT一学年课程的教学大纲。由于第二版中加入了新的内容,在一学年内教授所有东西是不可能的了,因此导师必须仔细挑选。在我们自己的教学过程中,我们有时会跳过关于逻辑编程的部分(章节4.4),我们让学生使用寄存器机模拟器,但跳过它的实现(章节5.2),对于编译器也只提供粗略的概述(章节5.5)。即使如此,这仍是一门时间紧张的课程。有些导师可能会选择只教授前三、四章,而将其他的内容留给后续课程。

The first edition of the book closely followed the syllabus of our MIT one-semester subject. With all the new material in the second edition, it will not be possible to cover everything in a single semester, so the instructor will have to pick and choose. In our own teaching, we sometimes skip the section on logic programming (section 4.4), we have students use the register-machine simulator but we do not cover its implementation (section 5.2), and we give only a cursory overview of the compiler (section 5.5). Even so, this is still an intense course. Some instructors may wish to cover only the first three or four chapters, leaving the other material for subsequent courses.


mitpress.mit.edu/sicp这个网站为本书的用户提供支持,包括书中的程序、编程作业范例、补充资料和供下载的Lisp的Scheme方言的实现。

The World-Wide-Web site www-mitpress.mit.edu/sicp provides support for users of this book. This includes programs from the book, sample programming assignments, supplementary materials, and downloadable implementations of the Scheme dialect of Lisp.


原文链接

results matching ""

    No results matching ""