Merhabalar,
Yazdığımız programlar büyüdükçe, eğer herhangi bir methodoloji kullanmıyor isek, değişiklik veya eklenti yapmak gittikçe zorlaşır. Yazılımcılar, bu tür problemleri aşmak için “framework”ler üretmeye başladılar. Günümüzde, “framework” deyince çok geniş bir yelpaze karşımıza çıkmakta. Bu geniş yelpaze içerisinde istenilen Özelliklere uygun bir yapı bulmak gittikçe zorlaşmakta. Belki bu yelpazeyi biraz olsun daraltmak ve kategorilere ayırmaya çalışırmak bu konuda bizlere yardımcı olabilir. Bu nedenle normal dillerde olduğu gibi düşük, orta ve yüksek seviyeli gibi terimler kullanmak belki bizlere yardımcı olabilir.
Düşük seviyeli “framework” lerin tanımını yapacak olursak; “Bu tipte yer alan yapıların, kendi derleyicileri ve/veya çalışma ortamları yoktur. Herhangi bir kum havuzunda değil, tüm makina üzerinde çalışırlar”. Bu yapılara Örnek olarak TCL(Think Class Library), MFC(Microsoft Foundation Class veya orjinal adı ile AFX: Application Framework eXtensions), ATL (Active Template Library), WTL (Windows Template Library) ve OWL (Object Windows Library) yapıları verilebilir.
Orta seviyeli “framework” lerin tanımını yapacak olursak; “Bu tipte yer alan yapıların, kendi derleyicileri, kendi çalışma ortamları mevcuttur. Kısaca bir kendilerine ait olan bir kum havuzunda çalışırlar. Bununla beraber dış dünyaya erişmek için kum havuzunun dışına çıkan yetenekleri de olabilir.” diyebiliriz. Bunlara Örnek vermek gerekir ise; Java, .NET, Ruby, Python, PHP gibi dilleri Örnek verebiliriz. Hemen aranızdan bazılarının itiraz ettiğini duyar gibi oldum “Java ile .NET diğerlerinden farklı.. onlar derleniyor… diğerleri script dilleri bir fark olmalı.”. Evet belki ‘derleyici mühendisliği’ açısından farkları olduğu açık ama son kullanıcı için yani, bu yapıları kullanan yazılımcılar için bir farka sahip olduklarını sÖylemek çok zor.
Java ve .NET gibi yapılar bizim yazdığımız kodları ortak bir başka dile belirli optimizasyon yÖntemleri kullanarak çevirir (Örneğin MSIL) ve daha sonra çok esnek ve profesyonel bir ‘cache’ mekanizması ile yazdığımız programlar bu framework’ler tarafından çalıştırılır. Diğer taraftan script dilleri olarak yorumladığımız Ruby, Python ve PHP gibi diller başka bir dile çevrilmezler, ‘cache’ mekanizmaları da yoktur. Ama bu diller de aynı Java ve .NET gibi framework’ler tarafından çalıştırılır. Yani Ruby, Python ve PHP gibi script dilleri ile .NET ve Java gibi diller arasında başka bir dile çeviriliyor olmaları ve ‘cache’ yetenekleri dışında bir fark yoktur. Günümüz yazılım dünyasında ise, Özellikle hafıza, hız gibi kısıtlamaların gittikçe kalktığı bir yazılım dünyasında bu tür farklardan dolayı ayrı kategorilerde yer almak sanırım tüm bu dillere karşı bir haksızlık olur.
Yüksek seviyeli “framework” lerin tanımını yapacak olursak; “Bu tipte yer alan yapıların, kendi derleyicileri yoktur fakat bir kum havuzu üzerinde çalışırlar. Yani bir orta seviyeli framework’ün üzerinde belirli bir methodoloji ile yazılmış yapılardır” diyebiliriz. Örnek vermek gerekir ise; Ruby on Rails, Pylons, TurboGears ve hiç adını duymasam da wikipedia’da karşıma çıkan ‘ColdFusion on Wheels’ Örnek olarak verilebilir.
Sonuç olarak; eğer bir makina otomasyonu yapacaksak, düşük seviyeli bir “framework” seçmek, bir internet uygulaması yapacak ise, orta veya yüksek seviyeli bir framework seçmek daha doğru olacaktır. Ama gerçekten az kişi ile çok büyük (Özellikle internet) uygulamalar yapmak istiyor isek, yüksek seviyeli “framework”lerden başka çaremiz olmadığı bir gerçektir.
Kolay gelsin :)