Scalaire vs type de données primitif - sont-ils la même chose?
Dans les différents articles que j'ai lus, il y a parfois des références à des types de données primitifs et parfois il y a des références à des scalaires.
Ma compréhension de chacun, c'est qu'ils sont des types de données de quelque chose de simple comme un int, boolean, char, etc.
Est-il quelque chose que je suis absent, cela signifie que vous devez utiliser un vocabulaire particulier ou sont les termes simplement interchangeables?
Les pages de Wikipédia pour chacun de ne pas montrer quoi que ce soit évident.
Si les conditions sont tout simplement interchangeables, ce qui est privilégiée?
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas qu'ils sont interchangeables. Ils sont souvent semblables, mais la différence n'existe pas, et semble principalement être ce qu'ils sont en contraste avec ce qui est pertinent dans le contexte.
Scalaires sont généralement en contraste avec composés, tels que des tableaux, des cartes, jeux, structures, etc. Un scalaire est un "simple" valeur integer, boolean, peut-être une chaîne de caractères, tandis que le composé est constitué de plusieurs scalaires (et éventuellement des références à d'autres composés). "Scalaire" est utilisé dans des contextes où la distinction pertinente entre simple/simple/valeurs atomiques et les valeurs de composition.
Types primitifs, cependant, sont en contraste avec, par exemple, types de référence, et sont utilisés lorsque la distinction pertinente est "Est-ce directement une valeur, ou est-ce une référence à quelque chose qui contient la valeur réelle?", comme en Java les types primitifs vs références. J'y vois un peu plus faible au niveau de la distinction que scalaire/composé, mais pas tout à fait.
Cela dépend vraiment du contexte (et, souvent, ce que la langue de la famille est en cours de discussion). Pour prendre un, éventuellement pathologique, par exemple: les chaînes de caractères. En C, une chaîne de caractères est un composé (un tableau de caractères), tandis qu'en Perl, une chaîne de caractères est un scalaire. En Java, une chaîne de caractères est un objet (ou d'un type de référence). En Python, tout est (théoriquement) un objet/type de référence, y compris les chaînes (et le nombre).
Il y a beaucoup de confusion et de mauvaise utilisation de ces termes. Souvent, l'un est utilisé pour signifier une autre. Voici ce que ces termes signifient réellement.
"Native" fait référence à des types qui sont intégrées à la langue, plutôt que d'être fournis par une bibliothèque (même une bibliothèque standard), indépendamment de la façon dont ils sont mis en œuvre. Perl chaînes font partie du langage Perl, de sorte qu'ils sont indigènes en Perl. C fournit chaîne sémantique sur les pointeurs de caractères à l'aide d'une bibliothèque, de sorte que le pointeur de char est originaire, mais les chaînes ne sont pas.
"Atomique" fait référence à un type qui ne peut plus être décomposé. Il est à l'opposé de "composite". Les Composites peut être décomposé en une combinaison de valeurs atomiques ou d'autres matériaux composites. Natif de nombres entiers et les nombres à virgule flottante sont atomiques. Les Fractions, les nombres complexes, les contenants ou des collections, et les cordes sont en composite.
"Scalaire" -- et c'est celui qui confond la plupart des gens -- se réfère à des valeurs qui peuvent s'exprimer à l'échelle (d'où le nom), comme la taille, le volume, les chiffres, etc. Nombres entiers, nombres à virgule flottante, et les fractions sont des scalaires. Les nombres complexes, les booléens et les chaînes sont PAS scalaires. Quelque chose qui est atomique n'est pas nécessairement scalaire et quelque chose qui est scalaire n'est pas nécessairement atomique. Les scalaires peuvent être natif ou fournis par les bibliothèques.
Certains types ont impair classifications. BigNumber types, sont généralement mis en oeuvre comme un tableau de chiffres ou de nombres entiers, sont des scalaires, mais ils sont techniquement pas atomique. Ils peuvent sembler être atomique si la mise en œuvre est caché et vous ne pouvez pas accéder aux composants internes. Mais les composants ne sont cachés, de sorte que l'atomicité est une illusion. Ils sont presque toujours fournis dans les bibliothèques, ils ne sont donc pas en natif, mais ils pourraient l'être. Dans Mathematica, un langage de programmation, par exemple, les grands nombres sont autochtones, et, comme il n'y a pas de voie pour un programme Mathematica pour les décomposer en leurs éléments constitutifs, ils sont également atomique dans ce contexte, malgré le fait qu'ils sont des composites sous les couvertures (où vous n'êtes plus dans le monde du langage Mathematica).
Ces définitions sont indépendants de la langue utilisée.
Mettre simplement, il semblerait que l' 'scalaire' type se réfère à un seul élément, par opposition à un composite ou de la collection. Donc des scalaires comprennent à la fois des valeurs primitives ainsi que des choses comme une valeur d'enum.
http://ee.hawaii.edu/~tep/EE160/Book/chap5/section2.1.3.html
Peut-être le 'scalaire' terme, peut être un retour à la C:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1995/N0774.pdf
Je suis curieux de savoir si cela signifie que ces points ont une valeur de "l'échelle"? - Tels que le comptage des nombres.
J'aime Scott Langeberg de réponse parce que c'est concis et soutenu par l'autorité des liens. Je me serais levé-vote Scott répondre si je le pouvais.
Je suppose que les "primitifs" type de données pourrait être considéré comme principal type de données de sorte que les types de données sont dérivées à partir des données primaires types. La dérivation est en combinant, comme un C struct. Une structure peut être utilisé pour combiner des types de données (telles que et les int et char) pour obtenir un secondaire de type de données. La struct type de données défini est toujours secondaire type de données. Primaire types de données ne sont pas issues de quoi que ce soit, ils sont plutôt dans le langage de programmation.
J'ai une parallèle à la primitive étant la nomenclature sens primaire. Le parallèle est "expression régulière". Je pense que la nomenclature "ordinaire" peut être comprise comme "la régulation". Ainsi, vous avez une expression qui régule la recherche.
Scalaire étymologie (http://www.etymonline.com/index.php?allowed_in_frame=0&search=scalaire&searchmode=none) signifie échelles. Je pense que la façon dont cela se rapporte à la programmation, c'est que d'une échelle a une seule dimension: Combien de barreaux à partir de la fin de l'échelle. Un type de données scalaires a une seule dimension, donc représenté par une valeur unique.
Je pense que dans l'utilisation, la primitive et scalaires sont interchangeables. Est-il un exemple d'une primitive qui n'est pas scalaire, ou d'un scalaire qui n'est pas primitive?
Bien que interchangeables, primitive renvoie au type de données étant un bloc de construction de base des autres types de données, et une primitive n'est pas composé d'autres types de données.
Scalaire se réfère à une valeur unique. Scalaire contraste avec les mathématiques vecteur. Un vecteur n'est pas représenté par une valeur unique, parce que (à l'aide d'un vecteur par exemple) avec une valeur qui est nécessaire pour représenter le vecteur de direction et d'un autre de valeur nécessaires pour représenter le vecteur de l'ampleur.
Liens de référence:
http://whatis.techtarget.com/definition/primitive
http://en.wikipedia.org/wiki/Primitive_data_type
En C, en fonction des types d'énumération, les personnages et les différentes représentations des nombres entiers forme d'un type plus général de la classe appelé types scalaires. Par conséquent, les opérations que vous pouvez effectuer sur les valeurs de tout type scalaire sont les mêmes que celles pour les entiers.
de type null est la seule chose que la plupart de façon réaliste est conforme à la définition d'un "type scalaire". Même la sérialisation de 'None' comme 'N.' inscrivant dans une 16bit mot qui est traditionnellement scalaire, ou même d'un seul bit, qui a plusieurs valeurs possibles -- ce n'est pas un "données unique".