型なし
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/30 09:44 UTC 版)
型付けを更に厳密に定義した区分として型なし(英: untyped)という区分が存在する。代表的な言語としてはSmalltalk、BCPL、B言語、アセンブリ言語などがある。Smalltalkでは高速化のため処理系依存で実行時に型検査することがあるものの言語的には型検査がなく、動的型付け言語のように文字列に割り算をするといった不正な操作をしても処理系が型検査して停止する事は無い。 BCPL、B言語、アセンブリ言語などオブジェクト指向とは関係なく型を持たない言語では、ハードウェアのワード長に依存した1種類の型のみを持つか、言語を使う側でデータを参照するときにデータ幅や種類の解釈を決定することとなる。 オブジェクト指向型の型なしの言語では処理系が型検査をしない代わり、ライブラリで例外を投げて停止する。例えばSmalltalkではオブジェクトに対し対応するメソッドが存在しないメッセージを投げると、最終的にクラスごとに定義した#doesNotUnderstand:メソッドに至る。このメソッドが例外を投げるようになっていれば停止するが、そうでなければ停止することなく走り続ける。対照的に動的型付け言語では、演算子のような一部の操作について値の型に応じた型検査を処理系が行いエラーとしてしまう。エラー発生時の挙動については言語によって異なり、例えば数値を文字列値で割るという2 / 'A'のような無意味な演算に対して、PythonはTypeError例外をスローし、JavaScriptはNaNを返す。型なしのオブジェクト指向言語は最適化がしづらい反面、オブジェクトの操作を処理系に制限されないため使用者が後から自由にオブジェクトの操作を追加できる利点がある。
※この「型なし」の解説は、「型システム」の解説の一部です。
「型なし」を含む「型システム」の記事については、「型システム」の概要を参照ください。
- 型なしのページへのリンク