プリミティブ型

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

プリミティブ型(プリミティブがた 英語: primitive data type、プリミティブデータ型)は、データ型の1分類である。理論計算機科学的に代数的データ型によって考えれば「そのデータ型の定義の中に部分として他の[1]型を含まないような型」がプリミティブ型であるが、Javaにおいて型が「primitive types(プリミティブ型)とreference type(参照型)」に二分されることにひきずられたと思われる2分法などが信じられていることも多い[要出典]

この記事におけるここから先の説明は、最初に説明した理論的な分類に従ったものではなく、よく信じられているらしい「プログラミング言語によって提供されるデータ型であり基本的な要素である。対する語は複合型という。言語やその実装に依存して、プリミティブ型がコンピュータメモリ上のオブジェクトと一対一対応のときもあれば、そうでないときもある。組み込み型もしくは基本型とも呼ぶ。」という解釈に従ったものである。

代表的なプリミティブ型を一部列挙:

プリミティブ型にもなりうる、より高度な型を一部列挙:

プリミティブ型が最も高速な演算を行える言語構成要素である場合が多い。例として整数の加算は、単一マシン命令として演算され、プロセッサによっては単一マシン命令で文字列を処理する具体的な命令を提供している。特に、C言語標準では「plainなint型オブジェクトのサイズは実行環境のアーキテクチャに依存する」とされている。これは、32ビットアーキテクチャではint型が32ビットになってしまうことを意味する(ここで、「なってしまう」というのは16ビット脳による主観であり、VAX脳(vaxocentrism[2])では32ビット以外はありえない。64ビットになってしまうCray脳もある(CrayのスーパコンピュータはILP64である))。

Smalltalkではプログラムによって拡張されたプリミティブデータ型を許可しており、それらの型の演算命令を追加することもでき、場合によっては言語固有の演算命令を再定義することもできる。

[編集]

C#[編集]

C#においては、Type.IsPrimitiveプロパティを参照することで、プリミティブ型を明確に判別することができる。

  Console.WriteLine(typeof(int).IsPrimitive); // ⇒ True
  Console.WriteLine(typeof(char).IsPrimitive); // ⇒ True
  Console.WriteLine(typeof(double).IsPrimitive); // ⇒ True
  Console.WriteLine(typeof(decimal).IsPrimitive); // ⇒ False
  Console.WriteLine(typeof(DateTime).IsPrimitive); // ⇒ False
  Console.WriteLine(typeof(string).IsPrimitive); // ⇒ False

例えば、組み込みの十進浮動小数点数であるdecimalはプリミティブではない。 decimal共通中間言語上、通常の構造体(例えばSystem.DateTimeなど)と同様に扱われると考えられる。

[編集]

  1. ^ 正確には「他の型(自身を含む)を含まない」である(再帰データ型の考慮)。
  2. ^ http://catb.org/jargon/html/V/vaxocentrism.html