Thread overview
February 16, 2014

Bu ikisi arasında ne fark var tam olarak? D de bir vektöre ihtiyaç var mı ?

Zekeriya

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

February 16, 2014

Mazur görün hocam :) İki dile de hakim değilim sadece ara kod incelediğim oluyor oturup kod yazmışlığım yok henüz :)

Şimdi Vector ile vector diye 2 farklı şey mi var yoksa struct ismi Vector olduğu için mi öyle söylediniz? :)

D array derken de d nin dilimlerini kast ettim phobos kütüphanesindeki olanı değil :) Bu karmaşayı çözmek için neye ne isim vereceğiz kafam karıştı :D

Assocative Array için de böyle bir sıkıntı var. D de kullanılan yöntem hash map ama başka dillerde hash table gibi farklı sistemler de var bir ara sadece isim farklılığı sanmıştım.

Zekeriya

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

February 16, 2014

Bir de c header to d header diye bir olay var windows için acaba bunun linux sürümü var mı?

DMC diye geçiyordu galiba emin değilim.

Diğer bilgisayara windows kuracağım mecbur çünkü bazı toollara linuxda erişemiyorum.

Zekeriya

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

February 16, 2014

Herhalde C değil de C++ ve Vector değil de vector diyorsun... :)

Aradaki en önemli farklar:

  1. Eleman sahipliği konusu: std::vector'ün elemanlarının bir anda tek sahibi olabilir. D dilimlerinin elemanları ise bir anda birden fazla dilim tarafından sahiplenilmiş olabilir.

  2. Yukarıdaki maddeye bağlı olarak, D'de sonuncu sahip sonlanınca asıl dizinin elemanları da çöp toplayıcı tarafından sonlandırılır.

  3. C++'ta erişici (iterator) arayüzü var, D'de aralık (range).

Şimdi farkediyorum: Sanırım "D Array" deyince de std.container.Array'i kasdetmişsin. Bir önce vector yerine Vector görünce array yerine Array yazmışsındır diye düşünmüştüm. :)

std.container'deki topluluklar ilginç bir sahiplenme ve erişim mantığı üzerine kurulular; alışık olmayanlara garip gelebiliyor. Ben forum sorularındaki karşılaştığım kadarıyla biliyorum; deneyimim yok.

Ali

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

February 16, 2014

Alıntı (zekeriyadurmus):

>

Şimdi Vector ile vector diye 2 farklı şey mi var

Küçük/Büyük harf ayrımı önemli olduğu için sen Vector yazınca özellikle öyle sandım. Hele tür isimleri de büyük harfle başlatılınca öyle bir tür diye düşündüm. Normalde vector veya std::vector yazılıyor. :)

Alıntı:

>

d nin dilimlerini kast ettim

O zaman yukarıdaki farklar geçerli. :)

Alıntı:

>

Bu karmaşayı çözmek için neye ne isim vereceğiz kafam karıştı :D

array: dizi

slice: dilim

:)

Alıntı:

>

Assocative Array için de böyle bir sıkıntı var. D de kullanılan yöntem hash map ama başka dillerde hash table gibi farklı sistemler de var bir ara sadece isim farklılığı sanmıştım.

Ben hâlâ sadece isim farklılığı diye biliyorum. :)

Ali

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

February 17, 2014

Alıntı (zekeriyadurmus:1392569393):

>

Mazur görün hocam :) İki dile de hakim değilim sadece ara kod incelediğim oluyor oturup kod yazmışlığım yok henüz :)

Şimdi Vector ile vector diye 2 farklı şey mi var yoksa struct ismi Vector olduğu için mi öyle söylediniz? :)

D array derken de d nin dilimlerini kast ettim phobos kütüphanesindeki olanı değil :) Bu karmaşayı çözmek için neye ne isim vereceğiz kafam karıştı :D

Assocative Array için de böyle bir sıkıntı var. D de kullanılan yöntem hash map ama başka dillerde hash table gibi farklı sistemler de var bir ara sadece isim farklılığı sanmıştım.

Zekeriya

associative array == hash map (java) == dictionary (python) == hash (ruby)

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

February 18, 2014

Mengu hocam tam olarak öyle değil :) Bir ara bakınmıştım http://blog.manishchhabra.com/2012/08/the-5-main-differences-betwen-hashmap-and-hashtable/

Amaçları aynı ama kullanılan algoritma dolayısıyla perforamns farklı. O yüzden doğru isim kullanmak uygun olacaktır diye düşünüyorum. Ayrıca D dili assocative array diye bahsetse de internet sitesinde http://dlang.org/hash-map.html burada linkte hash-map diye geçiyor. Sanırsam (pek emin değilim) önceleri AA olmadığı için veya ilk uygulamalarında kütüphane şeklinde yapmışlardı belki de yanılıyorum daha öncede vardı ama bunu bir kütüphane olarak sonradan d de yazmışlar.

