|
> 何と説明したらよいのかわかりませんが、例えばrubyなどはデータ型を宣言しなくても > よいですよね。これらの言語はどのようにデータ型を判別するようにできているのでしょうか?
適当な仮想言語で考えてみましょう。
i = 1; f = 6.5; s = "あいう"; o = new Animal();
のような文法で記述できるとしましょうか。 ここで登場する左辺は変数です。 この仮想言語では数値であり小数でなければ整数、それ以外の数値なら小数、 ""で括られていれば文字列、new 〜の場合は〜のオブジェクトと決めてあるとします。 iは整数型、sは文字列型、oはAnimal型と判断できます。 つまり、値を区別できるように言語を構成する要素を設計してあるからです。
ただ、この場合、変数iは4バイトの整数型なのか8バイトの整数型なのか?といった区別ができませんので、 そうすると整数型は「4バイト固定」であるとか「数値の大小により割り当てるバイト数を決定する」とか 判定のルールが必要になりますね。言語仕様により動的に型を決定するルールを用意するのか、 はたまた、プログラマ自身に宣言させることで静的に決まるようにするのか、 それは言語次第というわけです。
|