本书1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,本书对于计算机科学的教育计划产生了深刻的影响。
第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。
本书自出版以来,世界各地已有100多所院校采用本书做教材,其中包括美国斯坦福大学、美国普林斯顿大学、英国牛津大学、日本东京大学等。
相关网站有本书源代码及其他教辅资料,网址为:
http://mitpress.mit.edu/sicp/
MIT相关课程地址(在线视频下载!):
http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
作者简介:
Harold Abelson是MIT1992年度MacVicarFacultyFellow。Gerald JaySussman是Matsushita电子工程教授。他们都在MIT电子工程和计算机科学系工作.都得到过最重要的计算机科学教育奖:如 Abelson得到了IEEE计算机学会的Booth奖。Sussman得到了ACM的Karlstrom奖。
Julie Sussman是作家和编辑,同时使用自然语言和计算机语言写作。
每一位严肃的计算机科学家都应该阅读这本书。由于本书清晰、简洁和富于才智,我们强烈推荐本书,它适合所有希望深刻理解计算机科学的人们。
——Mitchell Wand
《美国科学家》杂志
书本目录:
Contents vii
Foreword xi
Preface to the Second Edition xv
Preface to the First Edition xvii
Acknowledgments xxi
1 Building Abstractions with Procedures 1
1.1 The Elements of Programming 4
1.2 Procedures and the Processes They Generate 31
1.3 Formulating Abstractions with Higher-Order Procedures 56
2 Building Abstractions with Data 79
2.1 Introduction to Data Abstraction 83
2.2 Hierarchical Data and the Closure Property 97
2.3 Symbolic Data 142
2.4 Multiple Representations for Abstract Data 169
2.5 Systems with Generic Operations 187
3 Modularity, Objects and State 217
3.1 Assignment and Local State 218
3.2 The Environmental Model of Evaluation 236
3.3 Modeling with Mutable Data 251
3.4 Concurrency: Time Is of the Essence 297
3.5 Streams 316
4 Metalinguistic Abstraction 359
4.1 The Metaciricular Evaluator 362
4.2 Variations on a Scheme--Lazy Evaluation 398
4.3 Variations on a Scheme--Nondeterministic Computing 412
4.4 Logic Programming 438
5 Computing with Register Machines 491
5.1 Designing Register Machines 492
5.2 A Register-Machine Simulator 513
5.3 Storage Allocation and Garbage Collection 533
5.4 The Explicit Control Evaluator 547
5.5 Compilation 566
References 611
List of Exercises 619
Index 621
视频课程简介:
这个视频课程是由SICP作者Hal Abelson和Gerald Jay Sussman于1986年7月给Hewlett-Packard公司员工培训时所录制,包含完整的课程内容。
在线电子书:http://mitpress.mit.edu/sicp/full-text/book/book.asp
课程目录:
Lecture 01a: Overview and Introduction to Lisp
The first lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 01b: Procedures and Processes; Substitution Model
The second lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 02a: Higher-order Procedures
The third lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 02b: Compound Data
The fourth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 03a: Henderson Escher Example
The fifth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 03b: Symbolic Differentiation; Quotation
The sixth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 04a: Pattern Matching and Rule-based Substitution
The seventh lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 04b: Generic Operators
The eighth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 05a: Assignment, State, and Side-effects
The ninth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 05b: Computational Objects
The tenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 06a: Streams, Part 1
The eleventh lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 06b: Streams, Part 2
The twelfth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 07a: Metacircular Evaluator, Part 1
The thirteenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 07b: Metacircular Evaluator, Part 2
The fourteenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 08a: Logic Programming, Part 1
The fifteenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 08b: Logic Programming, Part 2
The sixteenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 09a: Register Machines
The seventeenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 09b: Explicit-control Evaluator
The eighteenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 10a: Compilation
The nineteenth lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.
Lecture 10b: Storage Allocation and Garbage Collection
The final lecture of twenty from MIT's Structure and Interpretation of Computer Programs course.