D programlama dili kitabının yazarı ile bir söyleşi

Başlatan Erdem, 27 Nisan 2011 - 18:31:39

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

Erdem



D ile programlama kitabının yazarı sayın Ali Çehreli ile yapılmış bir söyleşi:

Ali Çehreli ile Bilgisayar Programcılığı Üzerine

Daha önce kendisiyle Ceviz.net de bir röportaj yapmıştı:

Silicon Valley'de bir Türk: Ali Çehreli
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

neneki

D programla dili hakkında daha ayrıntılı bilgi verebilir misin dost?

Erdem

D programlama dilini C++'nin geleceği olarak düşünebiliriz.

Kısaca böyle söyledikten sonra biraz daha geniş bir açıklama için:

http://ddili.org/forum/post/3855

Burada Türkçe D programlama ile ilgili dersler bulabilirsiniz:

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

Buradan da D programlama dili ile ilgili Türkçe kitabı indirebilirsiniz:

http://ddili.org/ders/d/D_Programlama_Dili.pdf
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

6ng4n

javamsı tabiri caizse "kımıl kımıl" bir dil bakalım ne olacak geleckete :D

Erdem

Java ile değil ama belki C ve C++ gibi dillerle kıyas yapılabilir diye düşünüyorum. Çünkü bildiğim kadarıyla Java ya da C# gibi diller sistem programlama dili değil. Az zamanda çabuk sonuç alınabilen productivity language tarzı diller diye biliyorum.

Ben o bağlantıda kısaca özetledim. Ama C++'nin büyük ustalarından Scott Meyers'ın The D Programming Language isimli kitabın önsözünde yazdığı güzel bir yazısı var.

Zaten o grupta (Meyers • Sutter • Alexandrescu) ki bir tek Herb Sutter eksik  ;)

http://bit.ly/4LfeDM

O da bildiğiniz üzere Microsoft'un C++ takımının başında.

Yazım açısından da çok beğendiğimi söyleyebilirim. Ben C++'nin yazım şeklini oldukça karmaşık bulmuşumdur. Örneğin şöyle bir kodu C++ öğrenmek isteyen bir çok arkadaşıma göstersem C++ öğrenmeye karar vermek konusunda kendilerini bir kere daha sorgulayacaklarına eminim! :) 


#include <iostream>
#include <map>
#include <string>
#include <iterator>

using namespace std;

typedef map<string, unsigned int> Kelimeler;
typedef pair<string, unsigned int> Sayac;

class KelimeArttirici : public iterator<output_iterator_tag,
                                        void, void, void, void>
{
    Kelimeler & kelimeler_;

public:

    explicit KelimeArttirici(Kelimeler & kelimeler)
:
        kelimeler_(kelimeler)
    {}

    KelimeArttirici & operator= (const string & kelime)
    {
        ++kelimeler_[kelime];
        return *this;
    }

    KelimeArttirici & operator*() { return *this; }
    KelimeArttirici & operator++() { return *this; }
    KelimeArttirici & operator++(int) { return *this; }
};

namespace std
{

ostream & operator<< (ostream & cikis, const Sayac & sayac)
{
    return cikis << sayac.first << '\t' << sayac.second;
}

} // namespace std

int main ()
{
    Kelimeler kelimeler;

    copy(istream_iterator<string>(cin),
         istream_iterator<string>(),
         KelimeArttirici(kelimeler));

    copy(kelimeler.begin(), kelimeler.end(),
         ostream_iterator<Sayac>(cout, "\n"));
}


Bir de bunun şablon olanakları ile süslendiğini düşünelim.

D'nin hem yazım kodunu daha okunaklı buluyorum, hem de C++ kadar karmaşık olmadan en doğru çözümü bulmaya çalışan bir dil olarak görüyorum.

Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

6ng4n

biraz dik kafalıyım ama dnin syntaxı sağolsun pek alışılmadık ifadeler getiriyor c++,javda alışık olduğumuz <Tür> olayınınn Tür! olması açıkçası pek bi gıcığıma gitti :D. bu neyin değili diye sordum kendime. :D. bunun dışında sınıf türetmede üstsınıf ile arabirimi aynı kefeye koyması da pek bir garip(class zart extends zurt implements zartbunabenzicek dediğinde neyin nerden geldiğini görüyordum arkadaş.)std C kütüphanesine vediği destek ilginç diğer benzer üst seviye diller (d üst seviye geçiyor) c,c++ dan sözdizimini falan alır kapıları kapatır o yüzden beğendim üst seviye ile orta arasında kalmış sanki. (hatta içimden stdio.h'ı import edip writeln yerine printf ile hello world yazasım geldi ilk incelememde :D (c++ da cout'a geçmem zaman aldı :D :D hello world için neyse zaten öğrenmek için değil javaya taban olsun diye baktım :D) ).klasik programcı alışkanlıkları ediniyorum yeniliğe kapalı bir tip olup çıktım unityı bile beğenmedim sol panele acaip kafayı taktım :"niye aşağı gelmiyorsun ,niye menün eşek kadar insan küçük yapar o ne öyle" tarzında düşünceler oluştu kafamda.

Erdem

Alıntı yapılan: 6ng4n - 28 Nisan 2011 - 00:08:46
c++,javda alışık olduğumuz <Tür> olayınınn Tür! olması açıkçası pek bi gıcığıma gitti :D. bu neyin değili diye sordum kendime. :D

Gene de görüşler için teşekkürler! :)

class Foo(T) {
    T t;
}

Foo!(int) f;


Örneğin burada Foo'nun değeri derleme zamanında derleyici tarafından çıkarılmaya çalışılıyor. Ama bazen derleyici T'nin hangi türde olduğunu tahmin edemez. O yüzden  Foo'ya parametre olarak geçtiğimiz parametrenin bazen ! işaretinden sonra programcı tarafından açıkça belirtilmesi gerekir.

Benim en çok beğendiğim yönlerinden bir tanesi de tamamen Türkçe değişken isimleri kullanmaya izin vermesi ve Unicode desteğinin olması :D
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

mami96

D dili gercekten muhtesem bir dil.

Daima bir dili karsilastiririz ornegin PHP mi Asp.NET mi? diye. Ya da Java mi? C# mi? şeklinde...

Sanirim D dilinide C++ ile karsilastirabiliriz. Cunku C++ ile sistem programciliginde aldigim verimi D ilede alabiliyorum. İlgilenenler zaten bilirler.

microanaliz

Merağımdan dolayı soruyorum Makine dilinden yukarı doğru çıktıkca çalışma verimi ve esneklik yok oluyor ama C dili esnekliği ve verimini korumuş C bir üst kümesi  C99 standardı ve C++ olmuştur acaba D dili esneklik ve verimlilik bakımından C dili gibimi yoksa diğer diller gibi sıkıntılımı bu konuda...
MicroAnaliz

Erdem

Microanaliz C C++'nin alt kümesi diyemeyiz. Bu konu Stroustroup'un SSS sayfasında var.

Is C a subset of C++?

Ben makine dili ve assembly'i okulda ders olarak okumuştum. Ama şimdiye kadar hiç kullandığımı hatırlamıyorum. Yani kullanılan diller, yöntemler çözmeye çalıştığımız problemlere göre değişir.

Bu konuyla ilgili kitabın yazarına sorulan bir soru var.

Alıntı YapSizi C ve C++ dilleri üzerine yazdığınız ve çevirdiğiniz makalelerden de hatırlıyoruz. Bu dillere kıyasla D dili daha mı yenilikçi?

Ayrıca Andrei Alexandrescu'nun yazdığı Neden D isimli bir makaleden şöyle özetlersek:

