Forum: Ders Arası RSS
typeid ve TypeInfo yapısı
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: typeid ve TypeInfo yapısı
Şuradan alıntıdır:
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...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
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.

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
Avatar
Salih Dinçer #3
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
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.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-21, 13:22:00 (UTC -08:00)