キーワード
- プログラミング言語の必要性
- 構文仕様の記述
- BNF、文脈自由文法、構文図式、構文木
- 意味論の記述
- 操作的意味論、表示的意味論、公理的意味論
- 部分正当性と停止性
- プログラミング言語の分類
- 記述レベル
- 用途
- 計算モデル:手続き型、命令型、オブジェクト指向、宣言型、関数型、論理型、制約型
- 手続き型言語モデル
- 式の抽象化
- 制御の抽象化(if, while, switch)
- サブルーチンの実現(復帰、引数渡し、局所変数、大域脱出、Coroutine)
- データの抽象化(機械レベル、言語レベル、抽象データ型)
- オブジェクト指向
- メモリ管理
- 継承(単一継承 vs 多重継承、非単調継承)
- オブジェクト指向の実現
- 関数型言語
- チャーチ・ロッサー性、参照透過性
- 項書き換え系
- 遅延評価(lazy evaluation)
- 高階関数、カリー化
- 多相型(polymorphic type)
- inpureな関数型言語
- 論理型言語
- 命題論理、一階述語論理、Prolog、サザエさん
- 言語処理系
- Tダイアグラム
- 再配置可能形式、リンカとライブラリ、ダイナミックリンケージ
- 最適化
- 共通部分式削除、部分計算、サブルーチン展開、ループ展開、演算の代替、命令順序変更、スーパースカラ
- 制御フロー解析:基本ブロック、strictly dominate、dominance frontier
- データフロー解析:静的単一代入形式
- ソフトウェア開発環境
- 作成支援:言語依存の自動化、言語依存の視点移動・編集範囲指定、言語依存の情報定時
- コンパイル時の支援:エラー表示、Tracer(ステップ実行、WatchPoint、BreakPoint、逆実行)、Test Coverage Analysis、Program Verifier
- 性能解析:Profiler