Thread overview
typeid ve TypeInfo yapısı
Nov 07, 2012
Salih Dinçer
Nov 07, 2012
Salih Dinçer
November 07, 2012

Şuradan (http://ddili.org/forum/thread/1021) alıntıdır:
Alıntı (acehreli):

>

Dizgi gösterimi bizi yanıltıyor ama typeid() aslında TypeInfo diye bir tür döndürür:

http://dlang.org/phobos/object.html#TypeInfo

> struct Yapı
> {
>     int i;
>     double d;
> }
>
> void main()
> {
>     TypeInfo türBilgisi = typeid(Yapı);
>
>     // Öylesine bir örnek:
>     assert(türBilgisi.tsize() == Yapı.sizeof);
> }
> ```

> "ü harfini iki ASCII karakter ile ifade eder" tam doğru değil çünkü D'deki char türünün artık ASCII ile hiç ilgisi yok. Evet, 128'den küçük olan değerler bilerek birbirlerine denk yapılmışlardır ama char'ın UTF-8 kod birimi olduğunu söylemek daha doğru. Hatta, tam doğru konuşmak gerekirse, ü'yü oluşturan kod birimlerinin ikisi de ASCII olamaz çünkü ikisinin değeri de 127'den büyük: 195 ve 188.
>
> Ali
>

Haklısın Ali hocam, şöyle denediğimizde anyı şekilde çalışırken aldatıcı görünümü açığa çıkıyor:

typeid(Yapı).toString().writeln;


Tıpkı 'stringof()''dan farklı olması gibi; adı üstünde string(dizgi) döndürüyor. Türü birebir döndürmek istediğimizde ise 'typeof()' kullanıyoruz. O da sanki makro gibi bir etki yapıyor ve olduğu yere türün gerçek kimliği geliyor. Sanki oraya elle yazılmış gibi...:)

Diğer konu için ise belki "iki char karakter" demeliydim. Sonuçta extented ASCII'de var, ilk çıkan ve bahsettiğin gibi kısa olarak standartlaşmış ASCII tablosu da var. Bence sık kullanılan UTF8 karakterlerin ASCII ile denk getirilmesinin sebebi az yer kaplamalarını sağlamak. Aksi halde herhangi bir İngilizce metin en az iki kat yer kaplayacaktı.

Sevgiler, saygılar...

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
November 07, 2012

Aslında konu ASCII'ye ve bir bakıma UTF ekseninde karakter tablolarına kayıyor ama sonradan konuyu TypeInfo'ya döndürmeye çalışacağıma söz veriyorum! Çünkü tatildeyken sanırım Erdem'in başlattığı bir hızlı sıralama algoritması (Python) vardı; bu konunun yansımalarından birinde TypeInfo ile tanışmıştım ama yeterince irdelemedik...

Keskin bir dönemeç (Fr. virage) ile UTF eksenine gelirsek; kodlamalarda, en azından ilk karakterin 128'den büyük sayı değeri seçildiğini tahmin ediyorum. Belki de yanılıyorum ama algoritmaların UTF kodu ile karşılaştığını anlaması için herhalde böyle bir şeye ihtiyacı var. UTF, insanlık için geliştirilmiş çok akıllıca bir standart.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

November 07, 2012

Alıntı (Salih Dinçer):

>

Alıntı (acehreli):

>

"ü harfini iki ASCII karakter ile ifade eder" tam doğru değil çünkü D'deki char türünün artık ASCII ile hiç ilgisi yok.

belki "iki char karakter" demeliydim. Sonuçta extented ASCII'de var

Ama o zaman da o tablodaki her kodun özel karşılığı ile karışma tehlikesi var. Şöyle demiş gibi oluruz: "ü harfini genişletilmiş ASCII ISO Latin-1 tablosundaki à ve ¼ karakterleri temsil eder." O da doğru olmaz. Çünkü aslında ü harfini iki UTF-8 kodu temsil eder.

Alıntı:

>

sık kullanılan UTF8 karakterlerin ASCII ile denk getirilmesinin sebebi az yer kaplamalarını sağlamak. Aksi halde herhangi bir İngilizce metin en az iki kat yer kaplayacaktı.

Doğru. Diğer nedeni, Unicode'dan önce yazılmış olan milyonlarca dosyanın hiç dönüşüm gerekmeden UTF-8 olarak kabul edilebilmesi.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

November 07, 2012

Alıntı (Salih Dinçer):

>

kodlamalarda, en azından ilk karakterin 128'den büyük sayı değeri seçildiğini tahmin ediyorum

Evet. Unicode kodlamalarında üst bitler karakterin kaç bayttan (veya "kod biriminden" (code unit)) oluştuğunu belirliyor. UTF-8 şöyle:

http://en.wikipedia.org/wiki/UTF-8#Description

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]