データ型

データ型（データがた、）とは、コンピュータプログラミングや計算機科学において、属性を持つデータを分類し、その扱われ方をコンパイラやインタープリタに知らせるプログラム。単に型（かた、Type）とも言われる。
多くのプログラミング言語は、整数型・浮動小数点型・ブール型・文字型といった基本データ型を備えている。計算対象にされるデータは、しばしば値（value）と言われる。データ型は式内の値を制約して、関数への適用可能性や変数への代入可能性を定義する。データ型は、値の集合の概念と近似している。
コンセプト.
データ型は、型システムで扱われる。型システムは、データの定義と解釈と用法を定義する形式体系である。プログラム内の多種多様なデータ間の計算の整合性を保ち、不適切な計算がなされないようにするのが型システムの目的である。これは型安全性と言われて、安全なデータ計算を保証する概念である。
計算機科学者デビッド・パーナスは、データ型の五つのタイプを定義している：
データ型の種類.
データ型のバリエーションは個々の型システムによって定義される。例えば数値を示す型として、C言語の型システムはcodice_1およびcodice_2を持ち、JavaScriptの型システムはcodice_3のみを持つ。それぞれの型システム（言語）が規定する型の分類が存在し、また慣例的にプログラミング言語問わずおこなわれる分類も存在する。複数の観点から型を分類することができる。
また処理系の実装の側からの観点が強い分類だが、レジスタなどのワードに値が直接収まる型と、ワードにはポインタが入り、ポインタの先に実際の値がある型、といったような分類もある。言語処理系実装の論文などで、前者についてimmediate（即値）という表現が見られるかもしれない。ポインタ自身に型などといったような情報を含ませることもある（）。
なおJavaでは、Javaにおけるクラスのインスタンスである（あらゆる）オブジェクトについて、その型は「参照型」であり、intなどそれ以外の限られた全ての型は「プリミティブ型」である。ユーザが定義できるのは、型を定義できるというよりも、クラスを定義できると表現するのが正確ではないかと思われる。
以下に代表的なデータ型を列挙する。
配列型、関数型、ポインタ型は、たいていの場合、それぞれ「～型の配列」、「…型を引数に取り～型を返す関数」、「～型へのポインタ」といったような型である。いくつかの良く出来ている言語には、総称型など、そういった型を一般的に扱う仕組みがある。いくつかのそうでない言語では、アドホックにそういった派生型を作ることができるものがある。