プログラム理解に関する基礎的研究として以下の2点を中心に実施した。 1.プランを用いた学習者と教師のプログラムの比較 学習者の作成したプログラムに含まれる意味的エラーを発見するためには、「正しいプログラム」に関する知識を必要とする。エラーを発見する戦略やその結果はこの知識をどのように与えるかに大きく依存している。本研究では、教材作成者に負担をかけずにできるだけ多くの問題に対して診断ができるように、問題に依存するプログラム知識として、教師の書いた模範プログラムを用いた。また、多くの教材プログラムを通して学習者に教えようとする普遍的なプログラミング技法に関する知識をプランとして持つ。これらの知識を用いて学習者の作成したエラーを含んだプログラムを診断するのに必要な情報を引き出した。 2.プログラム理解のための概念情報の表現法と抽出法 プログラムは構文的には文字列であるが意味的には抽象的な概念を含んでいる。これらの概念を自動的に認識するために、プログラム理解機構を推論機構としてとらえる方法を採用した。この方法はプログラムの各命令を「事実」と考え、それらを組み合わせて高いレベルの概念を理解するための知識を推論規則として与える。本研究では命令を単位とした知識と共に、制御フローとデータフローに関する知識を採用して、正確で、柔軟性のある認識ルールの記述を可能にした。また、各命令や制御フロー、データフローの含まれる概念情報の表現法と、それらを用いて高いレベルの概念を抽出するためのルールの記述法を提案した。 以上の研究成果は学習者や教師の書いたプログラムを理解する基本的な枠組みを提供するものである。しかしながら、誤りを含んだプログラムの適切な理解、そこから診断に必要な助言の生成、より対象領域に依存したプログラム理解などは今後の課題である。
|