SICP taught in Python 3
http://www-inst.eecs.berkeley.edu/~cs61a/sp12/book/index.html
第1章: 関数による抽象化を構築
-
- 1.1 イントロダクション
- 1.1.1 Pythonでプログラミング
- 1.1.2 Python3をインストール
- 1.1.3 対話型セッション
- 1.1.4 最初の例
- 1.1.5 実習: エラー
- 1.2 プログラミング要素
- 1.2.1 式
- 1.2.2 呼び出し
- 1.2.3 ライブラリ関数をインポートする
- 1.2.4 名前と環境
- 1.2.5 入れ子になった式を評価する
- 1.2.6 関数ダイアグラム
- 1.3 新しく関数を定義する
- 1.3.1 環境
- 1.3.2 ユーザ関数を定義する
- 1.3.3 例:ユーザ定義関数
- 1.3.4 ローカルネーム
- 1.3.5 実習: 名前を選ぶ
- 1.3.6 関数を抽象化
- 1.3.7 演算子
- 1.4 実習: 関数の技巧
- 1.4.1 ドックストリング
- 1.4.2 引数の初期値
- 1.5 コントロール
- 1.5.1 命令文
- 1.5.2 複合命令文
- 1.5.3 関数を定義する II: ローカルの割り当て
- 1.5.4 条件文
- 1.5.5 反復
- 1.5.6 実習: テスト
- 1.6 高階関数
- 1.1 イントロダクション
第2章: オブジェクトによる抽象化を構築
-
- 2.1 イントロダクション
- 2.1.1 オブジェクトメタファー
- 2.1.2 ネイティブデータ
- 2.2 データ抽象化
- 2.2.1 例: 有理数上の演算
- 2.2.2 タプル
- 2.2.3 抽象化の障壁
- 2.2.4 データのプロパティ
- 2.3 シーケンス
- 2.3.1 入れ子になったペア
- 2.3.2 再帰リスト
- 2.3.3 タプル II
- 2.3.4 シーケンス反復
- 2.3.5 シーケンス抽象
- 2.3.6 ストリング
- 2.3.7 従来のインターフェース
- 2.4 可変データ
- 2.4.1 ローカルの状態
- 2.4.2 非ローカルの代入のメリット
- 2.4.3 非ローカルの代入のコスト
- 2.4.4 リスト
- 2.4.5 辞書
- 2.4.6 例: 伝達の制約
- 2.5 オブジェクト指向プログラミング
- 2.5.1 オブジェクトとクラス
- 2.5.2 クラスを定義する
- 2.5.3 メッセージ・パッシングとドット表現
- 2.5.4 クラス属性
- 2.5.5 継承
- 2.5.6 継承を使う
- 2.5.7 多重継承
- 2.5.8 オブジェクトの役割
- 2.6 クラスとオブジェクトを実装する
- 2.6.1 インスタンス
- 2.6.2 クラス実装
- 2.6.3 実装したクラスを使う
- 2.7 一般的な演算
- 2.7.1 文字列変換
- 2.7.2 多重表現
- 2.7.3 汎用関数
- 2.1 イントロダクション