2015 Fiscal Year Research-status Report
プログラム意味論に基づく先進的なプログラミング環境の構築
Project/Area Number |
15K00090
|
Research Institution | Ochanomizu University |
Principal Investigator |
浅井 健一 お茶の水女子大学, 基幹研究院, 准教授 (10262156)
|
Project Period (FY) |
2015-04-01 – 2018-03-31
|
Keywords | 開発環境 / 関数型言語 / 型システム / 型デバッガ / ステッパ |
Outline of Annual Research Achievements |
本年度は (1) 静的な意味論に基づくプログラミング環境として、構文木を歩き回る機能、未完成部分を展開する機能、型主導で展開する機能の実装を行った。また (2) 動的な意味論に基づくプログラミング環境として、OCaml の基本的な構文に対するステッパを2通りの方法で実装した。それぞれ、詳しく述べる。 (1) については、まずプログラムが未完成であることを示す構文として、任意の型を持ちうる式を使用することで対応可能であることがわかったため、それを使って OCaml コンパイラの内部表現である型付き構文木を移動し、未完成部分に関する情報を得られるようにした。特に、未完成部分の型とそこで使える変数の型を表示できるようにした。これができると、未完成部分に新たな構文を挿入するのは直接、簡単に実装できる。さらに、未完成部分で使える変数について、場合分け構文を挿入する機能を実現した。これにより、型から定まるテンプレート(プログラムの決まった形)を機械的に挿入することができるようになる。これらの機能を OCaml のプログラムと emacs lisp によるユーザインタフェースにより実現した。(この内容については、国内のワークショップにてポスター発表を行った。) (2) については、通常のインタプリタに近い形のステッパとして、限定継続命令を使用したものと動的束縛を行う動的変数を使用したもののふたつを実装した。前者は、限定継続命令を使って簡潔に表現できるメリットがあるが、限定継続命令をサポートした処理系でしか実行できない。一方、後者は普通の OCaml 上で実行可能である。(この内容については、国際会議にて発表した。)
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
(1), (2) ともに、ほぼ計画していたものを実装できているため、研究はおおむね順調に進展していると考えられる。以下、詳しく述べる。 (1) については、ほぼ予定した通りの機能を持つものを実装することができた。しかし、まだ授業で使えるほど完成度は上がっていない状態である。現在、問題となっているのは、以下の3点である。まず、サポートしている構文の数が少ない。授業で使えるようにするためには基本的な構文を網羅している必要がある。これは単純にひとつひとつサポートしていけば可能と考えているが手間のかかる作業である。次に、ユーザインタフェース部分の安定度が低い。初心者向けの授業で使用するためには、ユーザが無茶な使い方をしてもある程度、対応できる必要があるが、今のところそれは達成できていない。これを達成するためには本研究の本題とは離れた作業が必要であり悩ましいところだが、時間を取られ過ぎない形で必要最低限のものを実現したいと考えている。最後に、このプログラムを使うためには、入力中のプログラムの型を注釈等の形で取り込む必要があるが、その点の考慮はまだできていない。次年度以降の課題である。 一方 (2) については、基本的な構文について、それなりの完成度のステッパを実装することができ、すでに授業で使用を開始している状態である。一方、例外処理やモジュールなど進んだ構文については、まだサポートできておらず、次年度以降の課題である。
|
Strategy for Future Research Activity |
基本的に、当初の計画通りに研究を推進する。(1) については、まず「現在までの進捗状況」で述べた問題点について、ひとつひとつ対応する。さらに、ユーザインタフェースの改良の一環として、ユーザへの型の提示方法についても検討する。また、型デバッガとの親和性についても検討する。 (2) については、ステッパを授業で使用し、そこでのフィードバックから実装の完成度を上げるとともに、より進んだ構文のステッパについての検討・実装を行う。さらに、より進んだステッパの使い方として、自明なステップを飛ばす機能や、特定の条件を満たすステップまで進む機能など、初心者だけでなく上級者の使用を考慮したステッパについても検討・実装する。
|
Research Products
(4 results)