(プログラミング言語にだけ存在する概念というわけではありませんが、ここでは、プログラミングに焦点をあてて説明します)。
具体的にどのような型が存在するかは、プログラミング言語の種類によって異なりますが、たとえば、整数のデータには整数型、文字には文字型、ブール値には論理型(ブール型)といったものがあります。
型を、ソースコード上に明確に記述するプログラミング言語がある一方、型の判断をコンパイラがおこなう、型推論という機能を備えた言語や、実行時に型を決定する言語もあります。最初の2つのように、実行を開始する前に型が決定されることを静的型付け、最後の1つのように、実行を開始してから型が決定されることを動的型付けと呼びます。
型を明確に記述する言語では、変数や、関数の引数、戻り値といった箇所に型を記述します。
型があることによって、変数へ代入する値が適切か、演算子の適用対象(オペランド)の型が適切かどうかといったチェックを行うことができ、プログラムの安全性が高まります。
たとえば、整数型として宣言された変数に、文字列型の値を格納しようとする間違いは、型のチェックによって検知できます。
また、演算子の適用対象の型が適正かどうかも検出できます。たとえば、3 - "xyz"
のように、正しいと思われる意味を見いだせない演算をエラーとして扱うことができます。ただし、3 - 1.5
のような演算であれば 3.0 - 1.5
のことであろうと判断し、一時的に型変換(暗黙の型変換)してあつかう言語もあります。
コンパイルの過程をもつプログラミング言語では、型のチェックを実行前に行い、コンパイラからコンパイルエラーや警告のかたちで報告されます。そうでないプログラミング言語では、実行時に型のチェックが行われ、問題があれば実行時エラーになります(例外と呼ばれる機構が動作することがある)。
一般的に問題の発見は早いほうがいいので、その意味では、実行前に型がチェックされる言語のほうが良いとされることがあります。しかし、すべての値の型を明確にし、不整合なくソースコードを組み上げなければ、実行を行うことすらできませんし、同じ意味の処理でも、型ごとに記述しなければならないなど(C++ のテンプレートのような解決策はある)、柔軟性に欠けるという指摘もあります。
実行してから型のチェックを行う言語では、問題のある箇所が実際に実行されない限り、そこに潜む間違いが検出できないことになります。しかし、荒く仕上げたソースコードであっても、実行してできている部分だけを確認することができますし、型に応じて処理を分岐させるなど、柔軟なコードを記述できる利点もあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |