1. ホーム
  2. programming-languages

[解決済み] スカラーとプリミティブのデータ型 - 同じものなのか?

2022-04-25 11:17:35

質問

いろいろな記事を読んでいると、プリミティブなデータ型に言及することもあれば、スカラーに言及することもあるようです。

私の理解では、それぞれint, boolean, charなどの単純なもののデータ型だと思います。

何か私が見落としている、特定の用語を使うべきだということでしょうか、それとも単に互換性のある用語なのでしょうか? それぞれのWikipediaのページを見ても、明らかなことは書かれていません。

用語が単に互換性がある場合、どちらが好ましいですか?

どのように解決するのですか?

私は、この2つは互換性がないと思っています。 これらは頻繁に似ていますが、違いは存在し、主に何と対比されるか、何が文脈に関連するかということにあるようです。

スカラー と対比されるのが一般的です。 化合物 配列、マップ、セット、構造体などです。 スカラーは整数、ブーリアン、文字列などの単一値で、複合値は複数のスカラー(および他の複合値への参照)で構成されます。

プリミティブ型 とは対照的である。 参照型 これは、Javaのプリミティブ型と参照のように、「これは直接値なのか、それとも本当の値を含む何かへの参照なのか」という区別をするときに使われます。 これはスカラー/コンパウンドよりもやや低レベルの区別であると私は考えていますが、そうではありません。

それは本当に文脈に依存する(そして頻繁にどの言語ファミリーが議論されているのか)。 病的かもしれませんが、文字列の例を挙げましょう。C言語では文字列は複合体(文字の配列)であり、Perlでは文字列はスカラである。Javaでは、文字列はオブジェクト(または参照型)です。Pythonでは、文字列(と数値)を含め、すべてが(概念的には)オブジェクト/参照型です。