15 Nisan 2015 Çarşamba

Static ve dynamic typing

Static typing

Bir programlama dilinde compile-time sırasında tip kontrolü yapılıyorsa ona statistically-typed language denir.
Java, c, c++ gibi diller statistically-typed dillerdir.

Type checking yani tip kontrolü, bir programın type-safe yani tipler açısından sorunsuz olup olmadığını kontrol etmek demektir.
Eğer bir programın bütün metodlarının argümanları doğru tipte ise type-safe demektir.

Java statistically-typed bir dil olduğundan, bir java programı compile edileceği zaman bütün metod parametreleri, değişkenler, return değerleri vb. de kullanılacak olan tip bilgileri bellidir.
Compiler bu hazır tip bilgilerinden yararlanarak strongly-typed bytecode'lar üretir.

Dynamic typing 

Bir programlama dilinde tip kontrolü runtime sırasında yapılıyorsa ona dynamically-typed language denir.
Javascript, Ruby gibi diller dynamically-typed dillerdir.

Bu dillerde compiler kodu derleyeceği zaman elinde tip bilgisi mevcut değildir.
Kaynakı kodunda değişkenler,vb.  tip bilgisi belirtilmeden yazılmıştır.
Nesnelerin tipleri sadece runtime sırasında belli olur.
Bu yüzden runtime sırasında tiplerin doğru olup olmadığının kontrolü yapılır.


Strong ve Weak typing

Bir programlama dilinde bir metoda yanlış tipte argümanlar verildiğinde hata alınıyorsa strongly-typed demektir. Java, Ruby strong typed dillerdir.

Aksi halde argümanların tipleri yanlış olduğunda otomatik olarak doğru tiplere çeviriliyorsa (type cast) weak typing uygulanıyor demektir.

Java SE7 ile gelen invokedynamic bytecode ile weak typing yaklaşımı kullanılabiliyor.

Hiç yorum yok:

Yorum Gönder