牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

もくじ: 計算機プログラムの構造と解釈(Python版)

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.6.1 引数としての関数
      • 1.6.2 グローバルメソッドとしての関数
      • 1.6.3 関数を定義する III: 入れ子になった定義
      • 1.6.4 戻り値としての関数
      • 1.6.5 ラムダ式
      • 1.6.6 例: ニュートンメソッド
      • 1.6.7 抽象化とファーストクラス関数
      • 1.6.8 デコレータ

第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.7 一般的な演算
      • 2.7.1 文字列変換
      • 2.7.2 多重表現
      • 2.7.3 汎用関数

第3章: コンピュータープログラムの構造および解釈

    • 3.1 イントロダクション
    • 3.2 機能と生成するプロセス
      • 3.2.1 再帰関数
      • 3.2.2 再帰的機能の分析
      • 3.2.3 木構造再帰
      • 3.2.4 例: 変更を数える
      • 3.2.5 増加の命令
      • 3.2.6 例: 累乗
    • 3.3 再帰データ構造
      • 3.3.1 再帰リストを処理する
      • 3.3.2 階層構造
      • 3.3.3 セット
    • 3.4 例外
      • 3.4.1 例外オブジェクト
    • 3.5 言語結合のインタープリタ
      • 3.5.1 電卓
      • 3.5.2 解析
    • 3.6 言語抽象化のインタープリタ
      • 3.6.1 ロゴ言語
      • 3.6.2 構造
      • 3.6.3 環境
      • 3.6.4 プログラムとしてのデータ

第4章: 並列分散演算

    • 4.1 イントロダクション
    • 4.2 分散演算
      • 4.2.1 クライアント/サーバー・システム
      • 4.2.2 P2Pシステム
      • 4.2.3 モジュール
      • 4.2.4 メッセージの受け渡し
      • 4.2.5 WWW上のメッセージ
    • 4.3 並列演算
      • 4.3.1 共有状態の問題
      • 4.3.2 並列計算の正確性
      • 4.3.3 共有状態を保護: ロックとセマフォ
      • 4.3.4 停滞同期: 状態変数
      • 4.3.5 デッドロック

第5章: シーケンスとコルーチン

    • 5.1 イントロダクション
    • 5.2 潜在的なシーケンス
      • 5.2.1 Pythonイテレータ
      • 5.2.2 繰り返し
      • 5.2.3 ジェネレーターとYield
      • 5.2.4 イテラブル
      • 5.2.5 ストリーム
    • 5.3 コルーチン