Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

D Dili Hakkında Merak Ettiklerim (?)

Konu, 'D Dili' kısmında DoqiTR. tarafından paylaşıldı.

  1. DoqiTR.

    DoqiTR. Üye

    Kayıt:
    11 Haziran 2011
    Mesajlar:
    103
    Beğenilen Mesajlar:
    0
    Merhabalar, D dili hakkında merak ettiğim bir kaç soru var, cevaplarsanız sevinirim.
    Sorularım şunlar:

    -------------------------------------------------------------------------------------------------------------------------------
    # 1-) D dilinin C/C++ dillerinden farkları nelerdir?
    # 2-) C/C++ dillerine göre avantajları ve dezavantajları nelerdir?
    # 3-) D dili ile C/C++ dilleri arasında benzerlikler (syntax benzerliği) var mıdır?
    # 4-) C/C++ bilen birisi D dilini ne kadar sürede iyi bir şekilde anlayabilir? Öğrenmek kolaylaşır mı?
    # 5-) C/C++ ile yapılabilen şeyleri, D dili ile yapabilir miyiz?
    # 6-) Sizce D dili gelecekte popüler bir dil haline gelebilir mi?
    -------------------------------------------------------------------------------------------------------------------------------

    Sorularım fazla olabilir, kusura bakmayın.. Bu soruların cevapları benim için önemli, gerçekten D dili hakkında bilgi sahibi olmak istiyorum.
    Teşekkürler.
     
  2. acehreli

    acehreli Ali Çehreli

    Kayıt:
    19 Ekim 2002
    Mesajlar:
    4,973
    Beğenilen Mesajlar:
    2
    Çok fazla olduğu için bir forum konusunda hepsini yanıtlayamayız. :( D dilini çok kabaca şöyle tarif edebilirim:

    - C++'tan yola çıkın; dolayısıyla C kadar alt düzey bir dil

    - Çoğunlukça gereksiz veya yanlış tasarlanmış olduğu düşünülen taraflarını atın veya değiştirin; örneğin çoklu gerçekleştirme kalıtımı desteklenmiyor; otomatik tür dönüşümleri çok daha az, vs. Şablonlar çok güçlü...

    - Modern programlama dillerinde kanıtlanmış olan güçlü olanakları alın ve dile katın; çöp toplayıcı, temsilciler (lambda, vs.), fonksiyonel dillerdeki saflık kavramı, sözleşmeli programlama, vs. Unicode kaynak kod ve çalışma ortamı...

    Şuradaki makaleler arasından özellikle Andrei Alexandrescu'nun "Neden D" makalesini öneririm:

    http://ddili.org/makale/

    Tabii oradaki diğer yazılar da güzel.

    Çok fazla avantajı var. Şurada bir kaç karşılaştırma var ama o yazılardan sonra işler çok daha ilerledi: :)

    http://ddili.org/tanitim/

    Dezavantajı yok ve zaten olmamalı. Sonuçta o dillerden sonra geliştirildiği için dezavantaj kabul edilebilecek yanlışlıklar yapılmadı.

    Kendi eksiklikleri ve yanlışları var ama bunlar o dillerden geri olduğu için değil.

    Söz dizimi çok benziyor. Benim gibi C++'tan geçenler D'yi hararetle kucaklıyorlar. :) Sanırım D'nin dizileri ve dizgileri başlangıçta kafa karıştırabilir. D'ninkiler çok üstün. Bunun için de yukarıdaki "D Dilimler" yazısını öneririm ama yeni başlayanlara biraz karışık gelebilir.

    Java'dan geçenlerin de D'ye çabuk uyum gösterdiklerini duydum.

    Evet, C ve C++'çıların D'yi öğrenmeleri kolay. Uzmanlık düzeyi duruma göre değişir. :)

    Şöyle bir kitap var:

    http://ddili.org/ders/d/index.html

    Baş tarafları sana fazla yavaş gelebilir ama belki hızlıca göz gezdirebilirsin.

    Evet ama zaten her dille hemen hemen herşey yapılabilir. D C kadar alt düzeydir ve C++ ve başka üst düzey diller kadar üst düzeydir. Belki daha fazla...

    Gelebilir ama gelmeyebilir de. :)

    Kusura bakma ama benim de hiçbir fikrim yok. Ancak, sağlam bir takipçi kitlesi olduğunu söyleyebilirim. Mart 2013'te bir D konferansı gerçekleşecek. Bunun için gerekli olan 30 bin dolar D kullanıcıları tarafından toplandı. D'ye inananların olduğunu gösteriyor. :)

    Ali
     
  3. Furkan Onka Uğur

    Furkan Onka Uğur Moderatör Yetkili Kişi

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    3,707
    Beğenilen Mesajlar:
    47
    Şehir:
    Ankara
    Bu geminin kaptanı Ali Çehreli. Ecnebiler bile Ali Çehreli'nin yazdığı kitabı tavsiye ediyorlar:)

    3) Birkaç işleç hariç oldukça benzediğini düşünüyorum. Tabi yeni olanakların getirdiği bir çok değişiklik mevcut.
    5) Yapabilirsiniz deniyor. Hatta şablon (template) kullanılmamış C++ sınıfları D'de kullanılabiliyor diye biliyorum. C kütüphanesinin kullanılabilmesi de cabası.
    6) Bunun cevabını bilemeyiz. Piyasada bildiğim kadarıyla üç adet derleyici var. İlk ikisi Digital Mars'ın kendi derleyicileri. D1 ve D2 olmak üzere iki tane. Üçüncüsü ise GCC ile birlikte gelen derleyici. Optimizasyon konusunda diğerlerinden çok daha iyi olduğu söyleniyor. Fakat standartlaşma olmazsa, dilin kullanılabilirliği sıkıntı doğurur.
     
  4. DoqiTR.

    DoqiTR. Üye

    Kayıt:
    11 Haziran 2011
    Mesajlar:
    103
    Beğenilen Mesajlar:
    0
    Sorularımı cevapladığınız için çok teşekkür ederim. Yeterince bilgi sahibi oldum :)

    Ali hocam; D dili için kitap yazdığınızı bilmiyordum.. @Furkan Onka Uğur, arkadaşımız sayesinde öğrendim ve hemen indirdim :) Bir gün okuyacağım.. Ve galiba verdiğiniz cevaplara bakılırsa, D dili'nin diğer dillerden pek bir eksiği yok :)
    O zaman C/C++ dillerinden sonra sırada D dili var :) Aslında daha C/C++ dillerinde pek iyi olduğumu söyleyemem. Yaşım daha küçük ve daha çok zamanım var, bir gün bende sizler gibi olucam inşallah :)
     
  5. caliskanSC

    caliskanSC Üye

    Kayıt:
    5 Ekim 2011
    Mesajlar:
    133
    Beğenilen Mesajlar:
    0
    Ben Ali Çehreli'nin kitabını okudum ve önceden c/c++ dili hakkında bilgim vardı.Kitabı okurken ilk başta sıradan bir dil ,ortalarına doğru bu dil çok güzel,çok iyi tasarlanmış bir dil dedim,sonlarına doğru ise d dilinden hemen uzaklaşmam gerektiğine karar verdim, ama şunu söyleyebilirim ki kitapta d dilini geçtim programcılık adına öğrenilmesi gereken çok şey var.Programlama öğretmesi açısından iyi bir kitap,örneklerde var.

    Lakin bana D dili, C/C++ dan türemiş gibi değilde C# ve Java dan türemiş, C dili kütüphanelerini kullanabiliyor gibi gözüken(evet gözüken :p,biraz da dalga geçer gibi C++'ın da kütüphanelerini kullanabiliyoruz) ,
    .Net kütüphanelerini kullanamazsa bir yere gelemeyecek bir dil gibi geldi.

    D dilinin C/C++ dilinden hiçbir eksiği yok ama gördüğüm kadarıyla gereksiz bir fazlalığı var beni bu dilden soğutan da bu oldu ne yazik ki...
     
  6. acehreli

    acehreli Ali Çehreli

    Kayıt:
    19 Ekim 2002
    Mesajlar:
    4,973
    Beğenilen Mesajlar:
    2
    O konuda hiç sorunla karşılaşmadım. Olsa olsa yalan reklam duymuşuzdur. ;) C kütüphanelerini olduğu gibi kullanabildiği doğru. Ancak, D'de başlık dosyası değil de modül kavramı bulunduğu için ve hiçbir C kütüphanesinin modül kavramından haberi olmadığı için, o kütüphaneye uygun bir D ilintisi (D binding) yazmak veya bulmak gerekiyor. Bu normalde çok kolay bir işlem. Yapılması gereken, başlık dosyasındaki bildirimleri neredeyse bire bir olarak D ilintisine geçirmek.

    D'de makro bulunmadığı için içinde makro olan başlıklar biraz daha zor oluyor ama olanaksız bir durumdan haberim yok.

    Zaten önemli C kütüphanelerinin çoğunun ilintisi mevcut; özel olarak yazmaya gerek olmuyor.

    D'nin C++ kütüphanelerini kullanması konusunda iki sıkıntı var. Eğer o kütüphanenin arayüzünde şablon varsa veya işlev yükleme kullanılmışsa o işlevler D'den çağrılamıyorlar. Bu bilinçli olarak alınmış bir karar: Eğer doğru hatırlıyorsam, öteki türlü olsaymış D'nin şablonları kısıtlı olmak zorunda olurmuş ve D derleyicisinin de neredeyse bütün C++ dilini bilmesi gerekirmiş.

    Mecbur kalındığında her C++ kütüphanesi için bir C arayüzü yazmak mümkün. O yüzden çok büyük bir sorun değil.

    Bununla ilgili şu konu açılmış:

    http://forum.dlang.org/thread/lxcgrsrlqtxelxizazri@forum.dlang.org

    (Oradaki ProHeckler bir troll; ne yazık ki konuyu kirletmiş. :-/)

    .NET ile D arasında teknik uyumsuzluklardan bahsediyorlar. Özellikle D'nin dilimleri öyleymiş. .NET'in geniş olanaklarından yararlanamamak üzücü ama anlaşılan durum bu. :(

    Şu konu daha iyi galiba:

    http://forum.dlang.org/thread/pzhwiumzhktkzdmvlpig@forum.dlang.org

    Ali
     
  7. caliskanSC

    caliskanSC Üye

    Kayıt:
    5 Ekim 2011
    Mesajlar:
    133
    Beğenilen Mesajlar:
    0
    Bence kolay bir işlem değil.Özellikle kitabın sonlarına doğru okuduğum(sizin kitabınızın :D )her değerin o thread'e özgü olduğunu ve bunu değiştirmek için shared anahtar sözcüğü ile yazılması gerektiğini okumuştum,bu bile çok büyük bir zorluluk hele multithread uygulamalarda.(Ek soru= Acaba posix thread'ları kullanabiliyor muyuz D dilinde,ki bu C dili kütüphanesi?)

    Ben D dili'nin C++ kütüphanelerini kullanmasında çok daha fazla sıkıntısı olduğunu okumuştum(dmd ile gelen html belgelerinde).Öyle ki yalnızca D dilinin interface' ine benzer bir sınıfı C++ dili içerisinde yazarsak ancak bunu çağırabilirmişiz...Yoksa yok .C++ ' a göre tasarlanmış hiçbir sınıfı D dilinden çağırmak mümkün değil diye düşünüyorum.Zaten D dilinin sınıf yapısını öğrendikten sonra bunun böyle olamayacağını görmüştüm.
     
  8. acehreli

    acehreli Ali Çehreli

    Kayıt:
    19 Ekim 2002
    Mesajlar:
    4,973
    Beğenilen Mesajlar:
    2
    Ben gerçekten çok kolay buluyorum. Aşağıdaki güçlük benim __gshared anahtar sözcüğünü biraz da bilerek kitaba katmadığım için ortaya çıkmış.

    Başka dillerle etkileşmek kitabın amacının dışında kaldığı için her kavramı anlatmadım. Ama __gshared o bölüme ileride eklenecek. Kitabı İngilizceleştirdikçe her bölümü tekrar gözden geçiriyorum ve gereken eklemeleri yapıyorum.

    Şimdi baktım, __gshared'i not etmemişim ama kendime atomicOp'u hatırlatmışım:

    http://code.google.com/p/ddili/source/browse/trunk/src/ders/d/es_zamanli_shared.d#4

    Kütüphaneler ile yalnızca başlık dosyaları aracılığıyla etkileştiğimiz için bu yalnızca başlık dosyalarında bildirilen değişkenler için geçerli, değil mi? Değişkenlerin global olarak paylaşılması hiç önerilmediğinden bu tür değişkenlerden herhalde çok az bulunur.

    Evet, sonuçta başına __gshared (veya 'shared') yazmak gerekir am sonuçta bu da D ilintisi yazmakla ilgili bir konu.

    Evet, yalnızca multithread kütüphaneleri etkileyen bir konu ve yalnızca onların global değişkenleri ile ilgili. O da, eğer öyle bir değişken varsa.

    C dili kütüphanesi olduğuna göre, evet, D programlarından kullanılabilir. D'nin çok güçlü multithreading olanakları da posix thread'lerini kullanıyorlardır. (%99 eminim. ;) )

    Herhalde şu olmalı:

    http://dlang.org/cpp_interface.html

    Benim deneyimim yok ama yukarıdaki belgeye bakılırsa durum o kadar kötü değil. Üç numaralı seçenekte şöyle diyorlar: "... to connect directly to C++ functions and classes". Yani C++ işlevlerini ve sınıflarını doğrudan kullanmayı anlatıyorlar. Örneğin "Calling C++ Virtual Functions From D" başlığı altında bir örnek var. Orada C++ sınıf nesnesi doğrudan çağırıyorlar:

    Kod:
      d.bar(9,10,11);
    Ali