Structure and Interpretation of Computer Programs - 2nd Edition (MIT)

Structure and Interpretation of Computer Programs - 2nd Edition (MIT) pdf epub mobi txt 电子书 下载 2025

出版者:The MIT Press
作者:Harold Abelson
出品人:
页数:657
译者:
出版时间:1996-7-25
价格:USD 145.56
装帧:Hardcover
isbn号码:9780262011532
丛书系列:
图书标签:
  • programming
  • 计算机
  • SICP
  • 计算机科学
  • 编程
  • scheme
  • lisp
  • MIT
  • Structure and Interpretation of Computer Programs
  • 2nd Edition
  • MIT
  • Computer Science
  • Programming
  • Lisp
  • Functional Programming
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text.

There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published.

A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises.

In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.

作者简介

Hal Abelson is Class of 1922 Professor of Computer Science and Engineering at Massachusetts Institute of Technology and a fellow of the IEEE. He is a founding director of Creative Commons, Public Knowledge, and the Free Software Foundation. Additionally, he serves as co-chair for the MIT Council on Educational Technology.

Gerald Jay Sussman is the Matsushita Professor of Electrical Engineering in the Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology. He is also the coauthor of Structure and Interpretation of Computer Programs (MIT Press, second edition, 1996).

目录信息

Foreword
Preface to the Second Edition
Preface to the First Edition
Acknowledgments
1 Building Abstractions with Procedures
1.1 The Elements of Programming
1.1.1 Expressions
1.1.2 Naming and the Environment
1.1.3 Evaluating Combinations
1.1.4 Compound Procedures
1.1.5 The Substitution Model for Procedure Application
1.1.6 Conditional Expressions and Predicates
1.1.7 Example: Square Roots by Newton's Method
1.1.8 Procedures as Black-Box Abstractions
1.2 Procedures and the Processes They Generate
1.2.1 Linear Recursion and Iteration
1.2.2 Tree Recursion
1.2.3 Orders of Growth
1.2.4 Exponentiation
1.2.5 Greatest Common Divisors
1.2.6 Example: Testing for Primality
1.3 Formulating Abstractions with Higher-Order Procedures
1.3.1 Procedures as Arguments
1.3.2 Constructing Procedures Using Lambda
1.3.3 Procedures as General Methods
1.3.4 Procedures as Returned Values
2 Building Abstractions with Data
2.1 Introduction to Data Abstraction
2.1.1 Example: Arithmetic Operations for Rational Numbers
2.1.2 Abstraction Barriers
2.1.3 What Is Meant by Data?
2.1.4 Extended Exercise: Interval Arithmetic
2.2 Hierarchical Data and the Closure Property
2.2.1 Representing Sequences
2.2.2 Hierarchical Structures
2.2.3 Sequences as Conventional Interfaces
2.2.4 Example: A Picture Language
2.3 Symbolic Data
2.3.1 Quotation
2.3.2 Example: Symbolic Differentiation
2.3.3 Example: Representing Sets
2.3.4 Example: Huffman Encoding Trees
2.4 Multiple Representations for Abstract Data
2.4.1 Representations for Complex Numbers
2.4.2 Tagged data
2.4.3 Data-Directed Programming and Additivity
2.5 Systems with Generic Operations
2.5.1 Generic Arithmetic Operations
2.5.2 Combining Data of Different Types
2.5.3 Example: Symbolic Algebra
3 Modularity, Objects, and State
3.1 Assignment and Local State
3.1.1 Local State Variables
3.1.2 The Benefits of Introducing Assignment
3.1.3 The Costs of Introducing Assignment
3.2 The Environment Model of Evaluation
3.2.1 The Rules for Evaluation
3.2.2 Applying Simple Procedures
3.2.3 Frames as the Repository of Local State
3.2.4 Internal Definitions
3.3 Modeling with Mutable Data
3.3.1 Mutable List Structure
3.3.2 Representing Queues
3.3.3 Representing Tables
3.3.4 A Simulator for Digital Circuits
3.3.5 Propagation of Constraints
3.4 Concurrency: Time Is of the Essence
3.4.1 The Nature of Time in Concurrent Systems
3.4.2 Mechanisms for Controlling Concurrency
3.5 Streams
3.5.1 Streams Are Delayed Lists
3.5.2 Infinite Streams
3.5.3 Exploiting the Stream Paradigm
3.5.4 Streams and Delayed Evaluation
3.5.5 Modularity of Functional Programs and Modularity of Objects
4 Metalinguistic Abstraction
4.1 The Metacircular Evaluator
4.1.1 The Core of the Evaluator
4.1.2 Representing Expressions
4.1.3 Evaluator Data Structures
4.1.4 Running the Evaluator as a Program
4.1.5 Data as Programs
4.1.6 Internal Definitions
4.1.7 Separating Syntactic Analysis from Execution
4.2 Variations on a Scheme -- Lazy Evaluation
4.2.1 Normal Order and Applicative Order
4.2.2 An Interpreter with Lazy Evaluation
4.2.3 Streams as Lazy Lists
4.3 Variations on a Scheme -- Nondeterministic Computing
4.3.1 Amb and Search
4.3.2 Examples of Nondeterministic Programs
4.3.3 Implementing the Amb Evaluator
4.4 Logic Programming
4.4.1 Deductive Information Retrieval
4.4.2 How the Query System Works
4.4.3 Is Logic Programming Mathematical Logic?
4.4.4 Implementing the Query System
5 Computing with Register Machines
5.1 Designing Register Machines
5.1.1 A Language for Describing Register Machines
5.1.2 Abstraction in Machine Design
5.1.3 Subroutines
5.1.4 Using a Stack to Implement Recursion
5.1.5 Instruction Summary
5.2 A Register-Machine Simulator
5.2.1 The Machine Model
5.2.2 The Assembler
5.2.3 Generating Execution Procedures for Instructions
5.2.4 Monitoring Machine Performance
5.3 Storage Allocation and Garbage Collection
5.3.1 Memory as Vectors
5.3.2 Maintaining the Illusion of Infinite Memory
5.4 The Explicit-Control Evaluator
5.4.1 The Core of the Explicit-Control Evaluator
5.4.2 Sequence Evaluation and Tail Recursion
5.4.3 Conditionals, Assignments, and Definitions
5.4.4 Running the Evaluator
5.5 Compilation
5.5.1 Structure of the Compiler
5.5.2 Compiling Expressions
5.5.3 Compiling Combinations
5.5.4 Combining Instruction Sequences
5.5.5 An Example of Compiled Code
5.5.6 Lexical Addressing
5.5.7 Interfacing Compiled Code to the Evaluator
References
List of Exercises
Index
· · · · · · (收起)

