Git Nedir?

Sıradaki içerik:

Git Nedir?

e
sv

Compiler (Derleyici) Nedir?

18 Ekim 2024 17:31
compiler

Compiler, yani Türkçe karşılığıyla derleyici, bir programlama dilinde yazılmış kaynak kodunu bilgisayarın anlayabileceği makine diline (binary) çevirmek için kullanılan bir yazılımdır. Bilgisayarlar sadece 0 ve 1’lerden oluşan makine dilini anlarlar, ancak insanlar için bu dil oldukça karmaşıktır. Bu nedenle, programcılar daha anlaşılabilir olan yüksek seviyeli programlama dillerini kullanarak yazılım geliştirirler. Derleyiciler, bu yüksek seviyeli programlama dillerinde yazılan kodları alır, analiz eder ve ardından bu kodları makine dili veya ara kod olarak adlandırılan bir biçime dönüştürür. Bu süreç, yazılımın bir bilgisayar veya dijital cihaz üzerinde çalışmasını sağlar.

Derleyiciler, yazılım geliştirme süreçlerinin önemli bir parçasıdır, çünkü bir programın çalıştırılabilir hale gelmesi için mutlaka derlenmesi gerekir. Programlama dilleri gibi, derleyiciler de belirli bir programlama dili için özelleşmiş olabilir. Örneğin, C dilinde yazılmış bir programı çalıştırmak için bir C derleyicisi gereklidir. Benzer şekilde, Java dilinde yazılmış bir programı çalıştırmak için bir Java derleyicisi kullanılır.

compiler

Derleyicinin Çalışma Mantığı

Derleyicilerin temel amacı, yüksek seviyeli bir programlama dilini makine diline çevirmektir, ancak bu süreç birkaç aşamadan oluşur. Bu aşamalar, derleyicinin kodu nasıl işlediğini ve nasıl makine diline dönüştürdüğünü açıklar:

  1. Lexical Analysis (Lexikal Analiz): Derleyici ilk olarak, kaynak kodunu küçük parçalara, yani “token”lara böler. Bu adımda, koddaki anahtar kelimeler, değişkenler, sabitler ve operatörler gibi yapılar tanımlanır. Bu sürece “tokenizasyon” denir ve derleyicinin kaynak kodunu daha iyi anlaması için gereklidir.
  2. Syntax Analysis (Sözdizimi Analizi): Lexikal analizden sonra, derleyici bu tokenları alır ve dilin kurallarına göre bir yapı oluşturur. Bu adımda, kodun doğru sözdizimine (syntax) sahip olup olmadığı kontrol edilir. Eğer kod dilin kurallarına uygun değilse, derleyici bir hata mesajı üretir ve hatanın kaynağını geliştiriciye bildirir.
  3. Semantic Analysis (Anlamsal Analiz): Sözdizimi analizi başarılı olursa, derleyici bu aşamada kodun anlamını analiz eder. Bu adımda, değişkenlerin doğru şekilde kullanılıp kullanılmadığı, tür dönüşümlerinin doğru yapılıp yapılmadığı gibi kontroller yapılır. Yani, kodun yalnızca kurallara uygun olup olmadığı değil, aynı zamanda mantıksal olarak doğru olup olmadığı kontrol edilir.
  4. Optimization (Optimizasyon): Derleyici, kodu makine diline çevirmeden önce bazı optimizasyonlar yapar. Bu optimizasyonlar, kodun daha verimli çalışmasını sağlamayı hedefler. Örneğin, gereksiz kod parçalarını kaldırma, döngülerin daha verimli hale getirilmesi veya bellek kullanımının optimize edilmesi gibi işlemler bu aşamada gerçekleşir.
  5. Code Generation (Kod Üretimi): Derleyicinin son aşaması, kaynak kodu makine diline çevirmektir. Bu adımda, derleyici programın çalıştırılabilir bir biçimini oluşturur. Kod, işlemcinin anlayabileceği komutlar halinde dönüştürülür ve çalıştırılabilir dosya oluşturulur.
  6. Code Linking (Bağlayıcı İşlemi): Eğer program farklı dosyalardan oluşuyorsa veya dış kütüphaneler kullanıyorsa, bu dosyalar arasında bir bağlantı kurulması gerekir. Bu süreç “linking” olarak bilinir. Bağlayıcı (linker) adımında, farklı kod parçaları bir araya getirilir ve çalıştırılabilir nihai dosya oluşturulur.

Derleyicinin Türleri

Derleyiciler, çalışma biçimlerine ve hedefledikleri platformlara göre çeşitli türlere ayrılabilirler. İşte derleyicilerin başlıca türleri:

  1. Kaynak Kod Derleyicileri (Source-to-Source Compiler): Bu tür derleyiciler, bir programlama dilinde yazılmış kaynak kodu başka bir programlama diline çevirirler. Örneğin, C dilinde yazılmış bir kodu başka bir dile çevirmek için kullanılan derleyiciler bu kategoriye girer.
  2. Makine Kodu Derleyicileri: Bu derleyiciler, yüksek seviyeli bir programlama dilindeki kodu doğrudan makine diline (binary code) çevirir. Bu tür derleyiciler, programın çalıştırılabilmesi için nihai aşamadır. C, C++, Pascal gibi diller için kullanılan geleneksel derleyiciler bu türdedir.
  3. Ara Kod Derleyicileri: Bazı derleyiciler, kaynak kodunu doğrudan makine koduna değil, önce bir ara koda çevirirler. Örneğin, Java programları, Java Virtual Machine (JVM) üzerinde çalışmak üzere “bytecode” adı verilen ara koda çevrilir. Bu ara kod daha sonra JVM tarafından yorumlanarak çalıştırılır.
  4. Tek Geçişli ve Çok Geçişli Derleyiciler (Single-pass ve Multi-pass Compiler): Tek geçişli derleyiciler, kaynak kodu yalnızca bir kez tarar ve kodu doğrudan makine diline çevirir. Çok geçişli derleyiciler ise kodu birkaç kez analiz ederek daha ayrıntılı optimizasyonlar yapar.

