İki tip Type Checking mekanizması vardır ; Statik type checking ve dynamic type checking
Static Type Checking ( STC )
Bir variable tanımlarken bunun tipini compile time ‘ da belirtilmek zorundasındır ve artık o variable o tip üzerinden işlem görür.
int x = 10;
yazdiginda zaten static typing kullaniyorsun demektir. Yani compiler x degiskenini tipini taniyor. Java programlama dili static typing kullaniyor.
Dynamic Type Checking ( DTC )
Dynamic Type Checking yapan programlama dillerinde örneğin Ruby ;
x = 10;
yazabilirsin, hangi tipte oldugunu belirtmen gerekmiyor. Compiler yapilan isleme göre ya da x in sahip oldugu degere göre bu degiskenin tipini belirliyor, gerekirse baska bir tipe dönüstürebiliyor.
Artılar / Eksiler
Static Type Checking çok daha verimli bir kontrol yöntemi. Dynamic Type Checking de, run-time sırasında sürekli tip kontrolleri programı bir nebze yavaşlatmaktadır. Diğer tarafdan Static Type Checking, derleme esnasında tip kontrolleri yapıldığı için programın çalışması sırasında, ekstra tip kontrolü yapılmaz. Bu da uygulamaların çok daha verimli ve hızlı çalıştığı anlamına gelebilir.
STC, diğer yandan çok daha güvenlidir. Derleyici, derleme esnasında herhangi bir hata yakalamadı ise bir tip hatasının oluşmadığı kesindir. Bu yüzden program güvenli bir şekilde herhangi bir hataya maruz kalmadan çalışmasına devam eder. DTC de ise böyle bir kesinlik bulunmadığı için, bu tür güvenlik sağlamaz.
Dynamic Type Checking, run-time esnasında tip kontrollerini yaptığı için her değişkenin tip bilgisi hafızada saklanmak zorundadır. Değişkenlerin içeriğindeki değerler, her işlem sonrası değişebileceği için değişkenlerin o an hangi tipe sahip olduğunun bilinebilmesi bu bilgilere bağlıdır. Bu da ekstra bir hafıza yükü demektir. Diğer tarafdan STC, bu tür bilgilere ihtiyaç duymaz. Ek hafıza kullanımına gere kalmaz.
DTC, geliştiricilere çok büyük esneklik sağlar. Bazı uygulamalarda gelen verinin türünün bilinmediği durumlarda çok kullanışlıdır. Öte yandan programcılar, bir değişkene farklı noktalarda pek çok farklı değer atayabilir.
Kaynaklar :
http://www.cs.washington.edu/education/courses/cse341/04wi/lectures/13-dynamic-vs-static-types.html
Aslında kendimce şöyle özetleyebilirim DTC: Esneklik Ekstra Hafıza İhtiyacı. STC: Az Hafıza, Güvenirlik ve Daha Hızlı.
Elinize sağlık çok şahane bir yazıydı. 6 yıl geçmiş ama böylesi hala yok