Ana sayfateknolojiYazılım ve ProgramlamaDerleyici Nedir?
💻
Teknoloji · Konu Anlatımı

Derleyici Nedir? Kaynak Kod Nasıl Çalıştırılabilir Programa Dönüşür?

Programlamaya Giriş· Genel· 5 dk okuma· Son güncelleme: 27 Ağustos 2026
Öğreniyo İçerik Ekibi tarafından hazırlandı · Editör: Yusufhan Seyis
Bu içerik taslak aşamasında — henüz yayına alınmadı.
Kısaca

Derleyici, bir programlama dilinde yazılan kaynak kodu bilgisayarın çalıştırabileceği hedef koda dönüştüren yazılımdır. Bu işlem; kodun okunması, yapısının ve anlamının denetlenmesi, ardından çıktı üretilmesi gibi aşamalardan geçer. Kaynak kod, hedef kod ve çalıştırılabilir dosya arasındaki farklar da bu süreçte açıklık kazanır.

Bu yazıda (5)

Derleyici, programcının yazdığı kod ile bilgisayarın doğrudan işleyebildiği talimatlar arasında dönüşüm kurar. Böylece insan tarafından okunabilir bir program, işletim sistemi ve işlemci tarafından çalıştırılabilecek bir biçime hazırlanır.

Derleyicinin tanımı ve temel görevi

Derleyici, bir programlama dilinde yazılmış kaynak kodu başka bir dile veya gösterime çeviren yazılımdır. Programlama bağlamında bu hedef çoğunlukla assembly, nesne kodu ya da makine kodu gibi daha düşük seviyeli bir biçimdir. Temel amaç, programcının anlaşılır ifadelerle yazdığı talimatları bilgisayarın işleyebileceği çıktıya dönüştürerek çalıştırılabilir bir program oluşturma sürecine katkı sağlamaktır.

Derleyici bunu yalnızca karakterleri başka karakterlerle değiştirerek yapmaz. Önce kaynak kodun dil kurallarına uygun parçalarını belirler, bu parçaların cümle yapısını inceler ve ifadelerin anlam bakımından tutarlı olup olmadığını kontrol eder. Ardından programın iç yapısını kullanarak hedef koda dönüştürülebilecek bir temsil oluşturur ve uygun çıktı üretir. Örneğin bir programda iki sayıyı toplayan bir ifade varsa derleyici, bu ifadenin toplama işlemi olduğunu tanıyıp hedef dildeki ilgili talimatlara dönüştürür. Bilgisayar daha sonra bu talimatları işlemcinin anlayacağı biçimde kullanabilir.

Derleyici, kaynak kod ile çıktı arasındaki dönüşümü tanımlı bir süreçle gerçekleştirir; bu nedenle programın yazılması ile çalıştırılması arasında önemli bir araçtır. Derleyici tasarımı ve derleyici yazma teknikleri ise bu aracın nasıl geliştirildiğini inceleyen ayrı bir konudur. Yorumlayıcı da kaynak kodu çalıştırılabilir hâle getirmeye hizmet eder; ancak bunu genellikle kaynak kodu doğrudan makine koduna dönüştürmeden, kodu veya ara biçimi çalıştırarak yapar. Bağlayıcı ise derleme sürecinde üretilen parçaları ve gerekli bileşenleri bir araya getirerek son programa giden aşamada görev alabilir.

Kaynak kodun hedef koda dönüştürülmesi

Kaynak kod, programcının bir programlama dilinin kurallarını kullanarak yazdığı metindir. Hedef kod ise derleyicinin bu metinden ürettiği ve belirli bir çalışma ortamına yönelik olan çıktıdır. Hedef kod doğrudan işlemcinin makine kodu olabileceği gibi assembly, nesne kodu veya başka bir ara gösterim de olabilir. Bu yüzden her derleyicinin çıktısı aynı türde olmak zorunda değildir.

Dönüşüm sırasında derleyici, kaynak koddaki yapıların bilgisayar işlemlerine karşılığını kurar. Bir değişkenin tanımlanması, bir koşulun sınanması veya iki değerin toplanması gibi ifadeler, hedef dilde bunları gerçekleştirecek talimat ve veri düzenine çevrilir. Derleyici kaynak programı analiz ederek bir ara temsil de oluşturabilir; bu temsil, kaynak kod ile hedef kod arasında düzenli bir geçiş katmanı görevi görür. Son aşamada hedef platforma uygun kod üretilebilir.

Örneğin sonuc = a + b biçimindeki bir kaynak ifade, derleyici tarafından önce değişkenlerin ve toplama işleminin yapısı anlaşılacak şekilde incelenir. Daha sonra bu işlem, hedef koddaki ilgili değerleri alıp toplama ve sonucu uygun yere yazma talimatlarına karşılık gelecek biçimde üretilir. Ortaya çıkan çıktı insanın yazdığı kaynak ifade kadar okunaklı olmayabilir; asıl amacı bilgisayarın programı çalıştırabilmesidir. Derleyici optimizasyonları, bu dönüşüm sırasında hedef çıktının çeşitli özelliklerini iyileştirmeyi ele alan ayrı bir konudur.

Derleme sürecinin temel aşamaları

