制御構造に関する議論
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/15 06:14 UTC 版)
「Planner」の記事における「制御構造に関する議論」の解説
ヒューイット[2006]にもあるように、Planner 開発当時のコンピュータメモリは高価であり容量が小さかった。そこでメモリの使用を節約するため、制御構造として当時一般的だったバックトラッキングを採用した。この手法では、コンピュータはいくつもの可能性のうちひとつだけをメモリに保持しておけばよかったのである。 この実装上の決断により、Micro-Planner は不運な結果を招くこととなった。LISPでは NIL を空のリストを表すと同時に false(メモリ番地 0)を表すようにしている。というのも 0 かどうかのチェックが高速に行えるからである。このため、LISPプログラムでは NILかどうかのチェックは非常に頻繁に行われる。Micro-Planner はこれを拡張して NIL をバックトラッキング開始のシグナルとしても扱った。Micro-Planner では、リストの各要素に何らかの処理をループで行うのが一般的だが、このとき先頭の要素をリストから除去した残りのリストを持ってループの先頭に分岐し、リストが空かどうかをチェックする。リストが空だった場合、プログラムは次の別の処理に分岐する。このようなプログラムで最後の要素が処理され、それをリストから取り除いた残りのリストが NIL になったとき、それをチェックする部分にはプログラムは到達しない。というのも、Micro-Planner は NIL に到達したときにそれをバックトラッキングのシグナルとして扱い、それまでリストの各要素に対して行った処理を取り消してしまうのである。このことに人々は驚かされた。 このことはバックトラッキングの扱いにくさを証明し、制御構造に関する議論が活性化されることとなった。ヒューイットは他の可能な実装方法を調査した。
※この「制御構造に関する議論」の解説は、「Planner」の解説の一部です。
「制御構造に関する議論」を含む「Planner」の記事については、「Planner」の概要を参照ください。
- 制御構造に関する議論のページへのリンク