This course introduces linguistic features and mechanisms in programming languages, covering fundamentals ones to advanced and domain specific ones.
本講義はプログラミング言語の諸機能に関して、その基本および先進的な性質を解説する。
Modern programming languages offer various advanced linguistic features and mechanisms for productivity and safety. This course aim at understanding those features with respect to their historical background as well as benefits and drawbacks, which is useful to the users of the languages (i.e., programmers) as well as the designers of the languages.
近年のプログラミング言語には、様々な先進的な機能があり、プログラムの生産性や安全性に貢献している。そのような言語機能が作られた背景や、言語機能の持つ性質を理解することは、プログラミング言語を利用する(即ちプログラミングを行う)立場からも、プログラミング言語を作成する立場からも重要なものである。本講義は、そのような言語機能の背景と性質を理解することを目的とする。
Each lecture starts with a short exam to understand the problems to be discussed.
1. Modularization, Parnas' principle, information hiding
2. Abstract data type, Liskov's substitution principle, interface and implementation
3. Object-oriented programming 1 (class, instance, encapsulation, inheritance)
4. Object-oriented programming 2 (delegation, multi-methods)
5. Reusability (library, framework, design patterns)
6. Multiple inheritance, traits
7. Aspect-oriented programming, crosscutting concerns, dependency injection
8. Feature-oriented programming, context-oriented programming
9. Type safety 1 (algebraic data types, subtypes, type inference)
10. Type safety 2 (polymorphic types, generic types, the expression problem, module types)
11. Metaprogramming, templates, macros
12. Metaobject protocols
各回の講義に先立って簡単なテストを行う。
1. モジュール化・Parnas原理・情報隠蔽
2. 抽象データ型・Liskov置換原則・インタフェースと実現
3. オブジェクト指向1 (クラス・インスタンス・カプセル化・継承)
4. オブジェクト指向2 (委譲・マルチメソッド)
5. 再利用性 (ライブラリとフレームワーク・デザインパターン)
6. 多重継承・traits
7. アスペクト指向・横断的関心事・Dependency injection
8. フィーチャ指向・文脈指向
9. 型安全性1 (代数データ型・部分型・型推論)
10. 型安全性2 (多層性・総称型・The Expression Problem・モジュール型)
11. メタプログラミング・テンプレート・マクロ
12. メタオブジェクトプロトコル
None.
The slides will be distributed through OCW. (N.B. The slides are not self explanatory textbooks; they are intended to assist aural lectures.)
特になし。
講義で使用したスライドはOCWを通じて提供する。(ただしスライドは講義説明を補完するためのものであり、教科書として用いられることを意図していない。)
Basic knowledge on programming.
プログラミング言語についての基本的な知識を有すること。
Report by the end of the term.
レポートによる。
The language for the aural lectures is Japanese. The lecture slide language is English for non-native Japanese speakers.