現在のプログラム言語の整数は、固定長整数と多倍長整数に分けられる。
整数の表現範囲が決っている整数 8bit, 16bit, 32bit, 64bit などの範囲で表現できる範囲とすることが多い
桁がふえる毎に必要な領域を拡大する形で表現する整数、論理的にはメモリが ゆるすかぎり、大きな範囲の値が扱える。
一般的なプログラム言語では、固定長整数と多倍長整数を別の型表現で 実装しているが 、Ruby (2.4以降), Python (3.0以降), Haskel, CommonLisp などでは、基本的には、整数は、多倍長整数となり、あるサイズ(64bitが一般的) までは、固定長整数と同様に扱われる。
プログラム言語の実数表現は一般的には浮動小数点で表現される。 しかし、浮動小数点表現では値落ちが発生するため、それを許容出きないような場合は 固定小数点表現をつかう。 また、数学関連の処理などにおいては、より厳密に実数を 表現するために、有理数を分数で表現する型なども存在する。 (この場合、無理数については記号で表わすことになる。)
たとえば、上位 M 桁は整数部、 下位 N 桁は小数部といった形で整数の桁と 小数の桁で領域を分けることで表現をおこなう。 現在のプログラム言語では、固定小数点表現を実装しているものはほぼない。
これは、固定長整数で算出し、表示時に小数に表現することで対応が可能となるから である。
浮動小数点は、実数を仮数部と指数部に分けることで、大きな範囲の数を扱えるように した実数表現である。 仮数部 N、 指数部 e の数は N*2e となる。
浮動小数点表現には、その制度によって 単精度浮動小数 (32bit)と、 倍精度浮動小数(64bit)がある。
最近のプログラム言語では、倍精度浮動小数のみを実装している例がある。
有理数表現は、実数の中でも、有理数に特化した表現であり、N/M (N,Mともに整数) で有理数を表現する型である。これは、数学的に実数を正しく扱うことを目的としている。
CommonLisp、 Haskel、 Ruby, Pythonなどが有理数表現をもつ。
文字型は一文字を表わす型になる。 古くは1byteのデータ型を差していたが、 最近の言語では、1文字 (UTF-8 だと 1〜6byte) を示すものとなっている。 (Python,Ruby など、文字型という概念をもたず、1文字の文字列という考えで 実装しされている言語もある。)
文字列型は、文字列を表わす型である。最近の文字列型はその文字列を表現している encode (UTF-8や、shiftJISなど)を型の情報としてもつものも多いですが、 Rust(UTF-8)のように基本的に扱える encodeを決めてしまっているものも多い 特に近年はUnicodeが一般的になってきたため、UTF-8 だけを扱う言語が増えている ようにみえる。
コレクションは、データの集合を管理するための型を示す。
配列型は、データを複数格納できる型として定義される。 配列型の特徴として格納されているデータに順序がある。 このため、データにアクセスする時にその順序を指定することによって行う 例: a=[1, 6, 4] といった配列から 6 を取り出すのに、a[1] といったように 格納位置を指定して取り出す。
C言語などの配列では、その要素数は固定となるが、インタプリタや、 オブジェクト指向に対応した言語では、可変長の配列として扱えるのが 一般的である。 (Pythonでは、Numpyというライブラリで固定長の配列 が扱えたりする)
最近のプログラム言語では云わゆる配列の構造に複数の型を定義している場合が ある。
Pythonでは list, tuple といった型が配列の型として定義されている list は、要素の内容を更新できる、tuple は、要素の内容が更新できない といった違いがある。
Rustでは、固定長の配列型と、Vecという可変長の配列型がある。
集合型も、データを複数格納する型ではあるが、配列とは違い 格納データの順序性を保持しない。また、同じ集合の中に同じ値が入らないのが 一般的である。 Java などでは、MultiSet といった重複した値を許す集合型もある
集合型は、データの定義順序を保持しないため、探索が速くなる格納方法で格納されている このため、探索することが多いデータセットなどは集合型で宣言するとよい
連想配列型は、辞書型、ハッシュ型、マップ型ともよばれ、値と対になるキーを持たせて、 そのキーを元にデータにアクセスする型として定義される。
似たような方に構造体型(Struct)があるが、違いは構造体型はキーが固定になるが、 連想配列は、キーが可変になる。
連想配列もアクセスはキーをつかっておこなうため、キーの探索が速くなるように 格納している。