Apa artinya saat data skalar?

79

Saya tidak tahu apa arti skalar sebenarnya, tetapi saya mencoba melihat apakah saya memikirkannya dengan benar. Apakah skalar berhubungan dengan kesewenang-wenangan di mana jenis data dapat berupa jenis apa pun, atau suatu sistem tidak dapat mengetahui data apa yang ada di muka.

Ryan M
sumber
Fakta menyenangkan: Platform XML tempat saya menghabiskan hari-hari saya baru-baru ini (menggunakan XQuery) suka menyebut nilai-nilai Atom ini. Saya pikir ini terkait erat, menambahkan komentar untuk referensi / istilah pencarian.
charles ross

Jawaban:

113

Istilah "skalar" berasal dari aljabar linier , di mana ia digunakan untuk membedakan angka tunggal dari vektor atau matriks. Arti dalam komputasi serupa. Ini membedakan nilai tunggal seperti integer atau float dari struktur data seperti array. Perbedaan ini sangat menonjol dalam Perl, di mana $sigil (yang menyerupai 's') digunakan untuk menunjukkan variabel skalar dan @sigil (yang menyerupai 'a') menunjukkan sebuah array. Itu tidak ada hubungannya dengan jenis elemen itu sendiri. Itu bisa berupa angka, karakter, string, atau objek. Yang penting disebut skalar adalah bahwa ada salah satunya.

Karl Bielefeldt
sumber
6
Ini adalah contoh yang baik tentang bagaimana istilah yang sama dapat berarti hal yang berbeda dalam konteks yang berbeda. Dalam bahasa seperti C atau Pascal, skalar merujuk pada tipe "blok bangunan" sederhana seperti intatau char, bukan tipe terstruktur seperti objek (bahkan jika hanya ada satu).
Caleb
2
Saya juga akan menambahkan bahwa selain array, skalar bukan struktur data majemuk seperti struct atau kelas. Perbedaannya menjadi array adalah beberapa elemen dari tipe yang sama, sedangkan struktur adalah beberapa elemen dari tipe arbitrer.
1
Juga, string bisa menjadi nilai non-skalar. Bahasa seperti Perl memperlakukannya sebagai skalar, tetapi dalam bahasa berbasis C apa pun saya berpendapat itu adalah array atau objek.
1
@ Karl Saya tidak tahu Perl tetapi bisakah Anda menjelaskan apa itu sigil ?
Geek
2
@ Geek, itu simbol yang Anda tempatkan sebelum variabel, seperti $variable. Lihat halaman wikipedia .
Karl Bielefeldt
27

Skalar hanyalah variabel yang memiliki nilai individual . Untuk keperluan diskusi ini, mari kita asumsikan bahwa skalar adalah angka tunggal, bukan kumpulan angka.

Misalnya hasil kueri SQL yang mengembalikan angka bukan tupel, seperti halnya metode ExecuteScalar () di kelas SQLCommand , yang mengembalikan nilai kolom pertama dari baris pertama dalam hasil yang dikembalikan oleh kueri. Biasanya digunakan untuk mengambil nilai agregat seperti COUNT atau RATA-RATA, ID catatan baru, atau jumlah catatan yang diproses oleh kueri.

Robert Harvey
sumber
19

Sebuah mnemonik tambahan, bagi jawaban hebat Karl Bielefeldt:

Cara berpikir sederhana tentang hal itu, adalah "bisakah ini pada skala?"

Integer bisa dalam skala.

Integer ukuran tetap dapat dalam skala, misalnya dari -2147483648 hingga 2147483647.

Bilangan real bisa dalam skala.

Karakter, desimal boolean, atau presisi tetap semua bisa dalam skala. Bahkan sebuah string bisa dalam skala (kami menggunakan semacam itu dalam menyortir).

Oleh karena itu "skalar".

Baris basis data tidak boleh dalam skala. Bilangan kompleks tidak boleh dalam skala. Objek yang mewakili pesan email tidak boleh dalam skala. Array, vektor, atau matriks tidak boleh dalam skala.

Jon Hanna
sumber
10
Jika sebuah string bisa dalam skala, mengapa bukan array? "Bisakah ini dalam skala?" tidak memberikan hasil yang intuitif, setidaknya bagi saya.
VBCPP
2
@ VBCPP di mana pada skala yang berisi {1, 2} apakah {2, 1} duduk? Sebelum atau sesudah? Sekarang, tentu saja kita dapat menegakkan pemesanan, tetapi tidak ada pemesanan yang jelas. Ingatlah juga, bahwa saya mencoba menawarkan cara mudah untuk memikirkannya (jawaban Karl Bielefeldt melakukan pekerjaan yang baik dalam memberikan jawaban IMO yang lebih tepat, dan saya tidak akan berusaha memperbaikinya, hanya penambahan). Yang mengatakan, ada elemen konteks di sini. Suatu string dapat dianggap skalar tergantung pada konteks; dalam SQL itu skalar untuk alasan yang bagus, di C tidak, juga untuk alasan yang baik.
Jon Hanna
7
Ini salah .
Andrew Medico
2
Saya tidak setuju bahwa itu "salah", jelas, meskipun saya pikir Karl Bielefeldt harus memiliki tanda centang. Ini adalah mnemotic yang terlalu lama untuk dikomentari, itu adalah jawaban yang lebih baik.
Jon Hanna
2
Saya pikir komentar "itu salah" berasal dari ide bahwa jawabannya tidak masuk akal dan tanggapan Anda terhadap pertanyaan @VBCPP tidak menjawab pertanyaannya. Saya yakin menyukai ide mnemonik, tetapi Anda masih perlu menjelaskan pentingnya, misalnya, bilangan bulat pada skala. Mungkin juga berbicara tentang menempatkan kucing di TV.
turboladen
10

Seperti halnya dengan banyak istilah dalam komputasi; asal kata tersebut lebih berkaitan dengan sifat fisik. Istilah Scalar relatif lama dalam komputasi. Definisi ini kurang ketat hari ini. Saat Anda menyimpan data dalam memori komputer, data ini dapat masuk dalam satu alamat (1 byte *) atau tidak. Ketika itu terjadi, itu disebut skalar, ketika tidak disebut komposit. Terutama karena CPU hanya bisa menangani satu alamat / bagian data (= 1 byte) pada suatu waktu. Sebagaimana dinyatakan oleh @Karl Bielefeldt; istilah itu memang diambil dari aljabar.

Kami menyebut string sebagai string karena ini adalah string karakter. Char adalah / adalah skalar, sedangkan string adalah / adalah gabungan. Menyimpan 1 buah data (datum) di beberapa alamat agak mengaburkan garis. Pikirkan seperti ini: Ketika CPU dapat memproses datum dalam satu instruksi, itu adalah skalar.

Saat ini skalar adalah nilai singular apa pun, dan nilai singular apa pun dapat didefinisikan secara berbeda di antara berbagai bahasa. bilangan bulat, mengapung, karakter, string, boolean, dan enum adalah - untuk sebagian besar skalars yang dipertimbangkan saat ini. Array, daftar, pohon, objek, dll tidak.

(* Saya katakan 1 byte untuk menjaga hal-hal yang jelas, tetapi secara teknis saya berbicara tentang hari-hari ketika 6 bit lebih umum digunakan pada kartu punch misalnya dan kemudian pada strip magnetik)

Penafian: Saya tidak dapat menemukan referensi ini di internet, saya mendapat informasi di sekolah dan dari buku-buku lama, di antaranya (saya pikir): Tabel Matematika dan Alat Bantu Lain untuk Perhitungan dari tahun 1944. Konon, ingatan saya adalah tidak seperti dulu, jadi kalau ada yang bisa mengubah / mengkonfirmasi atau menolak jawaban saya, itu akan menyenangkan.

Evert
sumber
9

Skalar adalah nilai numerik tunggal sederhana (seperti dalam 1, 2/3, 3.14, dll.), Biasanya bilangan bulat, titik tetap, atau float (tunggal atau ganda), sebagai lawan dari array, struktur, objek, vektor kompleks ( real plus imajiner atau magnitudo plus komponen sudut), tipe data vektor atau matriks (dll) yang lebih tinggi yang berisi lebih dari satu nilai numerik tunggal.

Namun, perhatikan bahwa tipe data besar yang sangat kompleks dari jenis yang juga dapat diratakan dan direpresentasikan dalam 8-bit byte memori komputer juga dapat direpresentasikan sebagai satu nomor skalar biner yang sangat panjang / besar. Turing menggunakan teknik ini untuk mewakili seluruh program komputer hanya sebagai satu angka skalar.

hotpaw2
sumber
Ini memungkinkan konsep seperti angka ilegal dan bilangan prima ilegal - representasi numerik dari program "ilegal".
Andrew
Skalar tidak harus berupa angka. Sebuah string, boolean atau tanggal / waktu juga merupakan skalar.
david.pfx
Jadi bagaimana jika saya membuat kelas tanggal kompleks berdasarkan bidang beberapa skalar (misalnya int untuk bulan, satu tahun dan satu untuk hari)?
Pierre Arlaud
1
@ david.pfx: Sebuah string jika dilihat sebagai array karakter bukan skalar.
MSalters
1
@MSalters: Tentu saja, dan integer yang dipandang sebagai array bit juga tidak. Apa pun yang dapat disimpan dan diambil sebagai nilai anonim abadi tunggal adalah skalar dan sebagian besar bahasa memungkinkan Anda untuk melakukannya dengan string, tanggal, kompleks, titik dll, bahkan jika mereka juga dapat dilihat dengan cara lain.
david.pfx
1

Kata skalar berasal dari kata Latin scalaris, suatu bentuk kata sifat dari scala (bahasa Latin untuk "tangga"). Kata Inggris "scale" juga berasal dari scala. Sumber

Skalar adalah variabel yang memiliki nilai individual.

Sebagai contoh:

Scalar Variable : Katakan bahwa Anda mencoba untuk mewakili nama-nama berbagai siswa sebagai satu set variabel. Masing-masing variabel individu adalah variabel skalar sebagai berikut

NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"

Fungsi Skalar : Fungsi skalar SQL mengembalikan nilai tunggal, berdasarkan nilai input.

UCASE() - Converts a field to upper case
LCASE() - Converts a field to lower case
Premraj
sumber