-
-
stroustrup bu mevzunun c++ durumu icin demis ki:
"c++ was strongly typed with a couple of holes in the type mechanism"
-
c'de bulunmayan özellik.
-
(bkz: generics) (bkz: collections) type-safety neden onemlidir ? su sekilde izah edeyim;
java (ya da c#) da herhangi bir collection kullandiniz diyelim, list olsun bu mesela. list elemanlari raw objelerden olusuyor, siz de string ekliyorsunuz, arada integer tipinde bir obje eklediniz. her neyse, programinizin baska bir kisminda, list'deki objeleri uc uca ekliyorsunuz, string oldugunu varsayarak ve haliyle runtime'da cast exception yiyorsunuz.
halbuki list eger generic olarak kullanilabiliyorsa, siz de string tipinde bir list olusturuyorsaniz, compile-time'da hata aliyorsunuz, ne guzel.
-
bir type system'ın safe olarak nitelenebilmesi için progress ve preservation özelliklerine sahip olması beklenir.
progress: well-type edilmiş terimler tıkanmamalıdır(stuck). well type edilmiş bir terim ya bir değerdir(value) yahut başka bir terime evrilebilmelidir(evaluation step).
preservation: well-type edilmiş t tipindeki bir terim evrildiğinde ortaya çıkan terimin tipi de t olmalıdır.
bir type system'ın bu özelliklere sahip olup olmadığı induction kullanılarak dilin evaluation ve typing kuralları üzerinden rahatça ispat edilebilir.