工学部専門科目「プログラミング言語」講義資料(2019年度)

このページの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)
      • その他の時間は要アポイントメント
  • 担当TA: 矢杉和義 (通信情報システム専攻D2)

お知らせ

授業の概要・目的(シラバスより)

プログラミング言語が提供する様々な抽象化機構や実行時システムについて,種々のプログラミング言語を比較しながらコンピュータサイエンスの立場から論じる.

目的達成のための方針

(おそらく前半くらいは)以下の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/ 以下で公開するので適宜ダウンロードしてもらいたい.

参考書・参考資料

言語仕様(っぽいもの)

OCaml 情報

  • 五十嵐淳. OCaml 入門 (次の本の元になった計算機科学実験及演習の資料.この講義の範囲ならこれで十分)
  • 五十嵐淳.プログラミング in OCaml.技術評論社.(でもこれも買ってくれるとうれしい!)

環境設定

2018年度の進行(参考)

回数 日付 内容
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 試験

2017年度の進行(参考)

回数 日付 内容
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 五十嵐 淳 (pl19@fos.kuis.kyoto-u.ac.jp), 2016, 2017, 2018, 2019