Простые/примитивные/встроенные Типы в C#

1,00
р.
Всем привет! Дайте, пожалуйста, определения следующим понятиям:
Простые типы (simple types) Примитивные типы (primitive types) Встроенные типы (built-in types)
И какие именно типы к этим группам относят.

Почему меня это заинтересовало - читая книгу Рихтера "CLR via C#", а именно Главу 5, вижу таблицу примитивных типов, в которой написаны:
Числовые типы (byte..double и decimal) bool string object dynamic.
Но, далее Рихтер уже пишет, что decimal не является примитивным. Получается противоречие. Полез я тогда в библиотеку MSDN и нашел следующее:
К простым типам относятся: Числовые типы и bool К встроенным типам относят: Числовые типы bool string object. К примитивным типам относят: Все числовые типы (кроме decimal) bool IntPtr UIntPtr.
Ссылки: 1 и 2 пункт 3 пункт.
Получается, что Рихтер в таблице хотел показать встроенные типы, но почему-то написал их как примитивные. Или я чего-то не понимаю?
Искал в других источниках: там простые/примитивные/встроенные типы - это синонимы.


Ответ
Канонический источник информации — официальная спецификация языка. В ней сказано (раздел 4.1 Value types):
C# provides a set of predefined struct types called the simple types. simple-type:
numeric-type bool
numeric-type:
integral-type floating-point-type decimal

То есть, decimal и bool является, а string, object и dynamic не является simple-type. Тот же список приведён в явном виде в разделе 4.1.4: sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, bool, decimal.
Слово “primitive” употребляется в спецификации всего дважды: в части 1 (Introduction):
C# has a unified type system. All C# types, including primitive types such as int and double, inherit from a single root object type.
и в части 11 (Structs):
Just as these predefined types are structs, it is also possible to use structs and operator overloading to implement new “primitive” types in the C# language.
Нигде нету более точного определения, поэтому можно считать, что понятие primitive type не формализовано. То же относится и к built-in: данный термин вовсе не встречается в спецификации.
Рихтер, судя по всему, позволяет себе несколько вольное обращение с терминами (он настолько крут, что может себе это позволить).