Nihayet.İşin zevkli kısmı başladı.Birşeyler alınıp birşeyler verilebilecek kısmı.Yanlış anlaşılmaları engellemek için son söylediğim şeyleri takrar edeyim ondan sonra izninizle parça parça tartışmaya devam edelim. * Var hepsinin iyi ve kötü yönleri.Başın sıkıştıkça öğreniyorsun.Ha ama eğer başın sıkışmasına rağmen öğrenmiyorsan-bir noktaya takılı kalıyorsan- orada bitmiş demektir herşey.*
22 Haziran 2011 10:35 tarihinde anıl özselgin <[email protected]>yazdı: > Mehmet Özgür Bayhan Bey söylediğiniz şeylerde ciddi önyargılar var. Ben > şahsen benden daha fazla Php'nin iç yapılarına ilgi duymuş biri ile > karşılaşmadım henüz Türkiye'de. Çok biliyorum demiyorum ama merak edip > okuyorum, ilgiliyim. Ve Php'nin iç yapıları genellikle kötü tasarlanmıştır. > Bu çok ileri düzey bir tartışma konusu, ona bakarsanız java da 1.5 sürümüne > kadar Enum desteklemiyordu; ya da map,filter, fold functional programlama > için gerekli fonksiyonları hala desteklemiyor. 1.7 sürümünde > destekleyebileceği konuşuluyor. Oysa c#, python, ruby en başından beri > javanın tüm artılarına sahip ama eksi yönlerini barındırmıyor. Aslında bütün > diller birbirinden arak yapıyor. Cobol'un, perl'ün ve fortran'ın son > versiyonları OOP destekliyor. Scala -ki JVM üzerinde çalışır- erlang gibi > concurrency destekliyor, functional bir dil. Visual Basic bile OOP > destekliyor artık. > > Hemen hepsinde aynı fikirdeyiz.Yalnız bir kaç ufak nokta var.Java hiçbir zaman functional ,yapısal veya mantıksal programlamaya destek verme iddiasında olmadı,şu anki yapısı gereği de müsait değil buna zaten.OOP üzerine kurulu bir dil.Benim korktuğum nokta Java şu anki konumu sebebiyle ,yazılım projelerinin kaymaya başladığı Aspect Oriented yapılara yeterince destek veremiyecek/ayak uyduramıyacak konuma gelmesi.Oracle amcaların ne yapacağını göreceğiz.IBM'in tek başına taşıyabileceğini sanmıyorum bu yükü.İşte o zaman olay sarpa sarmaya başlamış demektir. > Gelelim Php'nin kötü olmasına. Kötü, eğer iyi tasarlanmamış demekse, doğru > söylüyorsunuz, php kötü tasarlanmıştır. Ama geriye uyumluluğu olan her şey > de kötüdür bu bağlamda. HTTP de kötüdür protokol olarak. HTML 4.0 > rezalettir, çünkü 1980lerden kalma kısıtlamalarla boğuşuyor hala. Appletler > tam bir fiyaskoydu. Java micro edition, JavaFX diğer rezalet kullanılması > güç kötü tasarlanmış teknolojiler. > > Bu konuda haklısınız.Hele ki java FX başından beri ölü doğmuş bir teknoloji. > Php'nin iyi yönleri ne? > 1. Diğer çoğu modern dil gibi Virtual Machine üzerinde çalışmadığı için > anormal hızlı. Hatta kendisi çoğu zaman işleri arkadaki C kodlarına yaptıran > bir aracı. Yani C ne kadar hızlıysa Php de bu kadar hızlı. > Ekisk bir nokta var.Hız kaybına sebep olan execution değil interpretion aşaması.JVM nin şu anda sahip olduğu iyileştirmeleri (7 li pipeline vs.) ve derlenmiş kodun bir scripte göre her zaman için daha hızlı çalışacağını da göz önünde bulundurursanız hız konusu oldukça tartışmaya açık hale gelir. 2. Loose typed bir dil, bu yüzden kritik olmayan işleri hızlıca > yapabiliyorsunuz. Ama kritik işleri php ile yaparken çooook başınıza dert > açar. Dinamic type cast yapması JSP'de kullanılmış (araklanmış) bir özellik. > JSP bunları araklamasa büyüyemezdi, 90larda php tüm dünyayı kavurdu. Onun > iyi özelliklerini almaktan başka çare yoktu. > JSP sahip olduğu kazuletlik sayesinde yerini yeni gelişen ajax tabanlı java kütüphanelerine bırakmak üzere.Şu an ayakta durmasını sağlayan tek şey bir şekilde zamanında standart olarak kabul edilmiş olması.Keza JSF ye duyulan ihtiyaç bunun en büyük göstergesi.Ama burada -genelde- haksızlık edilen nokta java Web sitesi odaklı değil Web uygulaması odaklı bir yapıya sahip.Keza bu yüzden çoğu zaman standart HTTP protokolünü değil kendi RPC yapısını kullanıyor. > 3. Şu anda tüm OOP özelliklerini destekliyor. İmplement edemediğiniz design > pattern'i söyleyin yardımcı olmaya çalışayım. Gönderdiğiniz yazı dildeki > temel yapıların object oriented tasarlanmadığını söylüyor. Evet dildeki > temel yapılar object oriented tasarlanmamış. Ama bir dilin OO olmasının > kıstası bu değil. Kıstas dilin bu yapılara izin vermesi. Java'da da herşey > thread-safe değil. Dil thread desteklemiyor mu. > -Bildiğim ve incelediğim kadarıyla- durum tam olarak böyle değil.Mesela bildiğim kadarıyla PHP çoklu kalıtımı desteklemiyor.Şu noktada içinde adapter kalbını barındıran bir abstract factory pattern'ini dizayn etme işleminin workaround yapmadan nasıl gerçekleştirileceğini açıklayabilirmisiniz? > 4. Package mantığını destekliyor artık. Direk dil destekliyor namespace'ler > ile. Ayrıca Zend ve Symfony'de bu işler baya oturdu. > > Php bir web dili, nasıl prolog logic dili ise, erlang concurrency konusunda > iyi ise. Php'yi sadece web dili diye eleştirmek çok hatalı bir bakış açısı > olur. O zaman javayı da sistem programlama yapılamıyor diye eleştirelim.. > > Tam aksine PHP yi sadece bir web dili olarak görmüyorum.Bir çok kere sistemde yapılması gereken işleri C ya da bash ile uğraşmamak için php veya python ile hallettiğimi bilirim.Keza sadece web dili olsa da önemli değil.Önemli olan işini iyi yapıp yapmadığı > Php ortaya yeni bir paradigma koymamıştır ama web dünyasının şu ana > gelmesinde çok önemli rolü var. Ben hem java hem php yazıyorum iş hayatımda. > Php programcıları w3c.org okuyup siteleri bu kıstaslara göre yaparkeni,*Java > programcılarının çoğu en temel web kavramlarını bilmiyor. > * Frameworkleri rezalet html kodları üretirken farkına bile varmıyorlar. > Her üretilen html kodu, w3c.org'un ayrı bir recommandation'una karşı > geliyor. Bu yüzden web'in dili hala php. > > ** > Php'ye güzel tasarlanmış (elegant) demiyorum, ama üzerine düşen yükü çok > iyi göğüslüyor. Yani ailesine bakmak zorunda olduğu için sabah akşam çalışan > ama kitap okumadığı için entellektüel olmayan bir ebeveyn gibi :) Ben de > zamanında çok eleştirdim Php'yi ama iyi yönlerini de görmek lazım. Hatta > php'nin kötü tarafları üzerine ufak bir kitap yazabilirim. Hatta bloğumu ilk > açarken amacım bunlarla ilgili yazılar yazmaktı. > > İşte aynı işleri gerçekleştirebilen python çok daha (elegant) bir yoldan yapabilmenizi sağlıyor bunu (: > ORM için doctrin, propel; template için smarty ya da phptal; bir de > bunlardan önce güzel bir design pattern kitabı. Php o zaman çok büyük > projelerde kullanılabiliyor. Ama programcı yetersizse php ne yapsın. > > ** ==> programcı yetersizse java ne yapsın (: Ya da diğer bir bakış açısıyla yapısı gereği java; programcılarını protokoller ve alt işlerle uğraşmaktan uzak durmaya iterken -rezalet ama çalışan html kodları- aynı şekilde php'nin yapısı gereği programcılarını düzgün tasarım yapmaktan (rezalet ve refactor edilmesi zor php kodları) uzak durmaya ittiğini söyleyebilirmiyiz? (: İyi tasarlanmış dil istiyorsanız LISP tam size göre. Ama o da o kadar iyi > tasarlanmış ki, gerçekçilikten uzak. Rasyonel sayıları direk dönüştürmeden > hafıda tutuyor. Bu yüzden tüm diğer dillerdeki rasyonel sayılar ile ilgili > problemlere sahip değil. Mesela BigInt ile javada tuttuğunuz parasal > değerler, lispte direk tutulabiliyor. Ama acayip ram yiyor. > > C-LISP değil ama Scheme kullandım.Ve ihtiyacım olursa yeniden de kullanırım.Yazının en başında da dediğim gibi.Başın sıkıştıkça öğreniyorsun. (: Yanlış/eksik bildiğim veya hatalı olduğun yönler varsa affola.Düzeltirsen sevinirim. İyi çalışmalar.
_______________________________________________ Linux-programlama mailing list [email protected] https://liste.linux.org.tr/mailman/listinfo/linux-programlama Liste kurallari: http://liste.linux.org.tr/kurallar.php
