Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scalar vs. primitive data type - are they the same thing?

In various articles I have read, there are sometimes references to primitive data types and sometimes there are references to scalars.

My understanding of each is that they are data types of something simple like an int, boolean, char, etc.

Is there something I am missing that means you should use particular terminology or are the terms simply interchangeable? The Wikipedia pages for each one doesn't show anything obvious.

If the terms are simply interchangeable, which is the preferred one?

like image 334
Ben Pearson Avatar asked Oct 09 '22 02:10

Ben Pearson


People also ask

What is scalar data type also known as?

These types-integers and floating points-are called arith- metic types. Together with pointers and enumerated types, they are known as scalar types because all of the values lie along a linear scale. That is, any scalar value is either less than, equal to, or greater than any other scalar value.

What is the other name of primitive data type?

These are the primitive data types. The eight primitive data types are: byte, short, int, long, float, double, char, and boolean. Upper and lower case characters are important in these names. So "byte" is the name of a primitive data type, but "BYTE" is not.

Is integer a primitive data type?

Primitive Data Types. The eight primitives defined in Java are int, byte, short, long, float, double, boolean and char. These aren't considered objects and represent raw values.

What does scalar mean in programming?

A scalar variable, or scalar field, is a variable that holds one value at a time. It is a single component that assumes a range of number or string values. A scalar value is associated with every point in a space.


1 Answers

I don't think they're interchangeable. They are frequently similar, but differences do exist, and seems to mainly be in what they are contrasted with and what is relevant in context.

Scalars are typically contrasted with compounds, such as arrays, maps, sets, structs, etc. A scalar is a "single" value - integer, boolean, perhaps a string - while a compound is made up of multiple scalars (and possibly references to other compounds). "Scalar" is used in contexts where the relevant distinction is between single/simple/atomic values and compound values.

Primitive types, however, are contrasted with e.g. reference types, and are used when the relevant distinction is "Is this directly a value, or is it a reference to something that contains the real value?", as in Java's primitive types vs. references. I see this as a somewhat lower-level distinction than scalar/compound, but not quite.

It really depends on context (and frequently what language family is being discussed). To take one, possibly pathological, example: strings. In C, a string is a compound (an array of characters), while in Perl, a string is a scalar. In Java, a string is an object (or reference type). In Python, everything is (conceptually) an object/reference type, including strings (and numbers).

like image 262
Michael Ekstrand Avatar answered Oct 11 '22 16:10

Michael Ekstrand