D'nin çok paradigmalı multi paradigm olduğunu söylerken, bazı seçimler sırasında çatışmaların gerekmeyebileceğini kastediyoruz. D bu konuyu kavramıştır... Herşeyin nesne, fonksiyon, liste, eşleme tablosu, veya Noel Baba olması gerekmez. Ne oldukları size kalmış olmalıdır. Bu yüzden D programcılığı özgürlükler getirir, çünkü bir sorunu çözmeye çalışırken eldeki olanakları o çözüme uydurmak için çabalamak gerekmez. Buradaki bir gerçeği de dile getirmek gerekiyor: özgürlüklerle birlikte sorumluluklar da gelir; bu sefer de çözüm için hangi tasarımın daha uygun olacağına karar vermek için zaman harcamak gerekecektir.

D bu konuda C++'nın izinden yürür; doğru olan tek yol gibi bir ısrarı yoktur.

Makalenin tamamı da burada:

http://ddili.org/makale/neden_d.html

Örneğin D isterseniz çöp toplama düzeneğini kullanan otomatik bellek yönetimini kullanacağınız gibi isterseniz bellek yönetimini elle yapmanıza izin verir. Bir program derlenirken @safe @trusted @system seçenekleri ile derleme seçenekleri vardır. Örneğin @system seçeneğinde belleği elle yönetmek, bir dizinin sınırlarının dışındaki bir noktaya erişim sağlamak gibi alt düzey işlemler yapabilirsiniz. Bu durumda D ne yaptığınızı bildiğinizi varsayar.
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

microanaliz

Ben burada esneklikden bahseddim D dili yeni olduğu için gelecek vaad eder Bir çok özellikde taşır avantajıda vardır ama büyük projelerde uzun dosyalarda problemlerde bir çok iyi geçinen dil çöküyor verimsiz hale geliyor şimdiye kadar işlemciyi anlayan Bir C dili var yanılmıyorsam ve kendini ispatlamıştır bende bu babda esnekliği ve vermini sordum ama verdiğin kaynaklar gerçekden güzeldi.
MicroAnaliz

Erdem

Diyelim ki bir oyun programlayalım. Bu oyun FPS türünde yapay zeka kullanan 2D bir oyun olsun. Binlerce satırdan oluşan bir kod. Bunun C ile kodlanmasını düşünemiyorum bile. C++ ile kodlanabilir ama o da çok karışık oluyor genelde. İşte D, C ve C++'nin artı yönlerini alıp bir sonraki adıma taşıyor. Bu nedenle D'yi C++'nin geleceği gibi düşünebiliriz.

Ayrıca C standart kütüphanesini D içinden kullanabiliriz. Örneğin şöyle bir kod geçerlidir:

import std.c.stdlib;
import std.stdio;

void main()
{
    char[] yazı;
    yazı = "merhaba".dup;
    printf("bir şeyler yazalım = '%.*s'\n", yazı);
}

Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

microanaliz

Bu açıdan haklısın bunu hiç düşünmemiştim...
MicroAnaliz

kemanci_erdem


Erdem

Tabi elbette :)

Kitabın yazarı pdf veya internetten okunabilen sürümünü ücretsiz olarak dağıtıyor. Ama Türkçe ya da İngilizce bir basılı sürümü çıkarsa, isteyen gidip basılı halini parayla satın alabilecek.
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik

bytan

Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

microanaliz

Alıntı yapılan: Erdem - 27 Nisan 2011 - 18:31:39


D ile programlama kitabının yazarı sayın Ali Çehreli ile yapılmış bir söyleşi:

Ali Çehreli ile Bilgisayar Programcılığı Üzerine

Daha önce kendisiyle Ceviz.net de bir röportaj yapmıştı:

Silicon Valley'de bir Türk: Ali Çehreli
Sayın erdem wiki de programla altında d ile ilgili makaleyi aldım yayınladım isterseniz sizde wiki deki programlama kısmında D dili ilgili bildiklerinizi yazabilirsinzi.Saygılarla...
MicroAnaliz