Derleyicinin Avantajları

Derleyiciler, yazılım geliştirme süreçlerinde birçok avantaj sunar. İşte derleyicilerin sağladığı başlıca avantajlar:

  1. Yüksek Performans: Derlenmiş bir program, doğrudan makine dilinde çalıştığı için oldukça hızlı ve verimlidir. Bu, özellikle performansın kritik olduğu oyunlar, grafik programları veya veri yoğun uygulamalar gibi yazılımlar için büyük bir avantajdır.
  2. Hata Tespit ve Güvenlik: Derleyiciler, kodu derleme aşamasında sözdizimi ve anlamsal hataları kontrol eder. Bu, kodun derlenmeden önce hatasız olmasını sağlar ve geliştiricilere hataların kaynağını gösterir. Ayrıca, derleyiciler kodu sıkı bir şekilde kontrol ederek güvenlik açıklarının önlenmesine yardımcı olabilir.
  3. Bağımsız Çalıştırılabilir Dosyalar: Derleyiciler, kaynak kodu çalıştırılabilir dosyalar haline getirir. Bu sayede, bir program bir kez derlendikten sonra herhangi bir derleyiciye ihtiyaç duymadan doğrudan çalıştırılabilir.
  4. Kod Optimizasyonu: Derleyiciler, kodun daha verimli hale getirilmesi için çeşitli optimizasyonlar yapar. Bu optimizasyonlar, programın daha hızlı çalışmasını, daha az bellek kullanmasını veya işlemci kaynaklarını daha etkili kullanmasını sağlar.

Derleyici ile Yorumlayıcı Arasındaki Farklar

Derleyiciler ile yorumlayıcılar (interpreter) sık sık karıştırılsa da, bu iki yazılım arasında önemli farklar vardır. Derleyici, kaynak kodunu bir bütün olarak alır, analiz eder ve makine diline çevirir. Yani, derleyici bir programı tek seferde derleyip çalıştırılabilir bir dosya oluşturur. Öte yandan, yorumlayıcılar kaynak kodu satır satır çalıştırır ve her satırı anında yürütür.

  • Derleyici: Programın tamamını derleyip çalıştırılabilir bir dosya üretir. Kod, tümüyle makine diline çevrildiği için çalıştırma hızı çok yüksektir.
  • Yorumlayıcı: Kaynak kodu satır satır çalıştırır. Bu yüzden çalıştırma süresi derlenmiş bir programa göre daha yavaştır. Ancak anında hata tespiti ve düzeltme imkanı sağlar.

Örneğin, Python bir yorumlayıcı kullanırken, C ve C++ gibi diller derleyici kullanır. Derleyici kullanan programlar genellikle daha yüksek performans sunar, çünkü kod makine diline tamamen çevrildikten sonra çalışır.

Popüler Derleyiciler

Farklı programlama dilleri için kullanılan birçok popüler derleyici vardır. İşte bazıları:

  1. GCC (GNU Compiler Collection): GCC, özellikle C, C++ ve Fortran dilleri için kullanılan açık kaynaklı bir derleyicidir. Linux ve birçok Unix tabanlı sistemde yaygın olarak kullanılır.
  2. Clang: Clang, LLVM projesi kapsamında geliştirilen modern bir derleyicidir. C, C++ ve Objective-C dillerini destekler ve GCC’ye alternatif olarak kullanılır.
  3. Microsoft Visual C++: Microsoft’un Visual Studio geliştirme ortamında kullanılan bu derleyici, özellikle Windows tabanlı C++ projelerinde yaygındır.
  4. javac: Java için kullanılan bu derleyici, kaynak kodunu Java Virtual Machine (JVM) üzerinde çalışacak şekilde bytecode’a çevirir.

Sonuç

Derleyici (compiler), yazılım geliştirme dünyasında kaynak kodunu makine diline dönüştürerek programların çalışmasını sağlayan kritik bir araçtır. Derleyiciler, yazılımcıların daha hızlı, verimli ve hatasız programlar geliştirmelerine yardımcı olur.

Programlama dillerine özgü olarak geliştirilmiş derleyiciler, farklı platformlarda çalıştırılacak yazılımların derlenmesini sağlar ve kodun optimize edilmesi gibi ek avantajlar sunar. Yüksek performanslı ve güvenilir yazılımlar geliştirmek için derleyiciler, yazılım geliştirme süreçlerinde vazgeçilmez bir bileşendir.

Kaynak :
  • Site İçi Yorumlar

En az 10 karakter gerekli

Gönderdiğiniz yorum moderasyon ekibi tarafından incelendikten sonra yayınlanacaktır.