データ型
出典: フリー百科事典『ウィキペディア(Wikipedia)』
データ型(でーたがた)とは、コンピュータにおけるデータの扱いに関する形式のことである。データタイプとも。
データ型は、プログラミングなどにおいて変数やオブジェクトそのものや、その中に代入される値が対象となる。
目次 |
[編集] 型の役割
各変数のもつ型に応じて、それに適用される命令がコンパイルされていくという基本的な役割のほか、型に応じてコンピュータで扱いやすいバイナリで記憶したり(静的型付けのみ)、関数、式が持つ型同士の整合性を検査することによって、プログラムが正しく記述されていることや、安全に動作することの検証も可能であり、現在、様々な型の応用が研究されている(型理論)。
[編集] 型の実装
C言語等では変数宣言の際に明示的に型を宣言してプログラミングを行い、型の整合性がとれていないプログラムはエラーとなってコンパイルできない。一方、OCaml等の型推論をもった言語では明示的な型指定を変数宣言で行う必要が無く、コンパイラが自動的に各変数の型を計算した上で、型の検査を行ってくれる。たとえば a = 1 + 2 という代入文があれば整数同士の加算結果だからaは整数といった具合にあらゆる変数の型を決定していくわけである。
Perl等の言語ではプログラマは型を指定せず、1つのプログラム内で適用される演算によって文字列型変数として振る舞ったり、整数型変数として振る舞ったりする。このような変数ではなくデータの方に型をもつ言語を動的型付けの言語という。
一般に動的な型付けを持つ言語では型の特性に合わせた最適化(例えば常に浮動小数点レジスタを用いるなど)ができないので、実行速度という面では静的型に劣ると考えられている。反面多態性や記述の容易さで動的型は融通が利き、Smalltalkなどのオブジェクト指向言語、スクリプト言語は動的型を採用するケースが多い。
動的型と静的型のどちらが安全なプログラムを記述できるのかは長年論争の的であるが、双方とも適した問題領域、適した開発スタイルが存在し、異なった安全観念を持つ点を理解しなければならない。
[編集] データ型の種類
なお、これは主な例である。このほかにもさまざまなデータ型が存在するし、プログラマ自身が新たな型を作る機能を有するプログラミング言語も多い。
[編集] 単純型
単純型とはプログラミング言語に元から存在する型である。組み込み型、原始型、プリミティブ型、基本型などと呼ばれることもある。全てのプログラミング言語がこれら全てを有するわけではない。プログラミング言語によってはライブラリが複合型として実現している型もある。
- 文字型/文字列型
- 数値型
- 日付時刻型
- 日付型
- 時刻型
- 時間型
- バイナリ型
- 論理型 - ブーリアン型、ブール型、ビット型などとも。
- オブジェクト型
- 配列型
- 関数型 - プログラミング言語が関数の概念を有していたとしても、関数型が存在するとは限らない。
- ポインタ型 - 参照型、ハンドル型などとも。ポインタ型と呼ぶ場合はポインタ演算の存在を期待されていることが多い。
配列型、関数型、ポインタ型はそれぞれ「~型の配列」、「…型を引数に取り~型を返す関数」、「~型へのポインタ」などと表現し、基にする型がしばしば存在する。そのためCとC++ではこれらを一括りにして「~型の派生型」と分類している。
[編集] 複合型
複合型とはプログラマがソースコードの記述などにより新たに作る型のことである。複合データ型、ユーザー定義型、参照型、リファレンス型などと呼ばれることもある。全てのプログラミング言語が複合型を作る機能を有するわけではない。
[編集] 関連項目
カテゴリ: データ型 | プログラミング | データベース | メタデータ | コンピュータのデータ | コンピュータ関連のスタブ項目