Es gibt viel Verwirrung und Missbrauch dieser Begriffe. Oft wird eins verwendet, um ein anderes zu bedeuten. Hier ist, was diese Begriffe tatsächlich bedeuten.
"Native" bezieht sich auf Typen, die in die Sprache integriert sind, anstatt von einer Bibliothek (sogar einer Standardbibliothek) bereitgestellt zu werden, unabhängig davon, wie sie implementiert sind. Perl-Strings sind Teil der Perl-Sprache, daher sind sie in Perl nativ. C bietet eine Zeichenfolgensemantik über Zeiger auf Zeichen unter Verwendung einer Bibliothek, sodass der Zeiger auf Zeichen nativ ist, Zeichenfolgen jedoch nicht.
"Atomic" bezieht sich auf einen Typ, der nicht mehr zerlegt werden kann. Es ist das Gegenteil von "Composite" . Verbundwerkstoffe können in eine Kombination von Atomwerten oder anderen Verbundwerkstoffen zerlegt werden. Native Ganzzahlen und Gleitkommazahlen sind atomar. Brüche, komplexe Zahlen, Container / Sammlungen und Zeichenfolgen sind zusammengesetzt.
"Skalar" - und dies ist derjenige, der die meisten Menschen verwirrt - bezieht sich auf Werte, die Skalierung (daher der Name) ausdrücken können, wie Größe, Volumen, Anzahl usw. Ganzzahlen, Gleitkommazahlen und Brüche sind Skalare. Komplexe Zahlen, Boolesche Werte und Zeichenfolgen sind KEINE Skalare. Etwas, das atomar ist, ist nicht unbedingt skalar und etwas, das skalar ist, ist nicht unbedingt atomar. Skalare können nativ sein oder von Bibliotheken bereitgestellt werden.
Einige Typen haben ungerade Klassifikationen. BigNumber-Typen, die normalerweise als Array von Ziffern oder Ganzzahlen implementiert werden, sind Skalare, aber technisch gesehen nicht atomar. Sie können atomar erscheinen, wenn die Implementierung ausgeblendet ist und Sie nicht auf die internen Komponenten zugreifen können. Aber die Komponenten sind nur verborgen, so dass die Atomizität eine Illusion ist. Sie werden fast immer in Bibliotheken bereitgestellt, sind also nicht einheimisch, könnten es aber sein. In der Programmiersprache Mathematica sind beispielsweise große Zahlen nativ, und da ein Mathematica-Programm sie nicht in ihre Bausteine zerlegen kann, sind sie in diesem Zusammenhang auch atomar, obwohl sie unter dem zusammengesetzt sind Cover (wo Sie nicht mehr in der Welt der Mathematica-Sprache sind).
Diese Definitionen sind unabhängig von der verwendeten Sprache.