本年度は (1) 静的な意味論に基づくプログラミング環境として、型主導でプログラムを構築する手段としてブロックを使ったインタフェースを用いたシステムの構築を行なった。また (2) 動的な意味論に基づくプログラミング環境として、インクリメンタルにステップ実行する機能を実装した。それぞれ、詳しく述べる。 (1) 静的な意味論に基づくプログラミング環境については、ブロックを使ったインタフェースを実装した。これは Google の提供する Blockly を関数型言語 OCaml 用に改変したものである。ブロックのコネクタに型情報が表現されているため、型の合わないブロックは接続できないようになっている。これにより、プログラム作成中に型エラーが起こることがなくなったばかりでなく、構文エラーを起こすこともなくなった。このシステムは初心者がプログラミングを行う際に、型エラー、構文エラーに悩まされることなくプログラムを構築できると予想され、次年度の授業で使用しその効果をはかる予定である。 (2) 動的な意味論に基づくプログラミング環境については、昨年度まで作成してきたステッパでほぼ当初の目的は果たしたと考えられるが、実際に授業で使用した際、実行時間がとても長いプログラムのステップ実行をしようとすると、ステップを見られるようになるまで長時間、待たされるという問題が見つかった。これは、実装したステッパが、あらかじめ全ステップを作成してから表示していたためである。(これは、無限ループするプログラムのステップ実行はできないことも意味している。)そこで、ステッパの実装を変更し、必要なステップをユーザに求められるたびにインクリメンタルに計算して表示するようにした。これで、プログラムの実行時間に関わらず即座にステップが表示されるようになるとともに、無限ループするプログラムのステップ実行も可能となった。
|