Programming languages 标量和基本数据类型-它们是相同的吗?

Programming languages 标量和基本数据类型-它们是相同的吗?,programming-languages,types,terminology,primitive-types,scalar,Programming Languages,Types,Terminology,Primitive Types,Scalar,在我读过的各种文章中,有时引用原始数据类型,有时引用标量 我对它们的理解是,它们是一些简单的数据类型,比如int、boolean、char等 我是否遗漏了一些东西,这意味着你应该使用特定的术语,或者这些术语只是可以互换的? 每个页面的维基百科页面都没有显示任何明显的内容 如果这些术语可以简单地互换,那么哪一个是首选的?我认为它们不能互换。它们经常是相似的,但差异确实存在,而且似乎主要在于它们的对比和上下文中的相关内容 标量通常与复合物(如数组、映射、集合、结构等)形成对比。标量是一个“单”值-整

在我读过的各种文章中,有时引用原始数据类型,有时引用标量

我对它们的理解是,它们是一些简单的数据类型,比如int、boolean、char等

我是否遗漏了一些东西,这意味着你应该使用特定的术语,或者这些术语只是可以互换的? 每个页面的维基百科页面都没有显示任何明显的内容


如果这些术语可以简单地互换,那么哪一个是首选的?

我认为它们不能互换。它们经常是相似的,但差异确实存在,而且似乎主要在于它们的对比和上下文中的相关内容

标量通常与复合物(如数组、映射、集合、结构等)形成对比。标量是一个“单”值-整数、布尔值,可能是字符串-而复合物由多个标量组成(也可能是对其他复合物的引用)。“标量”用于单个/简单/原子值和复合值之间存在相关区别的上下文中

然而,原语类型与引用类型相比,当相关的区别是“这是一个直接的值,还是对包含真实值的东西的引用?”时,使用原语类型,如Java的原语类型与引用。我认为这是一种比标量/复合稍低的级别区别,但并不完全如此


这实际上取决于上下文(通常还取决于讨论的是什么语系)。举一个可能是病理性的例子:字符串。在C语言中,字符串是复合词(字符数组),而在Perl中,字符串是标量。在Java中,字符串是对象(或引用类型)。在Python中,所有内容(概念上)都是对象/引用类型,包括字符串(和数字)。

简单地说,“标量”类型似乎是指单个项,而不是复合项或集合。所以标量既包括基本值,也包括枚举值之类的东西

也许“标量”术语可以追溯到C:

标量是包含单个值且不由其他C++对象< /P>组成的原始对象


我很好奇这是否指这些项目是否具有“规模”值比如数数。

我喜欢斯科特·兰格伯格的答案,因为它简洁明了,有权威链接支持。如果可以的话,我会投票支持斯科特的答案

我假设“基本”数据类型可以被视为主要数据类型,因此次要数据类型是从主要数据类型派生的。派生是通过组合,如C++结构。结构可用于组合数据类型(如and int和char)以获得辅助数据类型。结构定义的数据类型始终是辅助数据类型。主数据类型不是从任何东西派生的,而是编程语言中给定的数据类型

我有一个类似于原语的术语,意思是原语。这种类比就是“正则表达式”。我认为术语“规则”可以理解为“调节”。因此,您有一个表达式来调节搜索

标量词源()表示阶梯状。我认为这与编程有关的方式是,阶梯只有一个维度:从阶梯末端到阶梯末端有多少梯级。标量数据类型只有一个维度,因此由单个值表示

我认为在用法上,原语和标量是可以互换的。有没有一个不是标量的基元的例子,或者一个不是基元的标量的例子

虽然可以互换,但基元是指作为其他数据类型的基本构建块的数据类型,并且基元不由其他数据类型组成

标量是指其具有单个值。标量与数学向量形成对比。向量不是由单个值表示的,因为(使用一种向量作为示例)需要一个值来表示向量的方向,需要另一个值来表示向量的大小

参考链接:
这些术语有很多混淆和误用。通常一个用来表示另一个。以下是这些术语的实际含义

“Native”是指内置到语言中的类型,而不是由库(甚至是标准库)提供的类型,无论它们是如何实现的。Perl字符串是Perl语言的一部分,因此它们在Perl中是本机的。C使用库在指向字符的指针上提供字符串语义,所以指向字符的指针是本机的,但字符串不是

“原子”是指无法再分解的类型。它与“复合”相反。复合材料可以分解为原子值的组合或其他复合材料。本机整数和浮点数是原子的。分数、复数、容器/集合和字符串是复合的

“Scalar”“Scalar”
——这是一个让大多数人困惑的问题——指的是可以表示比例的值(因此得名),如大小、体积、计数等。整数、浮点数和分数都是标量。复数、布尔和字符串不是标量。原子的东西不一定是标量的,标量的东西也不一定是原子的。标量可以是本机的,也可以由库提供

有些类型有奇怪的分类。BigNumber类型通常实现为数字或整数数组,是标量,但从技术上讲,它们不是原子的。如果实现是隐藏的,并且您无法访问内部组件,则它们可能看起来是原子的。但是组件只是隐藏的,所以原子性是一种幻觉。它们几乎都是图书馆提供的,所以它们不是本地的,但也可能是本地的。例如,在Mathematica编程语言中,大nu