Powered by
SmartDoc
プログラミング言語論教材
>>
プログラミング言語論教材
2007年度 春学期
服部隆志
この資料は慶應義塾大学環境情報学部における授業で使用するために作成したものです。構成はConcepts of Programming Languages
[1]
に基づいています。
目次
1 プログラミング言語とは
1.1 プログラミングとは
1.2 プログラミング言語の理論を勉強する理由
1.3 プログラミング言語を特徴づけるもの
1.3.1 文字
1.3.2 文法
1.3.3 パラダイム
1.4 主要な分野と代表的な言語
1.5 プログラミング言語の歴史
1.6 言語のデザインに影響を与えるもの
1.6.1 コンピュータアーキテクチャ
1.6.2 プログラミングの方法論
1.7 プログラミング言語の評価基準
2 構文と意味
2.1 言語を定義する方法
2.2 形式言語理論をちょっとだけ
2.2.1 形式的な言語の定義
2.2.2 BNF 記法
2.2.3 構文木
2.3 意味論をちらっと
2.3.1 操作的意味論
2.3.2 公理的意味論
2.3.3 表示的意味論
2.3.4 手続き型言語以外の意味論
3 名前と束縛と変数
3.1 名前について
3.2 名前の束縛
3.3 スコープ
3.3.1 静的スコープ
3.3.2 動的スコープ
3.3.3 closure と eval
3.3.4 内部クラス
3.4 名前空間
3.5 変数
3.5.1 アドレスと値
3.5.2 生存期間
4 型
4.1 型とは何か
4.2 いろいろな型
4.2.1 列挙型(enumeration type)
4.2.2 部分範囲型(subrange type)
4.2.3 ユニオン型(union type)
4.2.4 ポインタ型(pointer type)
4.3 変数の型はいつ決定されるか
4.3.1 変数宣言
4.3.2 動的な型
4.3.3 型推論
4.4 型検査
4.4.1 強い型付け(strong typing)
4.4.2 型同値(type compatibility)
5 式と文
5.1 式の評価
5.1.1 演算子の優先度と結合性
5.1.2 評価の順序
5.1.3 短絡評価
5.2 演算子と型
5.2.1 多重定義
5.2.2 型変換
5.2.2.1 widening と narrowing
5.2.2.2 強制型変換(coercion)
5.2.2.3 明示的な型変換
5.3 制御文
5.3.1 イテレータ
5.3.2 Guarded Commands
6 副プログラム
6.1 引数
6.2 引数の受け渡し
6.2.1 受け渡しの方向
6.2.2 実現方式
6.2.2.1 値渡し(call by value または pass by value)
6.2.2.2 参照渡し(call by reference または pass by reference)
6.2.2.3 名前渡し(call by name または pass by name)
6.3 副プログラムと型
6.3.1 型検査
6.3.2 多相性
7 抽象データ型
7.1 抽象データ型とは
7.2 Ada の場合
7.3 C++ の場合
7.4 Java の場合
7.5 パラメータ付きの抽象データ型
7.5.1 Ada の場合
7.5.2 C++ の場合
8 オブジェクト指向
8.1 オブジェクト指向言語とは
8.2 オブジェクト指向言語のデザイン
8.2.1 どのくらい純粋にオブジェクト指向にするか?
8.2.2 情報隠蔽はユーザが指定可能か?
8.2.3 単一継承か、多重継承か?
8.2.4 実装を継承するか、仕様を継承するか?
8.2.5 サブクラスは部分型か?
8.2.6 型検査をどうするか?
8.2.7 メソッドは動的束縛か静的束縛か?
8.2.8 記憶領域の割り当てと解放の方法は?
8.3 Smalltalk の場合
8.4 C++ の場合
8.5 Java の場合
8.6 JavaScript (ECMAScript) の場合
8.7 アスペクト指向
9 並行プログラミング
9.1 並行性について
9.1.1 並行と並列
9.1.2 並行性の単位
9.1.3 ハードウェアにおける並行実行
9.2 同期
9.3 セマフォ
9.3.1 協調的同期
9.3.2 競争的同期
9.4 モニタ
10 例外処理
10.1 例外とは
10.2 例外処理機構
10.2.1 例外処理機構が無い場合
10.2.2 例外処理機構の利点
10.2.3 例外処理機構のデザイン
10.3 PL/I の場合
10.4 Java の場合
11 関数型言語
11.1 純関数型言語
11.2 ラムダ計算
11.2.1 定義
11.2.2 α変換
11.2.3 β変換
11.2.4 簡約
11.2.5 簡約戦略
11.3 Lisp の場合
11.4 ML の場合
11.4.1 型推論
11.4.2 パラメトリック多相型
11.4.3 高階関数
11.5 Haskell の場合
12 論理型言語
12.1 理想的な論理型言語の特徴
12.2 Prolog の場合
12.2.1 プログラムの構造
12.2.2 質問
12.2.3 プログラムの実行
12.3 Prolog の問題点
12.3.1 導出の順序
12.3.2 否定
参考文献
プログラミング言語論教材
>>