Istnieje wiele nieporozumień i niewłaściwego użycia tych terminów. Często jeden ma na myśli drugie. Oto, co właściwie oznaczają te terminy.
„Natywny” odnosi się do typów wbudowanych w język, w przeciwieństwie do typów dostarczanych przez bibliotekę (nawet bibliotekę standardową), niezależnie od sposobu ich implementacji. Łańcuchy Perl są częścią języka Perl, więc są natywne w Perlu. C zapewnia semantykę ciągów zamiast wskaźników do znaków przy użyciu biblioteki, więc wskaźnik do znaku jest natywny, ale łańcuchy nie.
„Atomowy” odnosi się do typu, którego nie można już rozłożyć. Jest przeciwieństwem „kompozytu” . Kompozyty można rozłożyć na kombinację wartości atomowych lub innych kompozytów. Natywne liczby całkowite i liczby zmiennoprzecinkowe są atomami. Ułamki, liczby zespolone, kontenery / kolekcje i ciągi znaków są złożone.
„Skalar” - i to jest ten, który dezorientuje większość ludzi - odnosi się do wartości, które mogą wyrażać skalę (stąd nazwa), takich jak rozmiar, objętość, liczebności itp. Liczby całkowite, liczby zmiennoprzecinkowe i ułamki są skalarami. Liczby zespolone, wartości logiczne i łańcuchy NIE są skalarami. Coś, co jest atomowe, niekoniecznie jest skalarne, a coś, co jest skalarne, niekoniecznie jest atomowe. Skalary mogą być natywne lub dostarczane przez biblioteki.
Niektóre typy mają dziwne klasyfikacje. Typy BigNumber, zwykle implementowane jako tablica cyfr lub liczb całkowitych, są skalarami, ale technicznie nie są atomowe. Mogą wydawać się niepodzielne, jeśli implementacja jest ukryta i nie możesz uzyskać dostępu do komponentów wewnętrznych. Ale komponenty są tylko ukryte, więc atomowość jest iluzją. Są prawie zawsze dostarczane w bibliotekach, więc nie są rodzime, ale mogą być. Na przykład w języku programowania Mathematica duże liczby są natywne, a ponieważ program Mathematica nie ma sposobu, aby rozłożyć je na bloki konstrukcyjne, są one również atomowe w tym kontekście, pomimo faktu, że są kompozytami pod okładki (gdzie nie jesteś już w świecie języka Mathematica).
Definicje te są niezależne od używanego języka.