Her şey “Hello World” ile başlıyor bu alemde. Ardından adınızı, soyadınızı yazdırıyorsunuz. Bir sonraki adım genelde 4 temel işlemi yapan hesap makinesi oluyor. Ve merakınıza, ilginize, ayırdığınız zamana, hedeflerinize bağlı olarak gelişiyor.
Programlama ile bir süre uğraşan kişiler, eninde sonunda “framework” kelimesi ile karşılaşıyorlar. Bu noktada işler karışıyor işte. Kullananı, kullanmayanı, savunanı, karşı çıkanı derken toz duman ortalık.
Nedir “framework” ?
Basit olarak kod iskeleti diyebiliriz. Kod yazarken, her projede işimize yarayacak kod blokları vardır mutlaka. Veritabanına erişmek için, kullanıcıdan gelen verileri doğrulamak için, veriyi belirli bir formatta yazdırmak içi vb. Her farklı projede bu kodları yeniden yazmak haliyle boşuna zaman kaybı. Programlamanın ilk aşamalarında, bir projede kullandığımız kodları kopyala-yapıştır ile diğer projelerde kullanma yoluna gideriz. Ancak daha karışık projeler ile uğraşmaya başladığımızda bu da yeterli olmaz. Örnek olarak, mysql üzerine olan bir projede kullandığımız kodları, başka bir veritabanı ile aynı şekilde kullanamayız. Veya verileri tarayıcıda göstermek için kullandığımız kodu, verileri pdf veya başka bir formatta göstermek istediğimizde, elimizdeki kodu yeniden düzenleriz. Sonuç olarak, yazdığımız kod giderek karmaşık bir hal alır. Ve bir süre sonra, çarpık yapılaşmanın sonucu olarak hatalar veren, yavaş çalışan güvensiz bir hale gelir. Bu durumu tabir etmek için genelde spagetti terimi kullanılır ki, pek hoşuma gidiyor (:
Diğer bir yönden bakınca, diyelim ki bir projeyi programladınız, bitirdiniz, teslim ettiniz. Ve 1 sene sora müşteriniz gelerek projeye çeşitli eklentiler yapmanızı istedi. Belirli bir yapı kullanmadıysanız eğer, projenin sistemini çözmek için yazmaktan daha çok zaman harcamanız olası. Yeni özellikler eklemeye elverişli bir yapısı yoksa, vay halinize. Veya, bir firmada işe girdiniz. Patronunuz, sizden önceki çalışanın programladığı proje üzerinde değişiklikler yapmanızı istedi. Projenin kodlarınız açtınız ve karşınızda birbiri içine girmiş binlerce satır var. Kolaysa çıkın işin içinden.
İşte bu noktada işin içine “framework”ler giriyor. Benzer sorunları yaşayan programcılar bir araya gelerek, tekrar tekrar kullanılan fonksiyonların derli toplu halde bulunduğu, kodlamanın belirli bir yapı üzerinden yapıldığı sistemler geliştirerek programlama dünyasına sundular. Amaç, her projede ortak olarak kullanılan temel kodları her seferinde sıfırdan yazmak yerine, “framework” içinde olan hazır kodları kullanarak daha kısa zamanda proje geliştirilebilmesine imkan sağlanması, projelerin belirli bir standarda göre kodlanması ile, farklı kişilerin aynı proje içinde binlerce satır içinde kaybolmadan kolayca çalışabilmesi.

PHP ile ilgili arama yaparak farklı pek çok alternatif “framework” bulabilirsiniz. İncelediğim kadarıyla en çok hoşuma gideni Codeigniter. Burada ise popüler PHP “framework”leri arasında detaylı karşılaştırma yapılmış.
Ben de ilk büyük projem olan Odtü Sözlük’ü kodlarken karşılaştım “framework”ler ile. Ancak ilk incelemelerimde pek karışık geldi, kendi “framework”ümü kodladım bende. Daha sonra detaylı incelediğim de, eğer “framework” kullansaydım çok daha kısa zamanda projeyi tamamlayabileceğimi fark ettim. Sıfırdan yazdığım pek çok kod bloğu hazır hazır halde vardı incelediğim “framework”lerde. Çözmek için günlerce uğraştığım sorunların çözümü zaten yapılmış ve dahil edilmişti.
Daha kısa sürede, daha kolay kodlamak. Karmaşadan uzak kalmak. Her şey iyi güzel de, performans konusunda fanatik denebilecek kadar takıntılı biri olarak, aklıma takılan noktalar var. ( Bu takıntı öyleki, tek bir if sorgusu, sayfada fazladan 1kb veri bile beni çok rahatsız eder.)
“Framework”ler, çeşitli platformlarda çalışabilmesi, ve aynı kodun pek çok yerde kullanılabilmesi için yazılıyorlar. Her türlü projede kullanılabilmesi için, pek çok kütüphane var içlerinde. Örnek vermek gerekirse, veritabanı erişim sınıflarında, hangi veritabanının kullanıldığının belirlenmesi, verilerin formatının seçilmesi gibi pek çok sorgu var. Benim projemde ise veriler tek bir formatta, ve mysql kullanıyorum. Bu durumda, “framework” içindeki bu sorgular, benim programıma gereksiz yük katıyor. Bunun gibi pek çok örnek verilebilir. Hazır bir “framework” kullanarak belki zamandan kazanıyorum ama, uzun süreli olarak düşünürsek çalışabileceğinden daha yavaş bir koda sahip oluyorum. Bunun yerine kendi “framework”ümü yazsam, programlaması daha uzun zaman alacak belki ama, daha performanslı olacak. Evet, küçük ve performansın pek de önemli olmadığı projelerde “framework” kullanmak faydalı olacaktır, peki büyük çaplı projelerde?
Siz ne düşünüyorsunuz bu konuda?
Not : Uzmanlık alanım PHP üzerine olduğundan dolayı, programlama derken internet tabanlı programlama dillerini kastediyorum. Temelde aynı mantık geçerli olsa da yer yer farklılıklar olabiliyor, anlam karmaşası olmasın sonra.
Not2 : Türkçesever biri olarak İngilizce kelimeleri Türkçe yazarken kullanmayı hiç sevmem, bununla birlikte “framework” kelimesi yerine iskelet demek, maalesef istediğim anlamı karşılamıyor. Mümkün olduğunca Türkçe kelimeleri tercih ediyorum, anlamı karşılamadığı yerlerde ise tırnak işareti içerisinde yazıyorum. Bu duruma çözüm öneriniz varsa seve seve değerlendirim (:


“tek bir if sorgusu, sayfada fazladan 1kb veri bile beni çok rahatsız eder” işin aslı ben de bu konuda sana katılıyorum, diğerlerine de… Mesela CodeIgniter en son detaylı incelediğim bir “framework”, adamlar ciddi ciddi php deki her olayı fonksiyona ve sınıfa çevirmişler. Veritabanında tablo eklemeden tutun MVC alt yapısı oluşturmanın önbelleğine kadar… Ama ne hikmetse işte ne kadar harika ve performanslı olursa olsun o yüz binlerce satır kodları görünce direk içim cız ediyor. Ve bu yüzden kendi hazırladığım 3KB lik veritabanı sınıfımı ve kendi tasarım motoru sınıfımı kullanıyorum… Son olarakda bu yazınla bir çok ortak düşüncemiz olduğunu gördüm. Ee tabii aklın yolu birdir (: