Jump to content

Seri 1 - PHP 5 ve Platform Bağımsız Temel Web Programcılığı


Muallim-i Ali

Recommended Posts

Bir programlama dilini öğrenme sırasında edindiğimiz deneyimler iletişim için kullandığımız dilleri öğrenme sırasında edindiğimiz deneyimler ile nerdeyse aynıdır. İkisininde belli kuralları vardır, kendilerini günceller, kişiden kişiye göre kullanımı değişir ve en önemlisi zamanla daha iyi öğrenilir. Anahtarda burdadır zaten, bir geliştirici öğrenme sürecinin bitmeyeceğini farkettiği zaman başarının kapısını aralar.Tabi bunu bilemek sadece bir başlangıçtır; bu farkındalıktan faydalanmak için en etkili yönetemi geliştirmek gerekmekte. Benim tercih ettiğim ve bir kısmını bu seride bulabileceğiniz yöntemin bazı fazları bulunmakta.

Faz 1: (Dil hakkında genel kültür edinilmesi.) Efendim bu dil nedir, nerde kullanılır, avantajları dezavantajları nelerdir? Internet üzerinde yeterince kaynağı varmıdır ? Hatta yapabiliyorsanız iş olanakları nedir, son zamanlarda ne tarz firmalar bu kategoride ilan vermiş ? Örneğin devlet kurumlarında daha çok IBM ’in hüküm sürdüğü aşikardır bu anlamda şuan JAVA devlet pozisyonlarında daha geçerlidir fakat özel sektörde ibreler şuan daha çok .NET platformunu göstermekte. Peki PHP bu iki devin arasında nerede ? Belki bu araştırmaları yaptıktan sonra PHP öğrenmekten vazgeçeceksiniz. Bundandır ki ilerde daha çok vakit kaybetmemek veya pişman olmamak için bu adım içerisinde yaptığınz araştırmalara özen göstermelisiniz. Bu konuda bir çok forumda zaten tartışmalar süregelmekte ve devam edicektir; bunlardan da faydalanabilirsiniz fakat buralardan kesin sonuç çıkarmak pek sağlıklı değil.

Faz 2: (Dil’in çekirdeğinin öğrenilmesi.) Nedir dilin çekirdeği ? Esasında terim olarak biraz yanlış ama tanıdık bir yaklaşım. Unix platformunda çoğu uygulamanın bir çekirdeği bulunur bunlar uygulamanın hayati fonksiyonlarını içerir; ardından gelen diğer fonksiyonlar uzantı olarak nitelendirilir. Çekirdek aynı zamanda dilin yapısınıda içermektedir. Örnek olarak değişken tipleri ve bunlar için hazırlanmış temel fonksiyonların veya mantıksal operatörlerin kullanımının öğrenilmesi. Bu öğrenme süreci içerisinde belki arka plandaki çalışma prensipleride önemli olabilir, burda eğer utopik bir yaklaşımda bulunacaksak çalışma prensipleri çok iyi öğrenilmeli. Çünki vakti geldiğinde hata ayıklamak için daha büyük bir vakit kaybı ile çalışma prensipleri kısmi olsada öğrenilmek zorunda kalınacak. Benim tavsiyem bu süreç içerisinde dilin çekirdek yapısına hakim olunduktan sonra en azından çalışma prensipleri hakkında genel bir fikir edinilmesi.

Faz 3: (Sürekli Gelişim.) Artık yeni öğrendiğiniz dil ile uygulamalar geliştirebiliyorsunuz. Peki ya yazılım esnasında uyguladığınız teknikler ne kadar verimli ? Okulda öğrendiğiniz algoritmalar size yardımcı oluyor fakat pratik kullanımda geçerlimi ? Uygulamanızdan yüksek stress altında da aynı verimi alacağınızdan eminmisiniz ? Bu fazda uygulamalarımızın performansını geliştirmeye yönelmeliyiz ve yeni teknikler öğrenmeliyiz. Tabiki sadece performans değil aynı zamanda geliştirdiğimiz uygulamaların güvenlik yapısını nasıl geliştirebiliriz sürekli bunun arayışı içerisinde olmalıyız. Tabiki dilin gelişimi bitmediğinden bir yandan da dil’deki yenilikleri gözden geçirmeliyiz.

Okumakta olduğunuz seride yukarda görmüş olduğunuz adımların hepsinden biraz bahsederken bunları PHP5 ile bağdaştırıp elimden geldiğince güncel örnekler vermeye çalışacağım. Açıkcası amacım bir kitap kadar yoğun içerik çıkarmak değil çünki bu okuması çok sıkıcı hatta zaman zaman okurun dili bırakmasına sebep olabilen bir davranış; keza ticari bir amaç da gütmediğimden olabildiğince anahtar noktaları size gösterip daha çok bir kılavuz (yol gösteren) ortaya çıkarmak.

Web Programcılığı ve PHP

Internet’in yagınlaşmaya başladığı veya patladığı sene 1995 olarak belirtilir tabiki bundan önce internet araçları üzerinde ARGE çalışmaları devam etmekteydi. Statik olarak hazırlnan HTML web sayfaları insanları tatmin etmemeye başlar, çoğu kimsenin aklında kullanıcının eylemlerinden etkilenen bir yapı oluşturma fikri vardır. Bunun için web uygulamaları gerçekleştirilmelidir, burda ilk dişe dokunur adım linux üzerinde PERL için hazırlanan CGI kütüphaneleri ile gözükür. PHP yaklaşımı itibari ile PERL’e çok benzemektedir fakat CGI kütüphaneleri ile web uygulamaları oluşturmak gerçekten kolay değildir. Bu esnada Apache web sunucusu geliştirme grubundan Rasmus Lerdorf tarafından PHP (Personal Home Page) 1994 senesinde geliştirilir. İlk hedefi kişisel sitesine gelen kullanıcıları takip etmektir; ardından PHP2 ile form elemanlarının SQL cümleciklerine yerleştirilmesi ile PHP gelişimini sürdürür. Zamanla PHP ’nin büyümesi sonucunda PHP geliştirme grubu kurulur burda iki isim öne çıkar Zend Suraski ve Andi Gutmans.Bu iki kişi tarafından PHP3 ve PHP4 ’ün etkili bir şekilde yorumlanıp çalışması için PHP içersine "Zend Engine" (Zend Motoru) gömülür. Bu esnada Zend firması kurumsal anlamda PHP’ye destek vermek ve geliştirici araçların hazırlanması için kurulur. PHP3 ve PHP4 içerisinde bulunan Zend Engine ne yazık ki nesne yönelimli programlamaya (Object Oreinted Programing "OOP") tam anlamıyla destek vermemekteydi ve geliştirilen OOP tabanlı PHP uygulamalarıda ne yazık ki performans konusunda başarısız olmaktaydı. Bunun üzerine Zend PHP5 için temel farklılığı oluşturan Zend Engine 2’yi OOP ’ye tam destek verecek şekilde tasarlayıp bugün önümüze sundu. Peki 1994 ile 2004 arasında başka web programlama dilleri yokmuydu? PHP’nin ardından microsoft tarafından ASP sürüldü fakat hem performans konusunda hem kütüphaneleri konusunda ASP çok vasat bir çizgide idi. Macromedia tarafında ise web programlama dili olan coldfusion tutulmadı. Yahoo gibi işlemci ve trafik yükü ağır olan kurumlar ise kendi (scripting) dillerini geliştirmeyi tercih ettiler fakat bugün Yahoo tüm altyapısını Rasmus Lerdorf ’un danışmalığında PHP’ye geçirmeye çalışmakta.

Web programcılığı sadece internet programcılığını içermemekte. Bugün bir çok kurum dahili ağlarında geliştirecekleri uygulamalarını web programları ile çözümlemeye çalışıyor çünki web uygulamaları kullanıcı tarafında çalışan uygulamalara nazaran uygulamanın dağıtılması ve bakımı konularında çok daha avantajlı.

Neden PHP ?

1. Kullanışlı ve etkili

PHP bugüne kadar gördüğünüz öğrenilmesi ve yazılımı en kolay programlama dili. C syntax’ı (yazılım biçimi) ile okuması, takip etmesi kolay aynı zamanda C özelliklerini taşımasına rağmen C kadar katı kuralları olan bir dil değil. Sürekli büyüyen kütüphanesinin her bilgi kaynağına erişemesi ile geliştirme sürecini kısaltmakta. Aynı zamanda .NET, JAVA veya COM kütüphaneleri ile uyumlu çalışıp, kaynaklarından faydalanabiliyorsunuz.

2. Performanslı

PHP bugüne kadar görebileceğiniz en hızlı web programlama dili. Bugün PHP ’nin web uygulamalarında rakibi sanal makinalar olan .NET ve JAVA’dır. Sanal makinalar kendileri için sistem kaynaklarını sömürürken uygulamanız arakada çalışmak için can çekişir. Kaldı ki sanal makinaların iddası platform bağımsız olmalarıdır ve zaten bu yüzden icad edilmiştir fakat PHP farklı bir yaklaşım ile kaynakları en az kullanarak platform bağımsızlık konusunu çözümlemiştir. Bildiğiniz üzere sanal makinalar ara derlenmeden geçmiş kodları bulunduğu ortama göre son derlemeden geçirirler, bu şekilde platform bağımsız olurlar. PHP ise her platform için PHP grubu tarafından uyumlu olacak şekilde geliştirilmiştir, bu sayede arada bir sanal makinaya ihtiyaç duymaz. Ayrıca PHP’nin modüler yapısı sayesinde kullanmayacağınız modülleri sistemden çıkarıp ortamı optimize edebilirsiniz; bu ne yazık ki sanal makinalarda mevcut değildir. Bu yüzden PHP herhangibi sanal makinadan defalarca daha performanslıdır.

3. Güvenli ve güncel

PHP grubu en az 2 ayda bir sürüm günceller. Bu güncellemeler varsa bugların telafisini ayrıca yeni özellikleri ve optimizasyonları içermektedir. Bu sayede en güvenli ve güncel programlama dilidir.

4. Herşeyden bağımsız (işletim sistemi, sunucu, veritabanı)

Daha evvel bir çok kere neden bir uygulamanın sunucudan , veritabanından veya işletim sisteminden bağımsız olması gerektiğinin altını çizdim. Esasında anahtar şu, eğer uygulamanız harici kaynaklardan bağımsız ise ister iş veren olun ister geliştirici kaçınılmaz bir şekilde pazarınız genişliyor ve tercih sebebi oluyorsunuz. .NET framework her ne kadar Microsoft tarafından platform bağımsız olarak tanıtılsada bu Microsoft’un Windows’dan başka platformu tanımamasından kaynaklanıyor; ama bugün web sunucuları tarafında bağımsız organizasyonların yaptığı araştırma çoğunlukla Windows olmayan işletim sistemlerinin kullanıldığını göstermekte.Tabiki bunda daha evvel bahsettiğimiz performans ve güvenlik etkili olmakta.

5. En başarılı açık kod projesi

Bir çok açık kod projesi organizasyonel hatalar sonucu başarısız oluyor. Fakat PHP hiç bi zaman bu tarz sorunlarla karşılaşmadı çünki arkasında Zend firması var ve kurumsal bir çok ihtiyacı karşılıyor. Zend öylesine yabancı bir firma değil, Zend PHP’yi geliştirenlerin firması bu sebepten PHP onların çocuğu ve hiç bi zaman onu yalnız bırakmayacaklar.

Uyarı: Dökümanda görüceğiniz çoğu açıklama ve örnek PHP, Smarty, PEAR ve GTK kullanma kılavuzundan alınmıştır. Peki kılavuz yerine neden bu dökümanı okumalısınız ? Çünki kılavuz tecrübelerden ve kullanım tekniklerinden bahsetmez. Kılavuz çok geniş içeriğe sahiptir yeni başlıyorsanız içerisinde kaybolma ve bunalma ihtimaliniz var. Son olarakta ne yazık ki PHP kılavuzu Türkçe değil.

Serinin İçeriği

1. Giriş

2. Çalışma Prensipleri

3. Kurulumu ve Konfigrasyon

4. Geliştirme Ortamı / Zend Studio

5. Yazılım Biçimi

6. Değişiken Tipleri

7. Nesne Özellikleri (PHP5’deki yenilikleri arayanlar için)

8. Operatörler ve Döngüler

9. Fonksiyonlar

10. Diziler (Arrays) ve Katarlar (Strings)

11. Hata Ayıklama (Debugging)

12. Form İşlemleri

13. Oturum Yönetimi (Sessions & Cookies)

14. Veritabanı Bağlantıları (Veritabanı tiplerinden bağımsız uygulama geliştirmek)

15. XML İşlemleri

16. Web Servisleri (PHP5’deki yeniliklerden biri daha)

17. Grafik İşlemleri (GD Kütüphaneleri)

18. Harici Kütüphanelerin Kullanılması

19. Macromedia Flash İşlemleri (Mind Kütüphaneleri)

20. SMARTY (PHP Arayüz motoru)

21. PEAR (PHP kütüphanelerine eklenti)

22. GTK+ (PHP ile görsel programlama)

Seriyi Hazırlayan : Sadun Sevingen

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...