Yazılım Alt Yapıları (Software Frameworks)

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 :)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir