มันหมายความว่าอย่างไรเมื่อข้อมูลเป็นเกลา


78

ฉันไม่รู้ว่าเซนต์คิตส์และเนวิสหมายถึงอะไร แต่ฉันพยายามดูว่าฉันกำลังคิดเกี่ยวกับมันอย่างถูกต้อง สเกลาร์เกี่ยวข้องกับความไม่แน่นอนหรือไม่ที่ประเภทของข้อมูลอาจเป็นประเภทใด ๆ หรือระบบไม่สามารถรู้ได้ว่าข้อมูลนั้นเป็นข้อมูลล่วงหน้าหรือไม่


เรื่องสนุก: แพลตฟอร์ม XML ที่ฉันใช้เวลาหลายวันในเร็ว ๆ นี้ (โดยใช้ XQuery) ชอบเรียกค่าอะตอมเหล่านี้ ฉันคิดว่ามันเกี่ยวข้องอย่างใกล้ชิดเพิ่มความคิดเห็นสำหรับการอ้างอิง / คำค้นหา
รอ

คำตอบ:


112

คำว่า "เซนต์คิตส์และเนวิส" มาจากพีชคณิตเชิงเส้นซึ่งถูกใช้เพื่อแยกความแตกต่างจำนวนหนึ่งจากเวกเตอร์หรือเมทริกซ์ ความหมายในการคำนวณคล้ายกัน มันแยกค่าเดียวเช่นจำนวนเต็มหรือลอยจากโครงสร้างข้อมูลเช่นอาร์เรย์ ความแตกต่างนี้โดดเด่นมากใน Perl ซึ่ง$sigil (ซึ่งคล้ายกับ 's') ถูกใช้เพื่อแสดงถึงตัวแปรสเกลาร์และ@sigil (ซึ่งคล้ายกับ 'a') หมายถึงอาร์เรย์ มันไม่มีอะไรเกี่ยวข้องกับประเภทขององค์ประกอบเอง อาจเป็นตัวเลขตัวอักษรสตริงหรือวัตถุ สิ่งสำคัญที่ต้องเรียกว่าเซนต์คิตส์และเนวิสคือมีหนึ่งในนั้น


6
นี่เป็นตัวอย่างที่ดีว่าคำเดียวกันอาจหมายถึงสิ่งต่าง ๆ ในบริบทที่แตกต่างกันอย่างไร ในภาษาเช่น C หรือปาสกาลเกลาหมายถึงง่าย "สร้างบล็อก" ประเภทเช่นintหรือchar, ไม่ได้มีโครงสร้างประเภทเหมือนวัตถุ (แม้ว่าจะมีเพียงคนเดียว)
Caleb

2
ฉันจะเพิ่มว่านอกเหนือไปจากอาร์เรย์สเกลาร์ไม่ใช่โครงสร้างข้อมูลแบบผสมเช่นโครงสร้างหรือคลาส ความแตกต่างระหว่างอาร์เรย์คือองค์ประกอบหลายอย่างในประเภทเดียวกันในขณะที่โครงสร้างเป็นองค์ประกอบหลายอย่างของประเภทที่กำหนดเอง

1
นอกจากนี้สตริงอาจเป็นค่าที่ไม่ใช่สเกลาร์ ภาษาเช่น Perl ถือว่าเป็นเซนต์คิตส์และเนวิส แต่ในภาษา C ใด ๆ ฉันจะเถียงว่ามันเป็นอาร์เรย์หรือวัตถุ

1
@Karl ฉันไม่รู้จัก Perl แต่คุณช่วยอธิบายให้ชัดเจนได้ว่าsigilคืออะไร?
Geek

2
@Geek $variableมันเป็นสัญลักษณ์ที่คุณใส่ก่อนตัวแปรเช่น ดูหน้าวิกิพีเดีย
Karl Bielefeldt

27

