22 Mayıs 2009 Cuma

0

Kütüphaneler, Frameworkler ve Diğerleri...

Posted in
İnternet dünyası hızla ilerledikçe internetin hızına ayak uydurmaya çalışan geliştiriciler de hızlarını arttıyor. Zamandan kazanmak için yapılabilinecek her şey yapılıyor. Zaman kazanma konusundaki en büyük yardımcılardan biri de kuşkusuz kütüphaneler. Forumlarda, bloglarda her gün yeni bir kütüphanenin çıktığını veya var olan bir kütüphanenin sürümünün yükseltildiğini okuyoruz. Bunların bazıları belli başlı işlemler için özel olarak geliştirilmiş bazıları da bir çok alana birden hitap eden, bir çok işi bir arada yapabilen ve hemen hemen tüm dünyada kullanılar kütüphaneler.JQuery, Prototype gibi...

Kütüphanelerin dediğimiz gibi en önemli işlevleri zaman kazandırmaları. Bunun dışında nasıl yapıldığı hakkında hiç bir fikrinizin olmadığı bir işlemi kütüphaneler sayesinde kolaylıkla yapabiliyorsunuz. Ayrıca sürekli olarak gelişmesi, kütüpheneler için çeşitli eklentiler üretilmesi de kütüphanelerin dinamikliğini ve güncelliğini korumasını sağlıyor. Bu ve bunun gibi faydaları sayesinde kütüphaneler şuan oldukça popüler durumdalar.

Tabi bu güzel özelliklerin bir de bedeli olmalı. En başta kütüphanelerden bir çok işi bir arada yapmaları beklendiği için "Ne kadar iş, o kadar kod" mantığıyla kütüphanelerin boyutları oldukça şişiyor. 5-10 KB lık boyutlardan başlayan kütüphaneler 150-200 kb ı geçebiliyor. Bununla birlikte kütüphanelerdeki fonksiyonlar tek bir durumdan ziyade olası tüm durumlar için hazırlandığından gereksiz kod kalabalığıyla dolu oluyor ve bu da hantallığa sebep oluyor. Aslında bu problemler internet bağlantısının hızlanmasıyla ve bilgisayarların performanslarının artmasıyla önemini kaybediyor. Yine de bence çok daha önemli problemler var.

Kütüphaneler Kodlar Üzerindeki Hakimiyetimizi Kısıtlıyor

Kütüphane kullanırken hareket imkanımız kütüphanenin yetenekleriyle sınırlı kalır. Örneğin forumlarda "X kütüphanesini kullanıyorum. Falan işi nasıl yaparım ?" tarzı soruların altında bu sebep yatar. Gelen cevaplar ise oldukça trajikomiktir:"X kütüphanesi falanca işi yapamıyor. Sen Y kütüphanesini de sitene ekle."

Daha kötüsü kütüphane kullanıyorsak bir hata karşısında elimiz kolumuz bağlı bekleriz yada kütüphanenin yaptığı işi biraz değiştirmek, istediğimiz hale getirmek istiyorsak kılı kırk yararız. Neden ? Çünkü bir kere kütüphanelerde debug yapmak imkansız gibidir. İnceleyenler görmüşlerdir; kütüphanelerin kodları bol miktarda include içerir, fonksiyonlar sürekli birbirlerini çağırır vs.(Genelde kütüphaneleri birçok kişi yazdığı için böyle bir hiyerarşinin olması da zorunludur.). Böyle bir yapıda kodu izlemek ve hatayı bulmak, değişiklik yapmak oldukça zordur. Hele bir de kütüphane oluşturulurken belli bir standart belirlenmemişse bu iş tam bir eziyete dönüşür. Üstelik siz bir fonksiyonu değiştirdiğinizde normalde çalışan ama işleri sırasında değişiklik yaptığınız fonksiyondan yararlanan tüm işlemlerinde hatayla sonuçlanması da cabası.

Kütüphaneler Öğrenme Becerimizi Azaltıyor

Nasıl oluyor bu olay? Kütüphaneler sayesinde bilmediğimiz şeyleri iki satırlık komutlarla yapabiliyoruz. Dolayısıyla bilmediğimiz şeyleri bilmemeye devam ediyoruz. Elimizde debug imkanı bile olsa gerekli düzeltmeleri yapacak bilgiyi kendimizde bulamıyoruz. Çünkü işi kütüphanelerle yapmaya alışmış olan biz, işin arka planından bihaber yaşıyoruz. Gerçekte aynı işlem ne tarz kodlarla yapılır bilmiyoruz. Eskiden kütüphaneler ve orjinal dil beraber kullanılırken şimdilerde dil yerine kütüphane öğreniliyor. Sonuç olarak ilgili dili bilmeden kütüphaneyle site yapanlar ilk problemde pes ediyor. Ayrıca Javascript' in adını duymayan, hiç bir şeyi bilmeyen webmasterlar(!) türüyor. Doğal olarak "Abi ben o siteyi 50 liraya yaparım." şeklinde diyaloglar gelişiyor.

Ne Yani Kütüphane Kullanmayalım Mı ?

Yok o kadar da demedik. :) Kütüphaneler hız kazandırma açısından oldukça faydalı. Sadece hız konusu bile bir çok olumsuzluğunun önüne geçmeye yetiyor. Bununla birlikte kütüphane kullanırken en azından arka planda ne döndüğünü bilelim. Yani işimizi o kütüphane olmadan da halledebilecek durumda olalım. Yapamadığımız bir şey olunca araştıralım, öğrenelim, hemen kütüphanelere koşmayalım.

Gerçi bence en iyisi kodlarınızın tamamının size ait olması. Aksi taktirde kodlarınız size üvey evlat gibi geliyor. En azından benim için öyle. Bu yüzden kütüphaneleri pek sevmiyorum. :)

0 yorum: