Itu agak tergantung pada bahasa.
Misalnya, dalam bahasa seperti C dan C ++, Anda memiliki sejumlah built-in jenis skalar - int, float, double, char, dll Ini adalah "primitif" dalam arti bahwa mereka tidak bisa diurai menjadi komponen yang lebih sederhana. Dari tipe dasar ini Anda dapat menentukan tipe baru - tipe pointer, tipe array, tipe struct, tipe union, dll.
Kemudian Anda memiliki bahasa seperti Lisp sekolah tua, di mana semuanya adalah atom atau daftar . Sekali lagi, dengan definisi di atas, atom adalah "primitif" dalam arti bahwa ia tidak dapat diuraikan menjadi sesuatu yang lebih sederhana.
Edit
Sejauh yang saya ketahui, istilah "primitif", "dasar", dan "bawaan" cukup dapat dipertukarkan. Namun, jika Anda benar-benar ingin bertele - tele, Anda dapat membedakan antara tipe yang "built-in" (yang secara eksplisit disediakan oleh definisi bahasa) dan tipe yang berasal dari tipe built-in yang masih "primitif" atau "dasar" karena mereka tidak dapat diuraikan menjadi elemen yang lebih sederhana. C'stypedeffasilitas memungkinkan Anda untuk membuat nama tipe baru untuk tipe yang sudah ada. Ada memungkinkan Anda untuk membuat jenis skalar baru yang memiliki kendala pada mereka. Misalnya, Anda bisa mendapatkan tipe Latitude dari tipe mengambang bawaan, dengan batasan yang tidak bisa mengambil nilai di luar rentang [-90.0, 90.0]. Ini masih tipe primitif atau dasar karena tidak dapat dipecah menjadi komponen yang lebih sederhana, tetapi karena itu didefinisikan pengguna, itu tidak dianggap sebagai tipe "built-in".
Sekali lagi, konsep-konsep ini sedikit kabur, dan itu benar-benar tergantung pada konteksnya. Misalnya, gagasan tipe "built-in" tidak ada artinya untuk bahasa tanpa jenis seperti BLISS.