เกลาเป็นเพียงตัวแปรที่มีค่าของแต่ละบุคคล สำหรับจุดประสงค์ของการสนทนานี้สมมติว่าเซนต์คิตส์และเนวิสเป็นตัวเลขเดียวแทนที่จะเป็นชุดของตัวเลข

ตัวอย่างเช่นผลลัพธ์ของเคียวรี SQL ที่ส่งคืนตัวเลขแทน tupleเช่นเดียวกับเมธอด ExecuteScalar ()ในคลาส SQLCommandซึ่งส่งคืนค่าของคอลัมน์แรกของแถวแรกในชุดผลลัพธ์ที่ส่งคืนโดยเคียวรี โดยทั่วไปจะใช้เพื่อเรียกคืนค่าการรวมเช่น COUNT หรือ AVERAGE, ID ของระเบียนใหม่หรือจำนวนของระเบียนที่ประมวลผลโดยแบบสอบถาม


19

ช่วยในการช่วยจำคำตอบที่ยอดเยี่ยมของ Karl Bielefeldt:

วิธีคิดง่ายๆเกี่ยวกับเรื่องนี้คือ "สิ่งนี้จะอยู่ในระดับหรือไม่"

จำนวนเต็มสามารถอยู่ในระดับ

จำนวนเต็มที่มีขนาดคงที่สามารถอยู่ในระดับเช่นจาก -2147483648 ถึง 2147483647

จำนวนจริงสามารถอยู่ในระดับ

ตัวอักษรบูลีนหรือทศนิยมที่มีความแม่นยำคงที่สามารถอยู่ในระดับ แม้กระทั่งสตริงสามารถอยู่ในระดับ (เราใช้ในการเรียงลำดับ)

ดังนั้น "เซนต์คิตส์และเนวิส"

แถวฐานข้อมูลไม่สามารถอยู่ในระดับ จำนวนเชิงซ้อนไม่สามารถอยู่ในสเกลได้ วัตถุที่แสดงถึงข้อความอีเมลไม่สามารถอยู่ในสเกลได้ อาร์เรย์เวกเตอร์หรือเมทริกซ์ไม่สามารถอยู่ในสเกลได้


10
หากสตริงสามารถอยู่ในระดับทำไมไม่อาร์เรย์? "สิ่งนี้จะอยู่ในระดับหรือไม่" ไม่ได้ให้ผลลัพธ์ที่เข้าใจง่ายสำหรับฉันอย่างน้อย
VBCPP

2
@VBCPP มีมาตราส่วนที่ประกอบด้วย {1, 2} {2, 1} อยู่หรือไม่ ก่อนหรือหลัง ตอนนี้ได้รับอนุญาตเราสามารถบังคับใช้การสั่งซื้อ แต่ไม่มีการสั่งซื้อที่ชัดเจน จำไว้ด้วยว่าฉันกำลังพยายามเสนอวิธีง่ายๆในการคิด (คำตอบของ Karl Bielefeldt ทำงานได้ดีในการให้คำตอบที่แม่นยำยิ่งขึ้น IMO และฉันจะไม่พยายามทำให้ดีขึ้นเพียงแค่ใช้งาน) ที่กล่าวว่ามีองค์ประกอบของบริบทที่นี่ สตริงอาจพิจารณาหรือไม่ว่าสเกลาร์ขึ้นอยู่กับบริบท ใน SQL มันเป็นสเกลาร์ด้วยเหตุผลที่ดีใน C มันไม่ใช่เช่นกันสำหรับเหตุผลที่ดี
Jon Hanna

7
นี่เป็นเพียงที่ไม่ถูกต้อง
Andrew Medico

2
ฉันไม่เห็นด้วยว่ามันเป็น "ผิด" ชัดถึงแม้ว่าฉันคิดว่าคาร์ลบีเลเฟลด์ควรมีเห็บ นี่เป็น mnemotic ที่ยาวเกินกว่าจะแสดงความคิดเห็นนั่นคือคำตอบที่ดีกว่า
Jon Hanna

2
ฉันคิดว่าความคิดเห็นที่ "ผิดปกติ" นั้นมาจากแนวคิดที่ว่าคำตอบนั้นไม่สมเหตุสมผลและการตอบคำถามของคุณที่ @VBCPP ไม่ตอบคำถามของเขา ฉันแน่ใจว่าชอบแนวคิดเกี่ยวกับความจำ แต่คุณยังต้องอธิบายความสำคัญของตัวอย่างเช่นจำนวนเต็มที่อยู่ในสเกล อาจจะพูดคุยเกี่ยวกับการวางแมวในทีวี
turboladen

10

เช่นเดียวกับกรณีที่มีคำศัพท์มากมายในการคำนวณ ที่มาของคำนั้นเกี่ยวข้องกับคุณสมบัติทางกายภาพมากกว่า คำว่าสเกลาร์ค่อนข้างเก่าในการคำนวณ คำจำกัดความของมันเข้มงวดน้อยกว่าทุกวันนี้ เมื่อคุณจัดเก็บข้อมูลในหน่วยความจำคอมพิวเตอร์ข้อมูลนี้สามารถใส่ได้หนึ่งที่อยู่ (1 ไบต์ *) หรือไม่ เมื่อมันทำมันถูกเรียกว่าเซนต์คิตส์และเนวิสเมื่อมันไม่ได้ถูกเรียกว่าคอมโพสิต สาเหตุหลักมาจากซีพียูสามารถจัดการที่อยู่ / ชิ้นส่วนของข้อมูลได้เพียงครั้งเดียว (= 1 ไบต์) ในแต่ละครั้ง ตามที่ระบุโดย @Karl Bielefeldt; คำนี้มาจากพีชคณิตแน่นอน

เราเรียกสตริงเป็นสตริงเพราะเป็นสตริงของอักขระ ถ่านคือ / เป็นสเกลาร์ในขณะที่สตริงคือ / เป็นคอมโพสิต การจัดเก็บข้อมูล 1 ชิ้น (ตัวเลข) ในที่อยู่หลายแห่งทำให้เบลอบรรทัด คิดแบบนี้: เมื่อซีพียูสามารถประมวลผลข้อมูลในคำสั่งเดียวมันเป็นสเกลาร์

ทุกวันนี้มีเซนต์คิตส์และเนวิสเป็นค่าใด ๆ และค่าเอกพจน์อาจถูกกำหนดแตกต่างกันในภาษาที่แตกต่างกัน จำนวนเต็ม, ลอย, ตัวอักษร, สตริง, บูลีนและ enums - สำหรับ scalars ส่วนใหญ่ถือว่าวันนี้ อาร์เรย์รายการต้นไม้วัตถุ ฯลฯ ไม่ใช่

(* ฉันบอกว่า 1 ไบต์เพื่อให้สิ่งต่าง ๆ ชัดเจน แต่โดยทางเทคนิคแล้วฉันกำลังพูดถึงวันที่ 6 บิตถูกใช้โดยทั่วไปมากขึ้นบนบัตรเจาะเช่นและต่อมาบนแถบแม่เหล็ก)

ข้อสงวนสิทธิ์: ฉันไม่สามารถหาข้อมูลอ้างอิงเกี่ยวกับเรื่องนี้ได้จากอินเทอร์เน็ตฉันได้รับข้อมูลจากโรงเรียนและจากหนังสือเก่า ๆ ซึ่งฉันคิดว่า: ตารางคณิตศาสตร์และเครื่องมือช่วยอื่น ๆ ในการคำนวณจากปี 1944 นั่นคือความทรงจำของฉันคือ ไม่ใช่สิ่งที่มันเคยเป็นดังนั้นถ้าใครสามารถแก้ไข / ยืนยันหรือปฏิเสธคำตอบของฉันมันจะดี


