回答:
互換性はないと思います。それらは頻繁に似ていますが、違いは確かに存在し、主にそれらが対照的であり、文脈に関連するものにあるようです。
スカラーは、典型的には、と対比されている化合物はそのようなアレイとして、マップ、セット、構造体などAスカラー「単一」の値である-化合物が複数のスカラー(そしておそらく参考にで構成されている間-整数、ブール、おそらくストリング他の化合物)。「スカラー」は、関連する区別が単一/単純/原子値と複合値の間のコンテキストで使用されます。
ただし、プリミティブ型は、たとえば参照型と対照的であり、Javaのプリミティブ型と参照のように、関連する区別が「これは直接値か、それとも実際の値を含む何かへの参照か」の場合に使用されます。 。私はこれをスカラー/複合よりもいくらか低いレベルの区別として見ていますが、完全ではありません。
それは実際にコンテキストに依存します(そして頻繁にどの言語ファミリが議論されているか)。病理学的な例として、文字列を取り上げます。Cでは、文字列は複合(文字の配列)ですが、Perlでは、文字列はスカラーです。Javaでは、文字列はオブジェクト(または参照型)です。Pythonでは、すべてが(概念的には)文字列(および数値)を含むオブジェクト/参照タイプです。
これらの用語には多くの混乱と誤用があります。多くの場合、1つは別の意味で使用されます。これらの用語の実際の意味は次のとおりです。
「ネイティブ」とは、実装方法に関係なく、ライブラリ(標準ライブラリでも)によって提供されるのではなく、言語に組み込まれている型を指します。Perl文字列はPerl言語の一部であるため、Perlにネイティブです。Cは、ライブラリを使用してcharsへのポインタに文字列セマンティクスを提供するため、charへのポインタはネイティブですが、文字列はネイティブではありません。
「アトミック」とは、もはや分解できないタイプを指します。「コンポジット」の逆です。コンポジットは、アトミック値または他のコンポジットの組み合わせに分解できます。ネイティブ整数と浮動小数点数はアトミックです。分数、複素数、コンテナ/コレクション、文字列は複合です。
「スカラー」 -これはほとんどの人を混乱させるものです-サイズ、ボリューム、カウントなど、スケール(したがって名前)を表すことができる値を指します。整数、浮動小数点数、および分数はスカラーです。複素数、ブール値、文字列はスカラーではありません。アトミックなものは必ずしもスカラーではなく、スカラーであるものは必ずしもアトミックではありません。スカラーはネイティブであるか、ライブラリによって提供されます。
いくつかのタイプは奇妙な分類を持っています。BigNumber型は、通常、数字または整数の配列として実装され、スカラーですが、技術的にはアトミックではありません。実装が非表示になっていて、内部コンポーネントにアクセスできない場合、それらはアトミックであるように見えます。しかし、コンポーネントは隠されているだけなので、原子性は幻想です。これらはほとんど常にライブラリで提供されるため、ネイティブではありませんが、ネイティブである可能性があります。たとえば、Mathematicaプログラミング言語では、大きな数がネイティブであり、Mathematicaプログラムがそれらをビルディングブロックに分解する方法がないため、それらはその下でコンポジットであるという事実にもかかわらず、そのコンテキストでもアトミックです。カバー(Mathematica言語の世界にはもういない)
これらの定義は、使用されている言語とは無関係です。
簡単に言えば、「スカラー」タイプは、コンポジットやコレクションではなく、単一のアイテムを参照するように見えます。したがって、スカラーには、プリミティブ値と列挙値などの両方が含まれます。
http://ee.hawaii.edu/~tep/EE160/Book/chap5/section2.1.3.html
おそらく「スカラー」という用語は、Cへの後戻りとなる可能性があります。
スカラーは、単一の値を含み、他のC ++オブジェクトで構成されていないプリミティブオブジェクトです。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1995/N0774.pdf
これが「スケール」の値を持つかどうかを知りたいのですが。-数を数えるなど。
Scott Langebergの回答は簡潔で信頼できるリンクに裏付けられているので、私は気に入っています。できればスコットの答えに賛成票を投じます。
「プリミティブ」データタイプをプライマリデータタイプと見なして、セカンダリデータタイプをプライマリデータタイプから派生させることができると思います。派生は、C ++構造体などの組み合わせによるものです。構造体を使用して、データ型(およびintとcharなど)を組み合わせて、2次データ型を取得できます。構造体定義のデータ型は常にセカンダリデータ型です。主なデータ型は何からも派生したものではなく、プログラミング言語で与えられたものです。
私は、プリミティブがプライマリを意味する命名法であることに類似しています。その平行は「正規表現」です。「レギュラー」という用語は「レギュレート」と理解できると思います。したがって、検索を制御する式があります。
スカラーの語源(http://www.etymonline.com/index.php?allowed_in_frame=0&search=scalar&searchmode=none)は、はしごのようなものを意味します。これがプログラミングに関係しているのは、ラダーには1つの次元しかありません。ラダーの端からの横線の数です。スカラーデータ型には次元が1つしかないため、単一の値で表されます。
使用法では、プリミティブとスカラーは交換可能だと思います。スカラーではないプリミティブ、またはプリミティブではないスカラーの例はありますか?
プリミティブとは交換可能ですが、他のデータ型の基本的な構成要素であるデータ型を指し、プリミティブは他のデータ型で構成されていません。
スカラーは単一の値を持つことを指します。スカラーは数学的なベクトルと対照的です。(例として1種類のベクトルを使用して)1つの値がベクトルの方向を表すために必要であり、別の値がベクトルの大きさを表すために必要であるため、ベクトルは単一の値によって表されません。
参照リンク: http ://whatis.techtarget.com/definition/primitive http://en.wikipedia.org/wiki/Primitive_data_type