プログラミング言語における諸々の言語機能に関する一般的な解説を行い、先進的な言語機能について紹介する。
近年のプログラミング言語には、様々な先進的な機能があり、プログラムの生産性や安全性に貢献している。そのような言語機能が作られた背景や、言語機能の持つ性質を理解することは、プログラミング言語を利用する(即ちプログラミングを行う)立場からも、プログラミング言語を作成する立場からも重要なものである。本講義は、そのような言語機能の背景と性質を理解することを目的とする。
各回の講義に先立って簡単なテストを行う。
1. モジュール化・Parnas原理・情報隠蔽
2. 抽象データ型・Liskov置換原則・インタフェースと実現
3. オブジェクト指向1 (クラス・インスタンス・カプセル化・継承)
4. オブジェクト指向2 (委譲・マルチメソッド)
5. 再利用性 (ライブラリとフレームワーク・デザインパターン)
6. 多重継承・traits
7. アスペクト指向・横断的関心事・Dependency injection
8. フィーチャ指向・文脈指向
9. 型安全性1 (代数データ型・部分型・型推論)
10. 型安全性2 (多層性・総称型・The Expression Problem・モジュール型)
11. メタプログラミング・テンプレート・マクロ
12. メタオブジェクトプロトコル
特になし。
講義で使用したスライドはOCWを通じて提供する。(ただしスライドは講義説明を補完するためのものであり、教科書として用いられることを意図していない。)
プログラミング言語についての基本的な知識を有すること。
レポートによる。