Bu yazıda derlenen ve yorumlanan dillerin farkı, derleyici ile yorumlayıcının görevi ve PHP'nin neden bir betik dili olduğu örneklerle anlatılmaktadır.
Bilgisayar bizi nasıl anlar?
Bilgisayar yalnızca 0 ve 1'lerden oluşan makine dilini anlar. Biz ise echo "Merhaba"; gibi insanın okuyabildiği komutlar yazarız. Bu komutlar bilgisayarın anlayacağı dile çevrilmek zorundadır. Çeviri işini iki farklı yöntemle yapabiliriz:
- Derleme (compile): Tüm program önce baştan sona çevrilir, sonra çalıştırılır.
- Yorumlama (interpret): Program çalıştırılırken satır satır çevrilir ve hemen uygulanır.
Betik dil ile programlama dili ayrımının temelinde bu iki yöntem yatar.
Programlama dili (derlenen diller)
Kodu yazarsın, derleyici (compiler) programın tamamını makine diline çevirir ve çalıştırılabilir bir dosya (örneğin .exe) üretir. Program artık bu dosyadan çalışır.
Örnekler: C, C++, Pascal, Java (kısmen)
Benzetme: Yabancı dilde yazılmış bir kitabın tamamını önce tercüme ettirip basmak gibidir. Sonra herkes Türkçe baskıyı okur.
Avantajları:
- Çalışma hızı yüksektir.
- Çalıştırılabilir dosya, kaynak kodu paylaşılmadan dağıtılabilir.
Dezavantajları:
- Her değişiklikten sonra yeniden derlemek gerekir.
- Derlenen dosya genellikle yazıldığı işletim sistemine özeldir.
Betik dil (yorumlanan diller)
Kodu yazarsın, yorumlayıcı (interpreter) kodu çalışma anında satır satır okur ve uygular. Ayrı bir çalıştırılabilir dosya oluşmaz, kaynak kod doğrudan çalışır.
Örnekler: PHP, JavaScript, Python
Benzetme: Yabancı bir konuşmacının yanında yeminli bir tercümanın o anda cümle cümle çeviri yapması gibidir.
Avantajları:
- Kodu değiştirip kaydeder, hemen sonucu görürsün. Öğrenmesi ve denemesi kolaydır.
- Farklı sistemlerde, yorumlayıcı kurulu olduğu sürece çalışır.
- Web programlamada hızlı geliştirme sağlar.
Dezavantajları:
- Aynı işi yapan derlenmiş programa göre genellikle daha yavaştır.
- Kaynak kod, çalışması için sunucuda durmak zorundadır.
Karşılaştırma tablosu
| Özellik | Derlenen dil | Betik (yorumlanan) dil |
|---|---|---|
| Çeviri şekli | Tamamı önce çevrilir | Çalışırken satır satır çevrilir |
| Çeviren yazılım | Derleyici | Yorumlayıcı |
| Çalıştırılabilir dosya | Oluşur (.exe vb.) |
Oluşmaz, kaynak kod çalışır |
| Hız | Daha hızlı | Daha yavaş |
| Hata görme | Derleme sırasında | Çalışma sırasında |
| Örnek | C, C++, Pascal | PHP, JavaScript, Python |
Örnekle görelim
C dili (derlenen):
#include <stdio.h>
int main() {
printf("Merhaba Dünya");
return 0;
}
Bu kodu çalıştırmak için önce derlersin (gcc merhaba.c -o merhaba), ardından oluşan merhaba dosyasını çalıştırırsın.
PHP (betik):
<?php
echo "Merhaba Dünya";
?>
Bu dosyayı merhaba.php olarak kaydedersin. Derleme adımı yoktur, sunucu dosyayı açar, PHP yorumlayıcısı okur ve çıktıyı üretir.
PHP neden betik dilidir?
- Kodu yorumlayıcı çalıştırır, derlenmiş bir
.exedosyası üretilmez. - Kod dosyaları sunucuda düz metin olarak durur ve istek geldiğinde çalıştırılır.
- Genellikle bir web sayfasının içine gömülerek ya da bir web sunucusunun yanında çalışarak küçük görevleri otomatikleştirmek için kullanılır.
Önemli not: Aslında hepsi programlama dilidir
Okul kitaplarında "betik dil" ve "programlama dili" ayrı başlıklar olarak anlatılır, ama günlük hayatta bu ayrım keskin değildir. PHP, Python ve JavaScript de birer programlama dilidir, onlarla da karmaşık uygulamalar yazılabilir. "Betik dil" ifadesi, bir dilin nasıl çalıştığını (yorumlanarak) ve genelde nerede kullanıldığını (başka bir yazılımın içinde, otomasyon ve web gibi) belirtir. Bu yüzden sınavda "betik dil – programlama dili" ayrımı sorulduğunda derleme / yorumlama farkı üzerinden cevap vermek doğru olur.
Sık yapılan yanlışlar
- "Betik dil programlama dili değildir." Yanlış. Betik diller de programlama dilidir, yalnızca çalışma yöntemleri farklıdır.
- "Yorumlanan diller kötüdür, derlenenler iyidir." Yanlış. Her ikisinin de kullanım alanı farklıdır. Web için PHP ve JavaScript çok uygundur.
- "PHP kodunu çift tıklayıp tarayıcıda açarım." PHP'yi bir web sunucusu çalıştırır. Dosyayı doğrudan açarsan kod çalışmaz, metin olarak görünür. Bunu kurulum yazısında XAMPP ile çözeceğiz.