SICP — JS
Structure and Interpretation of Computer Programs — Comparison Edition
Legend
Color highlighting:
Unchanged █
Scheme █
Javascript █
Explanation █
Web-only █
EN
JA
EN/JA
Foreword
序文
Foreword to Structure and Interpretation of Computer Programs, 1984
「計算機プログラムの構造と解釈」への序文、1984年
Preface
まえがき
Prefaces to Structure and Interpretation of Computer Programs, 1996 & 1984
「計算機プログラムの構造と解釈」へのまえがき、1996年 & 1984年
Acknowledgments
謝辞
➤
▼
1
Building Abstractions with Functions
関数による抽象の構築
➤
▼
1.1
The Elements of Programming
プログラミングの要素
1.1.1
Expressions
式
1.1.2
Naming and the Environment
名前付けと環境
1.1.3
Evaluating Operator Combinations
演算子の組み合わせ の評価
1.1.4
Compound Functions
複合 関数
1.1.5
The Substitution Model for Function Application
関数 適用の置換モデル
1.1.6
Conditional Expressions and Predicates
条件式と述語
1.1.7
Example: Square Roots by Newton's Method
例:ニュートン法による平方根
1.1.8
Functions as Black-Box Abstractions
ブラックボックス抽象化としての 関数
➤
▼
1.2
Functions 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 Functions
高階 関数 による抽象の定式化
1.3.1
Functions as Arguments
引数としての 関数
1.3.2
Constructing Functions using Lambda Expressions
ラムダ式を使った関数の構築
1.3.3
Functions as General Methods
一般的な方法としての 関数
1.3.4
Functions 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
Strings
文字列
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 Functions
単純な 関数 の適用
3.2.3
Frames as the Repository of Local State
ローカル状態の保管場所としてのフレーム
3.2.4
Internal Declarations
内部 宣言
3.2.5 CSE Machine
➤
▼
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 Components
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 Declarations
4.1.7 Separating Syntactic Analysis from Execution
➤
▼
4.2 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 Nondeterministic Computing
4.3.1 Search and amb
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 Instructions and Their Execution Functions
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 Dispatcher and Basic Evaluation
5.4.2 Evaluating Function Applications
5.4.3 Blocks, Assignments, and Declarations
5.4.4 Running the Evaluator
➤
▼
5.5 Compilation
5.5.1 Structure of the Compiler
5.5.2 Compiling Components
5.5.3 Compiling Applications and Return Statements
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
About the SICP JS Project
SICP JSプロジェクトについて
Permalink copied!
< Previous
Next >