next up previous contents
Next: 1.3.2 アトミックなデータ Up: 1.3.1 論理変数 Previous: 変数はメモリ番地ではない

変数に型はない

KL1 では変数についてどんな型のデータが入るかは宣言しない. ソース・プ ログラム中の同じ節の同じ変数が, ある呼ばれ方をしたときはひとつの型のデー タ, 別のときには別の型のデータを値とすることがある. このあたりは Prolog や Lisp と同様である.

このことには利点も欠点もある. プログラム中の変数にはどんな種類の値が 入るかが, 原則としては入力データを与えるまでわからないので, 処理系が最 適化しにくいことは欠点のひとつである.gif また, 人間がプ ログラムを読むときにも, 変数の型という理解の助けになる情報が欠けている 分だけ, 強い型付けをする言語に比べると不便だろう.

一方利点としては, C の union のような特別の記法を用いなくてもさまざま な型のデータを混在させることができること, Ada の generic package のよ うな面倒な宣言をしなくても, いろいろな型のデータに対して共用できるプロ グラム・モジュールを簡単に作れることなどがある.

全体として, 変数に型がないことは, プログラムを読むのにはちょっと不便だ が, 書くのには便利である. このことは, 実験的なプログラムを何度も書き 直しながら, アルゴリズムを開発していくような場合には有利になる. これは AI 研究に変数に型をつけなくて良い Lisp が広く使われてきた理由のひとつ であろう. 一方, 既に確立されたアルゴリズムに基づいたプログラムを組み, それを長年に渡って保守していくような場合には不利もある.



next up previous contents
Next: 1.3.2 アトミックなデータ Up: 1.3.1 論理変数 Previous: 変数はメモリ番地ではない



KLIC