Alıntı (Abdullah):
> Yani her yorumlayıcı/derleyici önce yorumlayıp sonra derliyor, ama bunu yaptıkları zaman farklı.
Aslında yorumlama ve derleme kavramları yine de farklı: Yorumlayıcı 'a+b' gibi bir kod gördüğünde
-
Metinde "a" diye bir şey geçti. Acaba böyle bir değişken biliyor muyum?
-
Eğer varsa, (örneğin bir eşleme tablosunda) bakayım değeri neymiş. (Örneğin, bundan Değer türünde gibi bir değişken üretiyor)
-
(Aynısını b için yapıyor)
-
Şimdi "+" adlı bir işlev biliyor muyum?
-
Varsa, iki Değer değişkenini ona gönderiyor.
-
Toplama işlemi Değer'lerin türlerine teker teker bakarak int olduklarını görünce örneğin "42" ve "10" gibi dizgiyi int'e dönüştürüyor ve iki int toplama işlemini çağırıyor
Derleyicinin oluşturduğu kodun kafasında çalışma zamanında en ufak bir soru yok. Hatta "a" ve "b" gibi değişken bile yok. Derlenmiş olan kod şunun gibi bir şey söylüyor:
- TOPLA(yığıtın_başı - 8, yığıtın_başı - 4)
(TOPLA, CPU'nun bir komutu olsun, yığıtın_başı da yığıtın başını gösteren yazmaç (register).) Yani, derleyici programcının "a" ve "b" dediği değişkenleri örneğin "yığıtın şurasındaki 4 bayt" ve "yığıtın orasındaki 4 bayt" diye kurguluyor.
Dolayısıyla, yorumlayıcı ve derleyicinin işledikleri zamanların farklı olması dışında uyguladıkları işlemler de oldukça farklı.
(Not: Yorumlayıcı daha akıllı davranıp benim gösterdiğim soruların bazılarını sonradan sormaya gerek olmasın diye bir şekilde saklayabilir. Buna çalışma zamanında kendisi karar verebileceği gibi, Python vs.'den bildiğimiz gibi önceden yapabilir.)
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]