9

เซนต์คิตส์และเนวิสเป็นค่าตัวเลขเดี่ยวแบบง่าย ๆ (เช่นใน 1, 2/3, 3.14 เป็นต้น) โดยทั่วไปแล้วจะเป็นจำนวนเต็ม, จุดคงที่หรือลอยตัว (เดี่ยวหรือสองครั้ง) ซึ่งต่างจากอาร์เรย์โครงสร้างวัตถุเวกเตอร์เชิงซ้อน จริงบวกด้วยจินตภาพหรือส่วนประกอบขนาดบวกมุม) เวกเตอร์หรือเมทริกซ์มิติที่สูงขึ้น (ฯลฯ ) ชนิดข้อมูลที่มีค่าตัวเลขมากกว่าหนึ่งค่า

อย่างไรก็ตามโปรดทราบว่าชนิดข้อมูลขนาดใหญ่ที่มีความซับซ้อนมากของการเรียงลำดับที่สามารถถูกทำให้แบนและแสดงเป็นหน่วยความจำคอมพิวเตอร์ขนาด 8 บิตสามารถแสดงเป็นจำนวนสเกลาร์ไบนารีที่ยาวมาก / ใหญ่ ทัวริงใช้เทคนิคนี้เพื่อแสดงโปรแกรมคอมพิวเตอร์ทั้งหมดเป็นจำนวนสเกลาร์เดียว


สิ่งนี้ช่วยให้แนวคิดเช่นตัวเลขผิดกฎหมายและช่วงเวลาที่ผิดกฎหมาย - การแสดงตัวเลขของโปรแกรม "ผิดกฎหมาย"
Andrew

สเกลาร์ไม่จำเป็นต้องเป็นตัวเลข สตริงบูลีนหรือวันที่ / เวลาก็เป็นสเกลาร์
david.pfx

แล้วถ้าฉันสร้างคลาสที่ซับซ้อนตามวันที่โดยใช้หลาย ๆ สเกลาร์ (เช่นintสำหรับเดือนหนึ่งปีและหนึ่งวัน)
Pierre Arlaud

1
@ david.pfx: สตริงเมื่อดูเป็นอาร์เรย์ของอักขระไม่ใช่แบบสเกลาร์
MSalters

1
@MSalters: แน่นอนและจำนวนเต็มดูเป็นอาร์เรย์บิตไม่อย่างใดอย่างหนึ่ง สิ่งใดก็ตามที่สามารถจัดเก็บและเรียกใช้เป็นค่าที่ไม่ระบุตัวตนที่ไม่เปลี่ยนรูปแบบได้คือเซนต์คิตส์และเนวิสและภาษาส่วนใหญ่อนุญาตให้คุณทำเช่นนั้นกับสตริงวันที่ซับซ้อนจุด ฯลฯ แม้ว่าพวกเขาจะสามารถดูได้ด้วยวิธีอื่น
david.pfx

1

คำว่าเซนต์คิตส์และเนวิสมาจากคำละติน scalaris คำคุณศัพท์รูปแบบของสกาล่า (ละตินสำหรับ "บันได") คำว่า "สเกล" ในภาษาอังกฤษนั้นมาจากสคาลา แหล่ง

สเกลาร์เป็นตัวแปรที่เก็บค่าของแต่ละบุคคล

ตัวอย่างเช่น:

ตัวแปรสเกลาร์ : สมมติว่าคุณกำลังพยายามแสดงชื่อของนักเรียนต่าง ๆ เป็นชุดของตัวแปร แต่ละตัวแปรแต่ละตัวเป็นตัวแปรสเกลาร์ดังนี้

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

ฟังก์ชันสเกลาร์: ฟังก์ชันสเกลาร์ SQL ส่งคืนค่าเดียวโดยยึดตามค่าที่ป้อนเข้า

UCASE() - Converts a field to upper case
LCASE() - Converts a field to lower case
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.