Ayrıca eklemek isterim: D dilinde kullanılan AA key sırasına göre yani
["a": 1, "b": 2, "c": 3]
şeklinde göstermiyor bunu bu şekilde saklayan gösteren algoritmalar da mevcut diye biliyorum. Görünüş itibariyle aynılar ama aslında gerçekten aralarında fark var.

Zekeriya

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

February 18, 2014

Alıntı (zekeriyadurmus):

>

Bir ara bakınmıştım http://blog.manishchhabra.com/2012/08/the-5-main-differences-betwen-hashmap-and-hashtable/

O yazı Java'daki iki topluluk arasındaki farkı çoklu işletim dizileri açısından anlatıyor. Yoksa hem o yazıdaki hem de burada konuştuğumuz bütün topluluklar "hash table"dır.

Alıntı:

>

kullanılan algoritma

Algoritma aynı:

  • Nesneyi ifade eden bir tamsayı değer hesapla (hash value)

  • O değeri elimizdeki dizinin uzunluğu ile % işlecinden geçir ve index oluştur

  • Nesneyi dizinin o indeksteki bağlı listesinin sonuna ekle (Bağlı liste yerine açık adresleme (open addressing) denen yöntem de yaygındır)

Alıntı:

>

dolayısıyla perforamns farklı

Kilit vs. nedeniyle olabilir. Yoksa büyük O karmaşıklığı açısından hash table işlemleri normalde hep O(1)'dir.

Alıntı:

>

Ayrıca D dili assocative array diye bahsetse de internet sitesinde http://dlang.org/hash-map.html burada linkte hash-map diye geçiyor.

Çünkü aynı şey. :)

Alıntı:

>

kütüphane olarak sonradan d de yazmışlar.

Eşleme tablolarının iç olanak olmasının gerekmediği ve kütüphane olarak da yazılabileceği bir gerçek ama hâlâ kütüphane olamıyor. Durum bayağı karışık ve kötü ama ben her ayrıntısını bilmiyorum. :)

Aklımdaki bir örnek şu: Eğer dilin kendi olanağı ise, aşağıdaki kod bugün çalışıyor:

void main()
{
   int[char][string] aa;
   aa["merhaba"]['a'] = 42;
}

Dikkat ederseniz, ne aa'nın "merhaba" diye bir elemanı ne de onun 'a' diye elemanı var. Ama derleniyor ve işliyor. Yanılmıyorsam bu olmayan elemana böyle ikili erişim kendi kodlarımızda sağlanamıyor. Emin değilim... Deneyin... :-p

Alıntı:

>

D dilinde kullanılan AA key sırasına göre yani
["a": 1, "b": 2, "c": 3]
şeklinde göstermiyor

Hiçbir hash table öyle göstermez. (Bir kaç elemanlık örneklerdeki tesadüyler dışında.)

Alıntı:

>

bunu bu şekilde saklayan gösteren algoritmalar da mevcut diye biliyorum

O algoritmalar ikili arama ağacı kullanırlar. Örneğin std::map öyledir ama onların elemana erişimleri O(log N) karmaşıklığındadır. Hash table sıralamayı takmadığı için O(1)'dir.

Alıntı:

>

Görünüş itibariyle aynılar ama aslında gerçekten aralarında fark var.

Doğru ama şunların arasında fark yok: hash table, hash map, associative array, eşleme tablosu, vs. :)

Ali

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

February 19, 2014

Alıntı (acehreli:1392750455):

>

Eşleme tablolarının iç olanak olmasının gerekmediği ve kütüphane olarak da yazılabileceği bir gerçek ama hâlâ kütüphane olamıyor. Durum bayağı karışık ve kötü ama ben her ayrıntısını bilmiyorum. :)

Aklımdaki bir örnek şu: Eğer dilin kendi olanağı ise, aşağıdaki kod bugün çalışıyor:

> void main()
> {
>     int[char][string] aa;
>     aa["merhaba"]['a'] = 42;
> }
> ```

> Dikkat ederseniz, ne aa'nın "merhaba" diye bir elemanı ne de onun 'a' diye elemanı var. Ama derleniyor ve işliyor. Yanılmıyorsam bu olmayan elemana böyle ikili erişim kendi kodlarımızda sağlanamıyor. Emin değilim... Deneyin... :-p
>
> Ali
>

yok, olmayan bir elemana [] syntaxi ile erisemiyoruz ama aa["merhaba"].get('boo') diye safe bir islem yapabiliriz.

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