Veri skaler olduğunda ne anlama gelir?


78

Skaler tam olarak ne anlama geliyor bilmiyorum, ama doğru düşünüyor muyum diye görmeye çalışıyorum. Skaler, veri tipinin herhangi bir tipte olabileceği ya da bir sistemin verinin ne olduğunu bilmediği bir keyfilik ile ilgilidir.


Eğlenceli gerçek: Son günlerimi (XQuery kullanarak) harcadığım XML platformu bu Atomik değerleri çağırmayı seviyor. Bunun yakından ilgili olduğunu düşünüyorum, referans / arama terimleri için yorum ekleyin.
charles

Yanıtlar:


112

"Skaler" terimi , bir vektör veya matristen tek bir sayıyı ayırt etmek için kullanıldığı doğrusal cebirden gelir . Hesaplamadaki anlamı benzer. Bir tamsayı veya tek bir değer gibi tek bir değeri bir dizi gibi bir veri yapısından ayırır. Bu ayrım Perl'de çok belirgindir; burada $sigil ('s' yi andıran) skaler değişkeni, @sigil ('a' ' yı andıran) bir diziyi belirtir. Elemanın türü ile ilgisi yoktur. Bir sayı, karakter, dize veya nesne olabilir. Skaler olarak adlandırılması önemli olan , onlardan birinin olması.


6
Bu, aynı terimin farklı bağlamlarda farklı şeyleri nasıl ifade edebileceğinin güzel bir örneğidir. C veya Pascal gibi dillerde, skaler basit "yapı taşı" gibi türleri ifade eder intya char, değil (sadece bir tane var bile) nesneler gibi yapılı tipler.
Caleb

2
Ayrıca, dizilere ek olarak bir skalanın bir yapı veya sınıf gibi bir bileşik veri yapısı olmadığını da eklerdim. Bir dizi olan fark, aynı tipteki çoklu elemanlardır, bir yapı ise rastgele tipteki çoklu elemanlardır.

1
Ayrıca, bir dize olabilir olmayan bir skaler değer. Perl gibi diller skaler gibi davranırlar, ancak herhangi bir C tabanlı dilde bunun bir dizi veya nesne olduğunu iddia ediyorum.

1
Ben Perl bilmiyorum @Karl ama bir şeydir netleştirmek misiniz desen ?
Geek

2
@Geek, bu bir değişkenin önüne koyduğunuz bir sembol $variable. Wikipedia sayfasına bakınız .
Karl Bielefeldt

27

Bir Skaler, sadece bireysel bir değeri tutan bir değişkendir . Bu tartışmanın amaçları için, bir skalerin bir sayı toplama yerine , tek bir sayı olduğunu varsayalım .

Örneğin, bir SQL sorgusu sonucu , bir başlığın yerine bir dizi döner olduğu gibi ExecuteScalar () yöntemini de SQLCommand sınıfı sorgu tarafından döndürülen sonuç kümesi ilk satırın birinci kolununun değeri verir. Genellikle bir COUNT veya ORTALAMA, yeni bir kaydın kimliği veya bir sorgu tarafından işlenen kayıtların sayısı gibi bir toplu değer almak için kullanılır.


19

Karl Bielefeldt'in en büyük cevabını tamamlayıcı bir anımsatıcı:

Düşünmenin basit bir yolu, "bu bir ölçekte olabilir mi?"

Bir tamsayı bir ölçekte olabilir.

Sabit boyutlu bir tamsayı bir ölçekte olabilir, örneğin -2147483648 ila 2147483647.

Gerçek bir sayı bir ölçekte olabilir.

Bir karakter, boolean ya da sabit kesinlikli bir ondalık basamağın tümü ölçeklenebilir. Bir dize bile ölçeklenebilir (sıralamada böyle kullanırız).

Dolayısıyla "skaler".

Bir veritabanı satırı bir ölçekte olamaz. Karmaşık bir sayı bir ölçekte olamaz. Bir e-posta mesajını temsil eden bir nesne ölçekte olamaz. Bir dizi, vektör veya matris bir ölçekte olamaz.


10
Bir dize ölçekte olabilir, neden bir dizi değil? "Bu bir ölçekte olabilir mi?" En azından benim için sezgisel sonuçlar vermiyor.
VBCPP

2
@VBCPP, {1, 2} içeren bir ölçekte {2, 1} oturur mu? Önce ya da sonra? Şimdi, bir emri uygulayabileceğimizi kabul etti, ancak açık bir emir yok. Ayrıca, düşünmek için kolay bir yol sunmaya çalıştığımı da aklımda tutuyorum (Karl Bielefeldt’in cevabı IMO’ya daha kesin bir cevap vermek için iyi bir iş çıkarıyor ve daha iyisini yapmaya çalışmıyorum, sadece takviye). Bununla birlikte, burada bir bağlam unsuru var. Bir dize, içeriğe bağlı olarak skaler olarak kabul edilebilir veya olmayabilir; SQL'de skaler iyi bir sebepten dolayı, C de değil, aynı zamanda iyi bir sebepten dolayı.
Jon Hanna

7
Bu sadece yanlış .
Andrew Medico,

