Существует много путаницы и неправильного использования этих терминов.Часто одно используется для обозначения другого.Вот что на самом деле означают эти термины.
«Нативный» относится к типам, встроенным в язык, в отличие от предоставления библиотекой (даже стандартной библиотекой), независимо от того,о том, как они реализованы.Строки Perl являются частью языка Perl, поэтому они являются родными для Perl.C предоставляет семантику строк над указателями на символы с помощью библиотеки, поэтому указатель на тип char является собственным, а строки - нет.
«Атомный» относится к типу, который больше не может быть разложен.Это противоположность "составной" .Композиты могут быть разложены на комбинацию атомарных значений или других композитов.Собственные целые числа и числа с плавающей запятой являются атомарными.Фракции, комплексные числа, контейнеры / коллекции и строки являются составными.
«Скаляр» - и это то, что смущает большинство людей - относится к значениям, которые могут выражать масштаб (отсюда и название), например, размер, объем, число и т. д. Целые числа, числа с плавающей запятой и дроби являются скалярами.Комплексные числа, логические значения и строки являются НЕ скалярами.То, что является атомарным, не обязательно скалярно, а то, что скалярно, не обязательно атомарно.Скаляры могут быть собственными или предоставляться библиотеками.
Некоторые типы имеют странные классификации.Типы BigNumber, обычно реализуемые в виде массива цифр или целых чисел, являются скалярами, но технически они не являются атомарными.Они могут казаться атомарными, если реализация скрыта и вы не можете получить доступ к внутренним компонентам.Но компоненты только скрыты, поэтому атомность - это иллюзия.Они почти всегда представлены в библиотеках, поэтому они не являются родными, но они могут быть.Например, в языке программирования Mathematica большие числа являются родными и, поскольку у программы Mathematica нет возможности разложить их на свои строительные блоки, они также являются атомарными в этом контексте, несмотря на то, что они являются составными в соответствии собложки (где вы больше не в мире языка Mathematica).
Эти определения не зависят от используемого языка.