このページのURL: http://www.fos.kuis.kyoto-u.ac.jp/~igarashi/class/pl/ (現在 https://github.com/aigarashi/PL-LectureNotes に転送されます.)
- 曜時限: 月曜日2限(10:30〜12:00)
- 場所: 総合研究7号館1F情報1講義室
- 担当: 五十嵐 淳
- オフィスアワー: 月曜17:00〜18:00(総合研究7号館224)
- その他の時間は要アポイントメント
- オフィスアワー: 月曜17:00〜18:00(総合研究7号館224)
- 担当TA: 矢杉和義 (通信情報システム専攻D2)
- 2016年度試験問題, 2017年度試験問題, 2018年度試験問題を置きました.(2020.01.17)
- 12/19(木)5限に補講を行う予定です.(2019.12.15)
- 11/27(水)5限に補講を行う予定です.(2019.11.15) (追記: 五十嵐の体調不良によりキャンセルになりました.)
- 課題1が出ました.(2019.10.28)
- 2019年度ページたちあげ (2019.9.19)
- BlueJ のデバッガなんて知らん,ということなので今年の「プログラミング入門」で使った資料を置きました.(2017.11.06)
プログラミング言語が提供する様々な抽象化機構や実行時システムについて,種々のプログラミング言語を比較しながらコンピュータサイエンスの立場から論じる.
(おそらく前半くらいは)以下の2言語
- Java
- OCaml
を並行して用い,同じ例題が異なる言語でどのように表現されるかを知り,それを通じて,シラバスの授業内容にあげられているような,言語に共通するプログラム抽象化のアイデア,言語毎の idiosyncrasy (特異な点)を学ぶ.また,実際の言語仕様の文書を読んで理解できるようにもしたい.
ある言語を使ってプログラムをバリバリ書くためには,その基本的な原理や機能を知ることはもちろん必要だが,利用可能なライブラリやツール(エディタ,コンパイラ,デバッガ,プロファイラ,バージョン管理システム)の使い方を知るのも重要である.この講義だけでは,そこまではあまりカバーできないのであしからず.
以下の表で,日付は今年度のものですが,内容は昨年の実績に基づいており,変更の可能性が大いにあります.
回数 | 日付 | 内容 | 資料 | 宿題 |
---|---|---|---|---|
1 | 10/7 | 講義概要・Javaと2分探索木の復習 | 00-introduction.html/00-introduction.pdf | Java の復習 01-java.html/01-java.pdf |
2 | 10/16(水) | 2分探索木 in Java | 02-bst-java.html/02-bst-java.pdf | |
3 | 10/21 | OCaml の概要 (1) | 03-ocaml.html/03-ocaml.pdf | |
4 | 10/28 | OCaml の概要 (2), 2分探索木 in OCaml (1) | 04-bst-ocaml.html/04-bst-ocaml.pdf | 課題1(締切: 11/11) |
5 | 11/6(水) | OCaml の概要(3), 短命な2分探索木 in OCaml, C言語 | 05-C.html/05-C.pdf | |
6 | 11/11 | 2分探索木 in C | 06-bst-C.html/06-bst-C.pdf | |
7 | 11/18 | プログラミング言語の仕様を読む | 07-language-syntax.html/07-language-syntax.pdf | |
12/2 | (休講) | |||
8 | 12/9 | 再帰と繰り返し | 08-rec-iter.html/08-rec-iter.pdf | |
9 | 12/16 | 多相性 | 09-polymorphism.html/09-polymorphism.pdf | |
10 | 12/19(木,5限)補講 | 高階関数 | 10-hofuns.html/10-hofuns.pdf | |
11 | 12/23 | 多相的な2分探索木 | 11-polyBST.html/11-polyBST.pdf | |
12 | 1/6 | ビジターパターン | 12-visitor-pattern.html/12-visitor-parttern.pdf | |
13 | 1/14(火) | モジュール | 13-modules.html/13-modules.pdf | |
1/20 | (休講) | |||
2/? | 試験 |
講義で紹介するプログラムは(上のファイル一覧にある) src/ 以下で公開するので適宜ダウンロードしてもらいたい.
- X. Leroy, D. Doligez, A. Frisch, J. Garrigue, D. Rémy and J. Vouillon. The OCaml System Documentation and User's Manual
- J. Gosling, B. Joy, G. Steele, G. Bracha, A. Buckley. The Java Language Specification. Java SE 8 Edition.
- J. Gosling, B. Joy, G. Steele, G. Bracha, A. Buckley. The Java Language Specification. Java SE 9 Edition.
- C99 (ISOが1999年に定めたC言語規格 ISO/IEC 9899:1999) (正式版は有料だが,ドラフトが落ちている.) その後 C11 に改訂されている.
- Richard Kelsey, William Clinger, and Jonathan Rees (Editors). Revised^5 Report on the Algorithmic Language Scheme Scheme 言語仕様の改訂第5版(略してR5RSと呼ぶ).最新は2017年10月に策定された改訂第7版であるが諸般の事情により,第5版を参考にする.
- 五十嵐淳. OCaml 入門 (次の本の元になった計算機科学実験及演習の資料.この講義の範囲ならこれで十分)
- 五十嵐淳.プログラミング in OCaml.技術評論社.(でもこれも買ってくれるとうれしい!)
回数 | 日付 | 内容 |
---|---|---|
1 | 10/1 | 講義概要・Javaと2分探索木の復習 |
2 | 10/15 | 2分探索木 in Java (1) |
3 | 10/22 | OCaml の概要 |
4 | 10/29 | 2分探索木 in OCaml (1), 2分探索木 in Java (2) |
5 | 11/5 | 2分探索木 in Java (3), 再帰と繰り返し |
6 | 11/12 | 続・再帰と繰り返し |
7 | 11/19 | 短命な2分探索木 in Java and OCaml, モジュールシステム(1) |
8 | 11/28(水) | モジュールシステム(2) |
12/3 | (休講) | |
9 | 12/10 | 多相性 |
10 | 12/11(補講) | 高階関数 |
11 | 12/17 | 多相的な2分探索木 |
12 | 1/7 | C言語の概要 |
13 | 1/8(補講) | 2分探索木 in C |
1/15, 1/21 | (休講) | |
14 | 1/28 | プログラミング言語の仕様を読む,試験について |
2/4 | 試験 |
回数 | 日付 | 内容 |
---|---|---|
1 | 10/2 | 講義概要・Javaと2分探索木の復習 |
2 | 10/16 | 2分探索木 in Java (1) |
3 | 10/23 | OCaml の概要 |
4 | 10/30 | 2分探索木 in OCaml (1), 2分探索木 in Java (2) |
5 | 11/6 | 2分探索木 in Java (3), 再帰と繰り返し |
6 | 11/13 | 続・再帰と繰り返し |
7 | 11/20 | 短命な2分探索木 in Java and OCaml |
8 | 12/4 | モジュールシステム |
9 | 12/11 | モジュールシステム, 多相性(1) |
10 | 12/18 | 高階関数と多相性 |
11 | 12/25 | 多相的な2分探索木 |
12 | 1/15 | C言語の概要 |
13 | 1/16(火) | 2分探索木 in C, Lisp(Scheme)の概要 |
14 | 1/22 | 続Lisp, 2分探索木 in Scheme |
15 | 1/29 | プログラミング言語の仕様を読む,試験について |
2/5 | 試験 |
Copyright 五十嵐 淳 ([email protected]), 2016, 2017, 2018, 2019