"Merhaba Dünya" Programı
Her programlama dilinde gösterilen ilk program merhaba dünya programıdır. Doğal olarak son derece basit olması gereken bu program o dilde program yazabilmek için mutlaka bilinmesi gereken kavramları da içerdiği için önemlidir.
Şimdilik bu kavramları bir kenara bırakalım ve önce bu programı görelim:
import std.stdio; void main() { writeln("Merhaba, Dünya!"); }
Yukarıdaki kaynak koddan çalışabilir program oluşturulabilmesi için kaynak kodun bir D derleyicisi tarafından derlenmesi gerekir.
Derleyici kurulumu
Bu bölüm yazıldığı sırada derleyici olarak üç seçenek bulunuyor: Digital Mars derleyicisi dmd
, GCC derleyicisi gdc
, ve LLVM derleme ortamını hedefleyen ldc
.
D programlama dilinin geliştirilmesi sırasındaki asıl derleyici dmd
olmuştur. D'nin yeni olanakları ilk olarak hep bu derleyicide gerçekleştirilmişlerdir. Bu kitaptaki örnekler de hep dmd
üzerinde denenmiş olduklarından sizin de onu kurmanızı öneririm. Başka derleyicileri gerekirse daha sonra kurabilirsiniz. Bu kitaptaki kod örnekleri dmd 2.098.1 ile derlendi.
dmd
'nin en yeni sürümünü Digital Mars'ın Download sayfasından indirebilirsiniz. O sayfadaki sürümler arasından işletim sisteminize uyan ve sisteminizin 32 veya 64 bitlik olmasına bağlı olan en yeni sürümü seçin. D1 sürümlerini seçmeyin. Bu kitap D'nin D2 diye de anılan son sürümünü anlatır.
Derleyici kurulumu ortama bağlı olarak farklılık gösterse de bir kaç bağlantıya ve düğmeye tıklamak kadar kolaydır.
Kaynak dosya
Programcının D dili kurallarına göre yazdığı ve derleyiciye derlemesi için verdiği dosyaya kaynak dosya denir. D derlemeli bir dil olduğu için, kaynak dosyanın kendisi çalıştırılabilir bir program değildir. Kaynak dosya, ancak derleyici tarafından derlendikten sonra çalıştırılabilen program haline gelir.
Her tür dosyanın olduğu gibi, kaynak dosyanın da diske kaydedilirken bir isminin olması gerekir. Kaynak dosya isminde sisteminizin izin verdiği her harfi kullanabilirsiniz. Ancak, D kaynak dosyalarının dosya isim uzantısının .d
olması gelenekleşmiştir. Geliştirme ortamları, araç programlar, ve başka programcılar da bunu beklerler. Örneğin deneme.d
, tavla.d
, fatura.d
, vs. uygun kaynak dosya isimleridir.
Merhaba dünya programını derlemek
Kaynak dosya bir metin düzenleyicide (veya aşağıda bahsedildiği gibi bir geliştirme ortamında) yazılabilir. Yukarıdaki programı bir metin dosyasına yazın veya kopyalayın ve merhaba.d
ismiyle kaydedin.
Derleyicinin görevi, bu kaynak dosyada yazım hataları bulunmadığını denetlemek ve onu makine koduna dönüştürerek çalıştırılabilir program haline getirmektir. Programı derlemek için şu adımları uygulayın:
- Bir uç birim penceresi (konsol, terminal, komut satırı, vs. diye de bilinir) açın.
merhaba.d
dosyasının kaydedildiği klasöre gidin.- Aşağıdaki komutu yazın ve Enter'a basın. (
$
karakterini yazmayın; o karakter komut satırının başını temsil ediyor.)
$ dmd merhaba.d
Eğer bir hata yapmadıysanız hiçbir şey olmadığını düşünebilirsiniz. Tersine, dmd
'nin mesaj vermemesi herşeyin yolunda gittiğini gösterir. Bulunduğunuz klasörde merhaba
(veya merhaba.exe
) isminde bir program oluşmuş olması gerekir.
Eğer derleyici bazı mesajlar yazdıysa programı yazarken bir hata yaptığınız için olabilir. Hatayı bulmaya çalışın, olası yanlışları düzeltin, ve programı tekrar derleyin. Programlama hayatınızda doğal olarak sıklıkla hatalar yapacaksınız.
Program başarıyla derlenmişse ismini yazarak başlatabilirsiniz. Programın "Merhaba, Dünya!" yazdığını göreceksiniz:
$ ./merhaba ← programın çalıştırılması Merhaba, Dünya! ← programın yazdığı satır
Tebrikler! İlk D programınızı çalıştırdınız.
Derleyici seçenekleri
Derleyicilerin derleme aşamasıyla ilgili komut satırı seçenekleri vardır. Bu seçenekleri görmek için yalnızca derleyicinin ismini yazın ve Enter'a basın:
$ dmd ← yalnızca derleyicinin ismi DMD64 D Compiler v2.098.1 ... -de show use of deprecated features as errors (halt compilation) ... -unittest compile in unit tests ... -w warnings as errors (compilation will halt) ...
Özellikle kısaltılmış olarak gösterdiğim yukarıdaki liste her zaman için kullanmanızı önerdiğim seçenekleri içeriyor. Buradaki merhaba dünya programında hiçbir etkisi olmasa da aşağıdaki komut hem birim testlerini etkinleştirir hem de hiçbir uyarıya veya emekliye ayrılmış olanağa izin vermez. Bu ve bazı başka seçeneklerin anlamlarını ilerideki bölümlerde göreceğiz:
$ dmd merhaba.d -de -w -unittest
dmd
komut satırı seçeneklerinin tam listesini DMD Compiler sayfasında bulabilirsiniz.
-run
seçeneğini de kullanışlı bulabilirsiniz. -run
, kaynak kodun derlenmesini, programın oluşturulmasını, ve çalıştırılmasını tek komuta indirger. Bu seçenek komut satırındaki son derleyici seçeneği olmalı ve kaynak dosyadan hemen önce belirtilmelidir:
$ dmd -de -w -unittest -run merhaba.d Hello world! ← program otomatik olarak çalıştırılır
Geliştirme ortamı
Derleyiciye ek olarak bir geliştirme ortamı (IDE) da kurmayı düşünebilirsiniz. Geliştirme ortamları program yazma, derleme, ve hata ayıklama adımlarını kolaylaştıran programlardır.
Geliştirme ortamlarında program derlemek ve çalıştırmak, bir tuşa basmak veya bir düğmeye tıklamak kadar kolaydır. Yine de programların uç birimlerde nasıl derlendiklerini bilmeniz de önemlidir.
Bir geliştirme ortamı kurmaya karar verdiğinizde dlang.org'daki IDEs sayfasındaki seçeneklere bakabilirsiniz.
Türkçe harfler
Kitabın bölümleri bütünüyle Türkçe programlardan oluştuklarından çalıştığınız ortamda Türkçe harflerin doğru olarak görünmeleri önemlidir. Bunun için uç birim penceresinin UTF-8 kodlamasına ayarlanmış olması gerekir. (Linux gibi bazı ortamlarda uç birimler zaten UTF-8'e ayarlıdır.)
Örneğin, eğer bir Windows ortamında çalışıyorsanız karakter kodlamasını 65001'e ayarlamanız ve Lucida Console gibi bir TrueType font seçmeniz gerekir.
Merhaba dünya programının içeriği
Bu kadar küçük bir programda bile değinilmesi gereken çok sayıda kavram bulunuyor. Bu kavramları bu aşamada fazla ayrıntılarına girmeden şöyle tanıtabiliriz:
İç olanaklar: Her programlama dili kendi söz dizimini, temel türlerini, anahtar sözcüklerini, kurallarını, vs. tanımlar. Bunlar o dilin iç olanaklarını oluştururlar. Bu programda görülen parantezler, noktalı virgüller, main
ve void
gibi sözcükler; hep D dilinin kuralları dahilindedirler. Bunları Türkçe gibi bir dilin yazım kurallarına benzetebiliriz: özne, yüklem, noktalama işaretleri, vs...
Kütüphaneler ve işlevler: Dilin iç olanakları yalnızca dilin yapısını belirler. Bu olanaklar kullanılarak oluşturulan işlevlerin bir araya getirilmelerine kütüphane adı verilir. Kütüphaneler programların yararlanmaları amacıyla bir araya getirilmiş olan program parçacıklarından oluşurlar.
Bu programdaki writeln
işlevi, standart D kütüphanesinde çıkışa satır yazdırmak için kullanılan bir işlevdir. İsmi, "satır yaz"ın karşılığı olan "write line"dan gelir.
Modüller: Kütüphane içerikleri, kullanış amaçlarına göre gruplanmış olan modüllerdir. D'de kütüphaneler programlara bu modüller halinde tanıtılırlar. Bu programda kullanılan tek modül olan std.stdio
'nun ismi, "standart kütüphanenin standart giriş/çıkış modülü" olarak çevirebileceğimiz "standard input/output"tan türemiştir.
Karakterler ve dizgiler: Bu programdaki "Merhaba, Dünya!"
gibi bilgilere dizgi, dizgileri oluşturan elemanlara da karakter adı verilir. Örneğin bu programdaki dizgiyi oluşturan karakterlerden bazıları M
, e
, ve !
karakterleridir.
İşlem sırası: Program, işini belirli adımları belirli sırada tekrarlayarak yapar. Bu sıranın en başında main
isimli işlevin içindeki işlemler vardır; programın işleyişi, main
'le başlar. Bu küçük programda tek bir işlem bulunuyor: writeln
'li satırdaki işlem.
Büyük/Küçük harf ayrımı: Programda değişiklik yaparken dizgilerin içinde istediğiniz karakterleri kullanabilirsiniz, ama diğer isimleri görüldükleri gibi küçük harfle yazmaya dikkat edin, çünkü D dilinde büyük/küçük harf ayrımı önemlidir. Örneğin writeln
ile Writeln
D dilinde farklı isimlerdir.
Anahtar sözcük: Dilin iç olanaklarını belirleyen özel sözcüklere anahtar sözcük denir. Anahtar sözcükler dilin kendisi için ayrılmış olan ve özel anlamlar taşıyan sözcüklerdir; programda başka amaçla kullanılamazlar. Bu programda iki anahtar sözcük bulunuyor: Programa modül eklemeye yarayan import
ve buradaki kullanımında "hiçbir tür" anlamına gelen void
.
D'nin anahtar sözcükleri şunlardır: abstract
, alias
, align
, asm
, assert
, auto
, body
, bool
, break
, byte
, case
, cast
, catch
, cdouble
, cent
, cfloat
, char
, class
, const
, continue
, creal
, dchar
, debug
, default
, delegate
, delete
, deprecated
, do
, double
, else
, enum
, export
, extern
, false
, final
, finally
, float
, for
, foreach
, foreach_reverse
, function
, goto
, idouble
, if
, ifloat
, immutable
, import
, in
, inout
, int
, interface
, invariant
, ireal
, is
, lazy
, long
, macro
, mixin
, module
, new
, nothrow
, null
, out
, override
, package
, pragma
, private
, protected
, public
, pure
, real
, ref
, return
, scope
, shared
, short
, static
, struct
, super
, switch
, synchronized
, template
, this
, throw
, true
, try
, typedef
, typeid
, typeof
, ubyte
, ucent
, uint
, ulong
, union
, unittest
, ushort
, version
, void
, volatile
, wchar
, while
, with
, __FILE__
, __FILE_FULL_PATH__
, __MODULE__
, __LINE__
, __FUNCTION__
, __PRETTY_FUNCTION__
, __gshared
, __traits
, __vector
, ve __parameters
.
Bir kaç tanesi hariç, bu sözcükleri ilerideki bölümlerde göreceğiz: asm
ve __vector
bu kitabın kapsamı dışında kalıyor; body
, delete
, typedef
, ve volatile
emekliye ayrılmışlardır; ve macro
henüz D tarafından kullanılmamaktadır.
Problemler
- Programa istediğiniz başka bir şey yazdırın.
- Programı birden fazla satır yazacak şekilde değiştirin. Bunun için programa yeni bir
writeln
satırı ekleyebilirsiniz. - Programın başka yerlerinde değişiklikler yapın ve derlemeye çalışın; örneğin
writeln
satırının sonundaki noktalı virgül olmadığında derleme hatalarıyla karşılaştığınızı görün.