Özellikle son 10 yılda birçok
programlama dili geliştirildi. İnanılmaz sayıda programlama dili tasarlanıp
onlara yeni özellikler ekleniyor.
Teknolojinin sürekli gelişmesi ve
günümüz ihtiyaçlarının sürekli artmasına bağlı olarak yazılım sektörü de
büyüyor. Yazılım geliştirme süreçlerinde kullanılan araçlardan birisi de
programlama dilleri. Bir Developer bütün programlama dillerini bilemeyeceği
için,farklı projelerde kullanılan farklı programlama dillerine adaptasyon biraz
zor olabiliyor. Programlama dilleri açısından amaç değişmiyor;bilgisayara
derdimizi anlatabilmek. Tek farklılık gösteren nokta ise yazılım geliştirirken
izlenilen yollar ve kullanılan metodlar. Bu sebepten programlama dilleri bazı
noktalarda birbirinden ayrılıyor. Bu noktalardan birisi de Tip Sistemleri.
Bir programlama dilini incelemeye
başladığımızda önümüze ilk olarak tip konuları hakkında bilgiler gelir. Örneğin;
Java Static Type Checking yapar veya Python Dinamic Type Checking yapar ibarelerini görürüz. Bu
bilgiler bize dilin mantığının kavranması ve geliştirilmesinde büyük rol oynar.
Programlama dillerinde tip
sistemleri, değerleri belirli tiplerde gruplarlar. Aynı değerler,belirlenen tip
adı altında gruplanarak yazılım geliştiricilerin veriyi çok daha etkili ve
anlamlı kullanmasına olanak sağlar. Verinin işlenip çıktı olarak alınması
noktasında verilerin etkili ve hataya yol açmadan işlenmesi çok önemlidir. Birbirinden
alakasız veriler üzerinde işlem yapılması tip sistemlerinin getirdiği bu
özellik sayesinde önlenir. Örneğin; Bir İnteger ile bir Boolean değer aynı
ifade içinde kullanılıp anlamsız bir değer çıkması tip sistemleri sayesinde
önlenir.
Programlama dillerinde yapılan
her işlem öncesi hataları önlemek için verilerin tip kontrolü yapılır. Bu tür
kontrollere ”Checking” adı verilir. Checking
işlemleri compile-time (derleme esnasında) veya run-time (çalışma esnasında)
olarak yapılır. İşte bu farklılık Statik Tipli ve Dinamik Tipli dillerin temel
ayrım noktalarından biridir.
Statik Tipli dillerde her
değişkenin değişmez bir tipi olmak zorundadır. Developer ya bu tipi bizzat
belirler yada Derleyici tarafından belirlenir. Statik Tipli dillerde yapılan
işlemlerden önce Tip Konrolü yapıldığı için, operandların tiplerinin belirlenmesi
gerekir. Tip kontrolleri compile (derleme) esnasında yapılır. Bu tarz dillere
örnek olarak Java, C, C++ ,C# ,F# ,Ada ,Fortran ,Haskell ,ML ,Objective-C ,Pascal
dilleri verilebilir.
Dinamik Tipli dillerde değerler
değişmez bir tipe sahiptir. Ancak değişkenler ve ifadelerin belirli bir tipe
sahip olma zorunlulukları yoktur. Her bir işlem esnasında, operandlar değişik
değerler üretebilir. Değişkenlerin ve ifadelerin tipleri run-time (çalışma)
esnasında belirlenir. Bu tarz dillere örnek olarak Groovy, Javascript, Lisp, Lua,
PHP, Prolog, Python, Ruby, Smalltalk dilleri verilebilir.
Statik Tipli Diller ile Dinamik
Tipli dillerin birbirlerine üstünlükleri konusunda birçok fikir ortaya
atılıyor. İkisinin de birbirlerine üstün oldukları noktalar var.
Statik Tipli dillerde derleme (compile-time)
esnasında tip kontrolü yapıldığı için programın çalışması esnasında ekstra tip
kontrolü yapılmaz, bu da uygulamanın çok daha verimli ve hızlı çalışması
anlamına gelir. Dinamik Tipli dillerde ise çalışma (run-time) esnasında kontrol
yapılması ufak da olsa bir yavaşlamaya sebep olmaktadır. Ayrıca yine bu
özellikten dolayı her değişkenin tip bilgisi hafızada saklanmak zorundadır. Bu
durum ekstra bir hafıza yükü anlamına gelir. Statik Tipli dillerde derleme (compile-time)
esnasında tip kontrolü yapıldığı için ekstra bir hafızaya gerek duyulmaz.
Statik Tipli dillerde derleme (compile-time)
esnasında herhangi bir hata yakalanmadı ise tip hatası oluşmamış demektir yani
Dinamik Tipli dillere nazaran çok daha güvenlidir. Dinamik Tipli dillerde ise
böyle bir kesinlik bulunmaz. Öte yandan Dinamik Tipli diller Developer’lara çok
büyük esneklik sağlar. Gelen verinin türünün bilinmediği uygulamalarda çok
kullanışlıdır. Ayrıca Developer’lar bir değişkene farklı noktalarda farklı
değerler atayabilirler.
Hiç yorum yok:
Yorum Gönder