Up Next
1 実験概要

1.1 実験の目的と内容

実験及演習3(ソフトウェア)で,C 言語のサブセットである Tiny C のコンパ イラ作成を行ったが,コンパイラ・インタプリタなどのプログラミング言語処 理系は,プログラムという記号データを処理するプログラムである.本実験及 演習の目的は,Scheme (Lisp の方言)風関数型言語 mini Schemeのインタプリ タの作成・改造を通じて,プログラミング言語に見られる様々な機能とそのバ リエーションがどのように実現されているかの理解を深めることである.イン タプリタを対象とするのは,実現がコンパイラに比べ簡単で,新しい機能をテ ストするために適当であるためである.

また,二次的な目的としては,プログラムを対象とする議論における基本的な 用語を理解・習得することも挙げられる.

実験では,まず,前半(4週程度)で,インタプリタを実装するための言語とし て,関数型言語 Objective Caml の演習を,実験時に配布する Objective Caml 入門テキス トを使って行う.ここで Objective Caml の習得を通じ,関数型プログラミングに慣 れ親しむことによって,作成するインタプリタの対象言語(mini Scheme)の動作 に関する直感を得る.そののち,インタプリタの作成を行う.インタプリタの 作成は小さい言語から始め,徐々に大きい言語へ拡張してゆく.

実験スケジュールは以下を予定している.
第1週 Objective Camlテキスト第2・3章の解説・演習
第2週 同第4章の解説・演習
第3週 同第5章の解説・演習
第4週 同第6・7章(+α)の解説・演習
第5・6週 インタプリタ作成実験
というスケジュール(予定)で行う.解説は主に木曜日に行う予定である.

1.2 成績評価

前半の Objective Caml 演習(50点満点)はテキスト中の練習問題を解きレポートにす る.後半のインタプリタ作成実験(50点満点)も,本指導書の練習問題を解きレ ポートにする.

必修問題とマーク(または授業中にアナウンス)したものについては,レポート の提出がない場合,大幅に減点する.必修問題が満足な出来であれば,よい成 績が期待できる.その他の問題も加点の対象であるので,できるだけ解いてほ しい.

レポートは,プログラムを書く場合は,なぜそのようなプログラムに至ったか の説明を加えること.これがなければ,ほとんど評価されないので注意するこ と.(きれいな解答を思いつけばつくほど,短く,似たようなプログラムにな る傾向がある.) また,インタプリタ作成においては,ソースコードを与えた 上で,「インタプリタをテストせよ」という課題があるが,この場合,テスト に用いるプログラムも評価対象である.導入された機能をきちんとテストする にはどうすればいいかを考えること.

1.3 資料,参考書,マニュアル

授業の web ページの URL は http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/ である. Objective Caml のマニュアル [4] (英語)は http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/ocamlman/ よりオンライン利用が可能なようにしてある. またhttp://pauillac.inria.fr/caml/ から,FAQ などの文書, Objective Caml を使ったソフトウェアなどが利用できる.Objective Caml は,Caml とい う言語を拡張して,オブジェクト指向プログラミングの機能などを加えたもの であるが,本来の Caml の教科書として[1]が出版されている. また,フランス語の Objective Caml の本が O'Reilly から出版されているが,現在, 英訳プロジェクトが進行中で,オンラインで http://caml.inria.fr/oreilly-book/ より利用可能になっている.

後半のインタプリタ作成に関しては,[3, 第3章] を参考にしている. (この本では,Objective Caml ではなく Scheme 自身で Scheme インタプリタ を作成している.) Scheme 言語に関しては,特に学習する必要はないが, [6, 2] などが参考になる.




Up Next