Saya tidak berpikir mereka dapat dipertukarkan. Mereka sering kali serupa, tetapi perbedaannya memang ada, dan tampaknya terutama pada apa yang dikontraskan dan apa yang relevan dalam konteks.
Skalar biasanya dikontraskan dengan senyawa , seperti array, peta, set, struct, dll. Skalar adalah nilai "tunggal" - bilangan bulat, boolean, mungkin string - sedangkan senyawa terdiri dari beberapa skalar (dan mungkin referensi ke senyawa lainnya). "Skalar" digunakan dalam konteks di mana perbedaan yang relevan adalah antara nilai tunggal / sederhana / atom dan nilai gabungan.
Tipe primitif , bagaimanapun, dikontraskan dengan tipe referensi misalnya , dan digunakan ketika perbedaan yang relevan adalah "Apakah ini secara langsung sebuah nilai, atau apakah itu referensi ke sesuatu yang berisi nilai sebenarnya?", Seperti dalam tipe primitif Java vs. referensi . Saya melihat ini sebagai perbedaan tingkat yang lebih rendah daripada skalar / senyawa, tetapi tidak sepenuhnya.
Itu sangat tergantung pada konteks (dan seringkali rumpun bahasa apa yang sedang dibahas). Untuk mengambil satu, mungkin patologis, contoh: string. Dalam C, string adalah gabungan (larik karakter), sedangkan di Perl, string adalah skalar. Di Java, string adalah objek (atau tipe referensi). Dalam Python, semuanya (secara konseptual) merupakan tipe objek / referensi, termasuk string (dan angka).
Ada banyak kebingungan dan penyalahgunaan istilah-istilah ini. Seringkali yang satu digunakan untuk mengartikan yang lain. Inilah arti sebenarnya dari istilah-istilah itu.
"Native" mengacu pada jenis yang disertakan dalam bahasa, bukan yang disediakan oleh pustaka (bahkan pustaka standar), terlepas dari bagaimana penerapannya. String Perl adalah bagian dari bahasa Perl, jadi string asli di Perl. C menyediakan semantik string melalui pointer ke chars menggunakan perpustakaan, jadi pointer ke char adalah native, tetapi string tidak.
"Atomic" mengacu pada jenis yang tidak lagi dapat diuraikan. Ini kebalikan dari "komposit" . Komposit dapat diuraikan menjadi kombinasi nilai atom atau komposit lainnya. Bilangan bulat asli dan bilangan floating point adalah atom. Pecahan, bilangan kompleks, wadah / koleksi, dan string adalah gabungan.
"Skalar" - dan ini adalah salah satu yang membingungkan kebanyakan orang - mengacu pada nilai yang dapat menyatakan skala (karena itulah namanya), seperti ukuran, volume, hitungan, dll. Bilangan bulat, bilangan floating point, dan pecahan adalah skalar. Bilangan kompleks, boolean, dan string BUKAN skalar. Sesuatu yang bersifat atom belum tentu skalar dan sesuatu yang skalar belum tentu atom. Skalar bisa asli atau disediakan oleh perpustakaan.
Beberapa jenis memiliki klasifikasi yang aneh. Jenis BigNumber, biasanya diimplementasikan sebagai larik digit atau integer, adalah skalar, tetapi secara teknis tidak atomik. Mereka dapat tampak seperti atom jika penerapannya tersembunyi dan Anda tidak dapat mengakses komponen internal. Tetapi komponennya hanya tersembunyi, jadi atomicity adalah ilusi. Mereka hampir selalu tersedia di perpustakaan, jadi mereka tidak asli, tapi bisa saja. Dalam bahasa pemrograman Mathematica, misalnya, bilangan besar adalah native dan, karena tidak ada cara bagi program Mathematica untuk menguraikannya menjadi blok penyusunnya, bilangan tersebut juga atom dalam konteks itu, meskipun faktanya mereka adalah komposit di bawah sampul (di mana Anda tidak lagi berada di dunia bahasa Mathematica).
Definisi ini tidak bergantung pada bahasa yang digunakan.
sumber
Sederhananya, akan tampak bahwa jenis 'skalar' mengacu pada satu item, bukan gabungan atau kumpulan. Jadi skalar menyertakan nilai primitif serta hal-hal seperti nilai enum.
http://ee.hawaii.edu/~tep/EE160/Book/chap5/section2.1.3.html
Mungkin istilah 'skalar' mungkin merupakan kemunduran ke C:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1995/N0774.pdf
Saya ingin tahu apakah ini mengacu pada apakah barang-barang ini akan memiliki nilai 'skala'? - Seperti menghitung angka.
sumber
Saya suka jawaban Scott Langeberg karena ringkas dan didukung oleh tautan otoritatif. Saya akan memilih jawaban Scott jika saya bisa.
Saya kira tipe data "primitif" dapat dianggap tipe data primer sehingga tipe data sekunder diturunkan dari tipe data primer. Derivasi melalui penggabungan, seperti struktur C ++. Sebuah struct dapat digunakan untuk menggabungkan tipe data (seperti dan int dan char) untuk mendapatkan tipe data sekunder. Tipe data yang ditentukan struktur selalu merupakan tipe data sekunder. Tipe data primer tidak diturunkan dari apapun, melainkan diberikan dalam bahasa pemrograman.
Saya memiliki paralel dengan primitif menjadi nomenklatur yang berarti primer. Paralel itu adalah "ekspresi reguler". Saya pikir nomenklatur "biasa" dapat dipahami sebagai "pengaturan". Jadi Anda memiliki ekspresi yang mengatur pencarian.
Etimologi skalar ( http://www.etymonline.com/index.php?allowed_in_frame=0&search=scalar&searchmode=none ) artinya seperti tangga. Menurut saya, kaitannya dengan pemrograman adalah bahwa sebuah tangga hanya memiliki satu dimensi: Berapa banyak anak tangga dari ujung tangga. Tipe data skalar hanya memiliki satu dimensi, sehingga diwakili oleh satu nilai.
Menurut saya dalam penggunaan, primitif dan skalar dapat dipertukarkan. Apakah ada contoh dari sebuah primitif yang bukan skalar, atau dari sebuah skalar yang tidak primitif?
Meskipun dapat dipertukarkan, primitif mengacu pada tipe data yang menjadi blok bangunan dasar dari tipe data lain, dan primitif tidak terdiri dari tipe data lain.
Skalar mengacu pada memiliki nilai tunggal. Skalar kontras dengan vektor matematika. Sebuah vektor tidak diwakili oleh satu nilai karena (menggunakan satu jenis vektor sebagai contoh) satu nilai diperlukan untuk mewakili arah vektor dan nilai lain diperlukan untuk mewakili besarnya vektor.
Tautan referensi: http://whatis.techtarget.com/definition/primitive http://en.wikipedia.org/wiki/Primitive_data_type
sumber
Di C, tipe enumerasi, karakter, dan berbagai representasi bilangan bulat membentuk kelas tipe yang lebih umum yang disebut tipe skalar. Karenanya, operasi yang dapat Anda lakukan pada nilai jenis skalar apa pun sama dengan operasi bilangan bulat.
sumber
tipe null adalah satu-satunya hal yang paling realistis sesuai dengan definisi "tipe skalar". Bahkan serialisasi 'None' sebagai 'N.' menyesuaikan dengan kata 16bit yang secara tradisional adalah skalar - atau bahkan satu bit yang memiliki beberapa kemungkinan nilai - bukanlah "data tunggal".
sumber
Setiap primitif adalah skalar, tetapi tidak sebaliknya. DateTime adalah skalar, tetapi tidak primitif.
sumber