Derleme tek bir işlemden ibaret değildir. Ön işleme varsa makro değiştirme veya koşullu derleme gibi hazırlıklar yapılabilir. Ardından sözcüksel çözümleme, kaynak metni anahtar kelime, tanımlayıcı, işleç ve sabit gibi küçük anlamlı parçalara ayırır. Sözdizimi çözümlemesi bu parçaların programlama dilinin kurallarına göre doğru biçimde birleşip birleşmediğini inceler ve programın yapısını bir ağaç olarak temsil edebilir.

Sonraki aşama olan anlamsal çözümleme, yapısı doğru görünen ifadelerin anlam bakımından da uygun olup olmadığını denetler. Örneğin türlerin birbiriyle uyumu, bir değişken veya işlev adının doğru tanıma bağlanması ve bazı değişkenlerin kullanılmadan önce uygun biçimde hazırlanması kontrol edilebilir. Bu aşamalarda sorun yoksa derleyici programın iç temsilini hedef koda çevirir; bazı derleyiciler arada kodu düzenlemek veya dönüştürmek için ek aşamalar kullanır. Çıktı daha sonra gerekli araçlarla birleştirilerek çalıştırılmaya hazırlanabilir.

Kaynak kod, hedef kod ve çalıştırılabilir dosya arasındaki fark

Kaynak kod, programcının yazdığı ve insanlar tarafından okunup değiştirilebilen program metnidir. Örneğin bir programlama dilindeki sınıf, işlev, değişken ve koşul ifadeleri kaynak kodun parçalarıdır. Hedef kod, bu kaynak kodun derlenmesi sonucunda oluşan daha düşük seviyeli veya ara biçimli çıktıdır. Hedef kodun biçimi, derleyicinin hangi çıktı türünü üretmek üzere çalıştığına bağlıdır.

Çalıştırılabilir dosya ise işletim sisteminin bir program olarak başlatabileceği son üründür. Derleyicinin ürettiği hedef kodun çalıştırılabilir dosyaya dönüşmesi için dosyanın biçiminin çalışma ortamına uygun olması ve programın ihtiyaç duyduğu kod parçalarının bir araya getirilmesi gerekebilir. Bu nedenle kaynak kod ile çalıştırılabilir dosya aynı şey değildir: kaynak kod programın yazılı açıklaması, hedef kod derleme çıktısı, çalıştırılabilir dosya ise sistemin başlatabileceği paketlenmiş sonuçtur.

Basit bir hesaplama programında programcının yazdığı toplama ifadesi kaynak kodda açıkça görülür. Derleme sonrasında bunun karşılığı hedef kodda daha düşük seviyeli talimatlar hâlinde bulunur; çalıştırılabilir dosya ise bu talimatları ve programın çalışması için gereken düzeni işletim sisteminin açabileceği bir dosya biçiminde sunar.

Derleme hatasının temel anlamı

Derleme hatası, derleyicinin kaynak kodu hedef koda dönüştürmeden önce yaptığı incelemelerde programın kurallara veya beklenen anlam ilişkilerine uymayan bir durum bulmasıdır. Sözdizimi hatasında ifadelerin kuruluşu dilin kurallarına uymaz; anlamsal denetimde ise yapı doğru görünse bile tür, tanım veya kullanım ilişkilerinden biri uygun olmayabilir.

Derleyici bu kontrolleri kaynak kodu çalıştırmadan önce yaptığı için hata, programın çalışması sırasında ortaya çıkan bir sonuçtan farklıdır. Örneğin eksik bir ayraç programın cümle yapısının anlaşılmasını engelleyebilir. Bir işlemde uyumsuz türlerin kullanılması veya tanımlanmamış bir adın çağrılması da anlamsal denetimde reddedilebilir ya da uyarı oluşturabilir. Derleyici gerekli düzeltmeler yapılmadan hedef kod üretmeyebilir; böylece hatalı kodun çalıştırılabilir programa dönüşmesi engellenir.

Günlük hayatta

Bir C programı yazıldığında kaynak dosya doğrudan çalıştırılmaz; derleyici bu dosyayı hedef çıktıya dönüştürür ve ortaya çıkan çalıştırılabilir dosya işletim sisteminden başlatılır.

Sınavda

Derleme hatası ile çalışma zamanı hatası karıştırılmamalıdır: derleme hatası, program çalıştırılmadan önce kaynak kodun yapısı veya anlamı denetlenirken ortaya çıkar.

Sık sorulan sorular

Derleyici ne yapar?

Programlama dilinde yazılmış kaynak kodu, bilgisayarın veya hedef çalışma ortamının kullanabileceği hedef koda dönüştürür.

Kaynak kod ile çalıştırılabilir dosya arasındaki fark nedir?

Kaynak kod programcının yazdığı metindir; çalıştırılabilir dosya ise işletim sisteminin program olarak başlatabildiği son çıktıdır.

Hedef kod mutlaka makine kodu mudur?

Hayır. Hedef kod makine kodu olabileceği gibi assembly, nesne kodu veya başka bir ara gösterim de olabilir.

Derleme hatası ne zaman ortaya çıkar?

Derleyici kaynak kodu hedef koda dönüştürmeden önce sözdizimi ve bazı anlamsal kuralları denetlerken ortaya çıkar.

Yorumlayıcı ile derleyici arasındaki temel fark nedir?

Derleyici genellikle kaynak koddan önceden bir hedef çıktı üretir; yorumlayıcı ise kaynak kodu veya ara biçimi doğrudan çalıştırır ve makine koduna dönüştürme biçimi farklıdır.

Kaynaklar
SıradakiYorumlayıcı