Static scoping ile en yakın değişken bindingin değeri atanır. Basit
bir şekilde programın metni okunup bu işlem yapılabilir. Programın
çalışırken (runtime) oluşturduğu stack içeriğine bakılmasına gerek
yoktur. Sadece metine bakması yeterli olduğu için bu tarz scopinglere
lexical scoping adı da verilir. Static scope, kodun anlaşılmasını
daha kolay hale getirdiği için daha moduler kodlar yazılmasını sağlar.
Tersi olarak dynamic scoping is programcının bütün olası stack
değerlerini ve karşılaşabileceği olasılıkları hesaplamasını
gerektirdiği için itici olabilir.

Örneğin aşağıdaki kod hem static hem de dinamik (dynamic) scoping ile çalıştırılabilir:

int x = 0;

int f () { return x; }

int g () { int x = 1; return f(); }
Şayet static scoping kullanılırsa g fonksiyonunun döndüreceği değer 0
olur çünkü, static scopingin o sırada fonksiyon stackinde ne olduğu ile
ilgisi yoktur ve x değerinin son hali olan 0ı alır.

tersi olarak dynamic scoping kullanarak bu kod çalıştırılacak olsaydı g
fonksiyonunun döndüreceği değer 1 olacaktır. Çünkü g fonksiyonu terk
edilmeden önce x in değeri 1 di ve bu bilgi stackten alınır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir