Alıntı (canalpay):
> Eğer bunu yapmayacaksak bile derslerde veya Wiki'de C'de standart C kütüphanesini kullanabildiğimizi belirtmeliyiz.
Evet, bir şekilde bunun altını çizmek gerek. D varken C kullanmaya gerek olmamalı tabii ama alışma döneminde bildiklerini kullanabilmek de yararlı...
Çok iyi fikir ama doğrusu benim gözümü korktu. :) Her işlevi anlatmak çok uzun iş olur. Ama işin güzel tarafı, anladığım kadarıyla neredeyse bütün C kütüphanesi var.
C standart kütüphanesindeki başlıkları http://en.wikipedia.org/wiki/C_library adresinden alarak ve D modüllerini dmd/src/druntime/import/core/stdc/ klasöründen alarak şöyle karşılaştırıyorum:
<assert.h>
<complex.h> complex.d
config.d
<ctype.h> ctype.d
<errno.h> errno.d
<fenv.h> fenv.d
<float.h> float_.d
<inttypes.h> inttypes.d
<iso646.h>
<limits.h> limits.d
<locale.h> locale.d
<math.h> math.d
<setjmp.h>
<signal.h> signal.d
<stdarg.h> stdarg.d
<stdbool.h>
<stddef.h> stddef.d
<stdint.h> stdint.d
<stdio.h> stdio.d
<stdlib.h> stdlib.d
<string.h> string.d
<tgmath.h> tgmath.d
<time.h> time.d
<wchar.h> wchar_.d
<wctype.h> wctype.d
Ayrıca Windows için de şu dosyanın içindeki bir sürü Win32 işlevi var:
dmd/src/druntime/import/core/sys/windows/windows.d
Bunlar ilerisi için bir kaynak oluştursun. Daha sonra birisi okul tatili gibi boş bir zamanda belki bunlarla ilgili bir tanıtım yazısı yazar da Tanıtım sayfasına koyarız. (Ben şimdilik D.ershane'yi bitirmek istiyorum. ;) )
Alıntı:
> Birde C'nin standart kütüphanesinden(sanırım glibc değil mi?) başka bir kütüphaneyi nasıl kullanabiliriz ? Yine kendi modülümüzü tanımlar gibi mi yapacağız. Örneğin işlevler dizininde başka bir kütüphane var. Onu import 'işlevler.modüladı; 'gibi mi tanımlıyoruz.
C kütüphanelerini kullanabilmek için onun bir "D binding"inin oluşturulması gerekiyor. Ya otomatik araçlardan yardım alınıyor, ya da elle yapılıyor. Eğer <c_basligi.h> diye bir C kütüphanesi başlığı varsa, onun için bir c_basligi.d ara dosyası oluşturmak ve o dosyayı kullanmak ("import etmek") gerekiyor.
Bunun en güzel örneğini yukarıdaki C başlıklarıyla D karşılıklarını açarak görebilirsin. Örneğin şu iki dosyanın içeriklerine bak:
/usr/include/stdio.h
~/dmd/src/druntime/import/core/stdc/stdio.d
(Tabii aslında dmd'yi başka bir yere de kurmuş olabilirsin.)
Ayrıca "D binding" yerine ne diyeceğimizden emin değilim. "D bağlantısı" güzel değil. "D modülü" olmaz, çünkü modülde asıl işlevler de bulunur ama bu dosyalarda ise yalnızca bildirimler bulunuyor. "D dönüştürücü dosyası"? "D aracı dosyası"?
Alıntı:
> Birde bildiğiniz başka c kütüphanesi var mı ?
Standart C kütüphanesi o kadar. Onun yanında "standart gibi" olan POSIX tanımı var. Onun dosyaları da şurada:
~/dmd/src/druntime/import/core/sys/posix/
Bunlardan başka artık "üçüncü şahıs" (third party) kütüphaneleri var. ncurses, libxml2, vs. Bunların bazılarının D aracıları zaten yazılmış. Şurada "binding" olan satırlar:
http://dsource.org/projects/
Oradaki şu projeler birden fazla D aracısını bir araya getiriyor:
http://dsource.org/projects/bindings
http://dsource.org/projects/derelict
O tanıtım yazısının özü oldu galiba... :)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]