Up Next
1 実験概要

1.1 実験の目的と内容

本実験及演習の目的は,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週〜 インタプリタ作成実験

1.2 成績評価

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

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

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

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

授業の web ページの URL は http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/ である. ここで本稿の完全版や「Objective Caml入門」のテキストが利用可能になる. また,Objective Caml のマニュアル [4] (英語)も http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/ocamlman/ よりオンライン利用が可能なようにしてある. その他,http://caml.inria.fr/ から,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