型システム【type system】
型システムとは?
次

プログラム上では、数値と文字列を足し合わせるといった、本来成立しないはずの誤った操作が記述されることがある。型システムはプログラム内に登場する値や変数、定数などの種類と仕様、可能な操作を規定し、こうした矛盾を検出してエラーや警告として伝える。変数などに型を与えることを「型付け」(typing)という。
型システムにより、実際に動作させてから不具合に気づくのではなく、開発の早い段階でミスを発見できるため、品質の安定につながる。また、関数やメソッドがどのような値を受け取り、何を返すかが型によって示されるため、他者のコードを読む際の手がかりにもなる。現代の開発支援ツールは型情報を活用して入力補完や誤り検出を行っており、記述ミスの抑制にも一役買っている。
データ型の種類
データ型の種類としては、言語仕様によってあらかじめ用意されている「プリミティブ型」と、複数の型を組み合わせてプログラマが定義する「複合データ型」がある。プリミティブ型の種類や仕様は言語ごとに異なっているが、多くの言語では整数型や浮動小数点数型、文字列型、ブーリアン型(論理型)などが用意されている。
同じ数値を表す型でも、整数のみを格納できるものと任意の実数を格納できるもの、正負の符号が存在するものと正数のみを表すもの、格納するデータのサイズが32ビットのものと64ビットのものなど、複数の種類の型が用意されることが多い。同じ種類のデータでも言語によって型や表現方法が異なる場合もあり、例えばJavaなどには任意の長さの文字データを格納する「文字列型」(String型)が存在するが、C言語などでは文字は一文字分の文字コードを格納する「文字型」(char型) の配列として実装される。
静的型付けと動的型付け
プログラミング言語の仕様は、データ型の検査をいつ行うかによって「静的型付け」と「動的型付け」に大別される。静的型付けでは、実行前のコンパイル時に型の整合性を確認する。矛盾があればその時点でエラーとなり、実行を許可しない。C言語やJava、C#などがこの方式を採用する。
動的型付けは実行時にデータの種類を判断する方式で、コード記述時に変数などのデータ型を細かく指定しなくてよいため、短い記述で柔軟にコードを書き進めることができる。PythonやRuby、JavaScriptなどがこれに相当する。近年では、動的型付け言語においても型の注釈(アノテーション)を追加し、ツールが静的に検査できるようにする手法が普及している。