「スカラー」と「プリミティブ」について


**「スカラー」と「プリミティブ」**  
・言語によって多少異なるとしても、基本的には何れのプログラミング言語にも存在しているのでしょうか？

**公式サイトにこの言葉が記述されていない場合**  
・その言語には存在しない？  
・あるいは単に、その言語ではそう呼ばないだけ？

**スカラー**  
・複合ではない値  
・データ型にはならない？  
・プリミティブよりマイナー？ 意味が通じないことはある？？

**プリミティブ**  
・「値」としても「データ型」としても用いる？  
・参照が絡むかどうかは、「言語」もしくは「文脈」あるいは「人」によって異なる？




一般的英単語の解釈というか翻訳と言うか、と、特定のプログラミング言語の仕様書において定義された専門用語は違うものです。なので「特定言語」における専門用語は当該言語の仕様書を見なければどうこう言えないです。

* * *

  * 一般的英語としての `scalar`

（特に数学用語として）単一値、１次元の量  
対義語は `vector` など（大きさと向きなど複数の値、複数次元の量）

  * 一般的英語としての `primitive`

原始的、根源的、基本的

> 基本的には何れのプログラミング言語にも存在しているのでしょうか？

一般的概念は上記のとおりでしょう。言語によって詳細は異なるかもしれません。

オイラ個人の意見を言わせてもらうと  
\- よりソフト寄りなのが `scalar` (１つの値だがレジスタ複数個を使う可能性がある）  
\- よりハード寄りなのが `primitive` (レジスタ１つに格納される値)

* * *

特定言語の例  
[c++](/questions/tagged/c%2b%2b "'c++' のタグが付いた質問を表示") ISO/IEC 14882:1998  
3.9 型 の 10 項にて [スカラ型] なる用語が定義されています。

> 算術型、列挙型、ポインタ型、メンバへのポインタ型、並びにそれらの `cv` 修飾付きのものをスカラ型と呼ぶ。

一方で `primitive` なる単語は特に定義されていません。出てくる文脈は例えば

20.1.5 割付け子に対する要件

> as well as the memory allocation and deallocation primitives for it.  
>  メモリの割付け及び解放の基本処理 (primitive) など

24 反復子

> 24.3 Iterator primitives  
>  24.3 反復子の基本的要素

[c99](/questions/tagged/c99 "'c99' のタグが付いた質問を表示") JIS X 3010:2003 (ISO/IEC
9899:1999)  
6.2.5 にて [スカラ型] なる用語が定義されています。

> 算術型及びポインタ型を総称して、スカラ型と呼ぶ。

一方で `primitive` なる単語は特に定義されていません。

> その言語ではそう呼ばないだけ

その言語の仕様としての「専門用語」として定義してない＝呼ばない、ということでしょう。  
ですがこれは、「規格マニアが規格の厳密な話をする」のでない文脈で、一般プログラマが一般的用語を使うことを妨げるものではありません。話者同士で誤解が無ければ問題ないでしょう。




一般的英単語の解釈というか翻訳と言うか、と、特定のプログラミング言語の仕様書において定義された専門用語は違うものです。なので「特定言語」における専門用語は当該言語の仕様書を見なければどうこう言えないです。

* * *

  * 一般的英語としての `scalar`

（特に数学用語として）単一値、１次元の量  
対義語は `vector` など（大きさと向きなど複数の値、複数次元の量）

  * 一般的英語としての `primitive`

原始的、根源的、基本的

> 基本的には何れのプログラミング言語にも存在しているのでしょうか？

一般的概念は上記のとおりでしょう。言語によって詳細は異なるかもしれません。

オイラ個人の意見を言わせてもらうと  
\- よりソフト寄りなのが `scalar` (１つの値だがレジスタ複数個を使う可能性がある）  
\- よりハード寄りなのが `primitive` (レジスタ１つに格納される値)

* * *

特定言語の例  
[c++](/questions/tagged/c%2b%2b "'c++' のタグが付いた質問を表示") ISO/IEC 14882:1998  
3.9 型 の 10 項にて [スカラ型] なる用語が定義されています。

> 算術型、列挙型、ポインタ型、メンバへのポインタ型、並びにそれらの `cv` 修飾付きのものをスカラ型と呼ぶ。

一方で `primitive` なる単語は特に定義されていません。出てくる文脈は例えば

20.1.5 割付け子に対する要件

> as well as the memory allocation and deallocation primitives for it.  
>  メモリの割付け及び解放の基本処理 (primitive) など

24 反復子

> 24.3 Iterator primitives  
>  24.3 反復子の基本的要素

[c99](/questions/tagged/c99 "'c99' のタグが付いた質問を表示") JIS X 3010:2003 (ISO/IEC
9899:1999)  
6.2.5 にて [スカラ型] なる用語が定義されています。

> 算術型及びポインタ型を総称して、スカラ型と呼ぶ。

一方で `primitive` なる単語は特に定義されていません。

> その言語ではそう呼ばないだけ

その言語の仕様としての「専門用語」として定義してない＝呼ばない、ということでしょう。  
ですがこれは、「規格マニアが規格の厳密な話をする」のでない文脈で、一般プログラマが一般的用語を使うことを妨げるものではありません。話者同士で誤解が無ければ問題ないでしょう。