2
Karl Bielefeldt'in onay işaretini taşıması gerektiğini düşündüğüm halde, kesinlikle "yanlış" olduğunu kabul etmiyorum. Bu, yorum yapmak için çok uzun olan bir mnemotik, daha iyi cevap.
Jon Hanna

2
Bence "bu sadece yanlış" yorum, cevabın bir anlam ifade etmediği ve @VBCPP'nin sorusuna verdiğiniz yanıtın sorusuna cevap vermediği fikrinden geliyor. Anımsatıcı fikri hoşuma gidiyor ama yine de bir ölçekte tamsayı olmanın önemini açıklamanız gerekiyor. Televizyona bir kedi koymak hakkında da konuşabiliriz.
turboladen

10

Hesaplamada birçok terim olduğu gibi; kelimenin kökeni daha fiziksel özelliklerle ilgilidir. Skaler terimi hesaplamada nispeten eskidir. Tanımı bugünlerde daha az katı. Verileri bilgisayar belleğinde sakladığınızda, bu veriler bir adrese sığabilir (1 bayt *) veya olmayabilir. Yaptığı zaman skaler, yapılmadığı zaman ise bileşik denirdi. Temel olarak CPU'lar bir seferde sadece bir adres / veri parçası (= 1 byte) işleyebildi. @Karl Bielefeldt tarafından belirtildiği gibi; Terim gerçekten cebirden alınmıştır.

Bir dizgeye dize diyoruz çünkü karakter bir karakter dizisidir. Bir karakter skalerdir / bir dize kompozittir. 1 veri parçasını (bir veri) çoklu adreslerde saklamak, çizgiyi biraz bulanıklaştırır. Şöyle düşünün: Bir CPU bir talimattaki bir referans noktasını işleyebildiği zaman, skalardı.

Bugünlerde bir skaler herhangi bir tekil değerdir ve tekil bir değerin ne olduğu farklı diller arasında farklı bir şekilde tanımlanabilir. tam sayılar, kayan noktalar, karakterler, dizgiler, booleanlar ve sayılar bugünlerde en çok kullanılan skalarlar. Diziler, listeler, ağaçlar, nesneler vb. Değildir.

(* Her şeyi açık tutmak için 1 bayt derim, ancak teknik olarak delikli kartlarda, örneğin manyetik şeritlerde 6 bit'in daha sık kullanıldığı günlerden bahsediyorum.)

Feragatname: İnternette bununla ilgili herhangi bir referans bulamıyorum, okulda ve eski kitaplardan bilgi aldım. Bunların arasında (sanırım): Matematiksel Tablolar ve 1944'ten itibaren Hesaplamaya İlişkin Diğer Yardımlar. eskisi gibi olmadı, bu yüzden eğer biri cevabımı değiştirebilir / onaylayabilir veya reddedebilirse, iyi olurdu.


9

Bir skaler, bir dizi, yapı, nesne, karmaşık vektörün (genellikle, tam sayı, sabit nokta veya kayan (tek, çift) gibi) basit bir tek sayısal değerdir (1, 2/3, 3.14, vb. Gibi). gerçek artı hayali veya büyüklük artı açı bileşenleri), birden fazla sayısal değer içeren daha yüksek boyutlu vektör veya matris (vb.) veri türü.

Ancak, aynı zamanda düzleştirilebilen ve 8 bit bayt bilgisayar belleğinde temsil edilebilecek büyük ve çok karmaşık bir veri türünün, tek bir çok uzun / büyük ikili skaler sayı olarak gösterilebileceğini unutmayın. Turing bu tekniği tüm bilgisayar programlarını sadece bir skaler sayı olarak göstermek için kullandı.


Bu, yasadışı sayılar ve yasadışı primerler gibi kavramlara izin verir - "yasadışı" programların sayısal gösterimi.
Andrew,

Bir skalar sayısal olmak zorunda değildir. Bir string, boolean veya date / time ayrıca skalerdir.
david.pfx

Öyleyse birkaç skalar alanından yola çıkarak karmaşık bir sınıf yaparsam (örneğin , ay, yıl ve gün için bir int )?
Pierre Arlaud

1
@ david.pfx: Bir karakter dizisi olarak görüntülendiğinde bir dize skaler değildir.
MSalters

1
@ MSalters: Tabii ki, ve bir bit dizisi olarak görülen bir tamsayı da değil. Tek bir değişmez anonim değer olarak saklanıp alınabilen herhangi bir şey skalerdir ve çoğu dil, başka şekillerde de görülebilmelerine rağmen, dize, tarih, karmaşık, nokta vb.
david.pfx

1

Skaler kelimesi, scala bir sıfat biçimi olan Latince scalaris kelimesinden türemiştir ("merdiveni" için Latince). İngilizce kelime "ölçek" de scala geliyor. Kaynak

Bir Skaler, bireysel bir değeri tutan bir değişkendir.

Örneğin:

Skaler Değişken : Çeşitli öğrencilerin adlarını bir değişken kümesi olarak göstermeye çalıştığınızı söyleyin. Tek tek değişkenlerin her biri aşağıdaki gibi bir skaler değişkendir.

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

Skaler İşlevler : SQL skaler işlevler, giriş değerine bağlı olarak tek bir değer döndürür.

UCASE() - Converts a field to upper case
LCASE() - Converts a field to lower case
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.