读后感

评分

曾经发表过对此书的简短评价,如果说国内科班的计算机课程可以磨灭一个程序员真正的天性,那么这本书无疑是我们的救星。 建议可以和OCW一起学习本书,可以亲身领略Hal和Gerry两位大牛的课程是个很不错的经历。(由于Youtube被封,建议翻墙) 该书从计算机语言的本质讲起,通过L...  

评分

最初买这本书是冲着学习函数式编程来的,但读完本书以后才发现原来作者的用意并不在介绍函数式编程,而在于介绍编程的本质。 我身边绝大多数的程序员都是用谭浩强老师的那本《C程序设计语言》入门的。如果把C比作剑宗,那么Lisp则是气宗,二者并不矛盾,但初学者却容易先入为主...  

评分

我在豆瓣上第一本力荐的书。本来是打算留给TAOCP的,可惜天资不够,一直无缘窥得天书真髓。好在SICP同样对得起“力荐”二字。 有人说看这本书主要看第四第五章。这不是一件容易的事情,尤其对于我们这个计算机教育落后的国家。好在还有平易近人的一二三章,基本上可以在网上找...  

评分

「先说几个八卦」 - 本书曾经是MIT本科第一门课的教材。前两年被Python取代,在geek中引发了轩然大波。有兴趣可以Google一下[sicp mit python]。 - 本书在Amazon上的评分严重两极分化,五星(>90)和一星(>50)为主,彻底反正态分布。 - 本书在Amazon上排名最高的书评出自Pet...  

评分

第四章scheme做個小小的interpreter, 學過compiler的人一定覺得還不如看dragon book比較實際. 但是他精彩就是在於用很簡潔的方式(scheme的特性)去解釋複雜的interpreter原理. 但是interpreter不是最重要的, 精彩的還是看他如何在精心設計之下可以順利的拓展他需要的功能. 又...  

用户评价

评分

如果只能读一本计算机书,我会选择这本。 这本书讲的不是术,而是道。

评分

不论学不学 scheme ,都非常值得一读的好书!

评分

我为身为码农一员深感自豪。

评分

用了很久,可是还是没有看完...

评分

我情愿把这本书叫做用Lisp语言讲解的计算机科学导论。它讲解了用抽象控制复杂度,讲解了函数式和指令式编程两种范式,讲解了并发编程,逻辑编程,解释器,计算机工作原理,编译器工作原理.....另外最后一章相当于CSAPP第3,4章对程序的机器层面实现以及Y86实现等内容相比较

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美书屋 版权所有