Herkese merhaba ben ben bilgisayar müh. okuyan genç bir öğrenciyim.Sormak istediğim soru şu php ye neden bu kadar sallanıyor ve kötü denip duruluyor..Anlayamıyorum yani ben oturup bu dile emek veriyorum saatlerimi harcıyorum ve böyle yorumlar görmek motivasyonumu kırıyor.Bu konuda fikirleriniz nedir acaba burada gerçekten işe çok hakim kişiler var özellikle onlara soruyorum yok bitecek yok berbat yazımı var ya bende yazıyorum bana neden bu kadar berbat ve iğrenç gelmiyor anlayamıyorum cidden.Kötü yorumlarda tam anlamıyla ikna etmiyor beni bazıları sanki bu dile sallamak popüler diye sallıyorlarmış gibi çok boş yorumlarda görüyorum.Sizin düşünceleriniz neler? İnsanın saatlerini harcadığı bir şeyin sanki emeğini boşa harcıyormuş gibi hissetmesi kötü birşey.Dediğim gibi burada gerçekten çok yetkin kişiler var belli ki senelerce bu dili kullanmışlar yorumlarını merak ediyorum bu konu hakkında.Şimdiden teşekkürler
Php hakkında
- Düzenlendi
berk_gun PHP yorumlanan, dinamik ve zayıf yazılı bir dildir. Buradaki dinamik o dinamik; zayıf da o zayıf değil. O yüzden bir ön açıklama yapayım:
Ön Bilgi
PHP dinamik bir dildir:
Dinamik dillerde bir değişkeni tanımlarken tip belirlemenize gerek yoktur. $x = 1
derseniz $x integer; $x = "1a"
derseniz $x string olur. Statik dillerde ise değişken tipini belirtmeniz gerekir. var x int = 1
gibi. Javascript, Perl, Ruby, Python, Visual Basic, Erlang PHP gibi dinamik dillerdir. C# ve Java örneğin statik dillerdir.
PHP zayıf bir dildir (weakly-typed):
Zayıf yazılmış ya da zayıf yazılı diller, weakly-typed diye geçer, değişkenlerin sonradan tip değiştirmesine izin verir. PHP'de şu gayet geçerlidir:
$x = 1;
$x = "1a";
echo $x; // "1a"
Güçlü yazılı ya da strongly-typed dillerde ise bu mümkün değildir. x int ise int kalır. C, C++, Javascript, Visual Basic, Perl de PHP gibi weakly-typed dillerdir. C#, Java, Python örneğin strongly-typed dillerdir.
Hangi dil hangi grupta şu tabloyu inceleyebilirsiniz, tüm dilleri içermiyor elbette:
+---------+-------------------------------+----------------------+
| | Weakly-Typed | Strongly-Typed |
+---------+-------------------------------+----------------------+
| Dinamik | PHP, Perl, VBasic, JavaScript | Ruby, Python, Erlang |
| Statik | C, C++ | C#, F#, Java, Haskel |
+---------+-------------------------------+----------------------+
PHP yorumlanan bir dildir:
Bildiğiniz gibi PHP bir script dili. Bir dosyanın içine php kodunu yazarsanız ve sayfayı yenilersiniz, anında sonucu görürsünüz. Derlemenize gerek yoktur ama bu derlenmediği anlamına gelmez, o da derlenir ama çalışma anı sırasında derlenir. Yorumlanan dillerin aksine derlenen diller ise çalışmadan önce makine diline çevrilmeleri gerekir.
Eleştiriler
Bunlar ayrıca benim eleştirilerimdir.
PHP üstte bahsettiğim gibi dinamik ve zayıf yazılı bir dildir arkadaşlar. Yani ne yazık ki strict yani katı bir dil değildir. Bu anlamda dışarıdan serkeeeeeeş, avareeeeeee gibi gözükür ama bu, dil için bir problem değil dili kullananlar ile ilgilidir. Kariyerine PHP ile başlayan insanlar PHP ile çok hızlı kod yazıp çık hızlı çıktı aldıkları için genellikle bilgisayar bilimlerindeki bir çok şeyden habersiz kodlama öğrenirler ve düşünmezler. Onlar için sadece int vardır; int8, uint32 kavramları bilmezler, önemsemezler. Bu yüzden bilinçsiz kod yazarlar, sonra çeteresini çekerler.
Kafanıza göre değişken tanımlayabilir ve değiştirebilirsiniz, bu amatör programcılara genellikle bug ya da içinden çıkılmaz durumlar olarak geri döner. Sebebini bulmak için saatlerinizi harcarsınız, bir noktada yaptığınız bir işlem sonucunda x'in int yerine boolean ya da string değere dönüştüğünüzü görürsünüz, değer de o şekilde veritabanına girmiştir, o şekilde 1 hafta binlerce yanlış kayıt işlemiştir sizin yeni haberiniz olmuştur vs... "Adamın yaşını hesaplatmışsınız, 89. satırdan sonra bir işlemden dolayı false olmuş." Ne güzel... Go'da kullanmadığınız bir değişkeni tanımlayamazsınız, kullanmadığınız bir kütüphanesi import edemezsiniz, derlemenize izin vermez ama bir PHP koduna statik analiz atıyoruz, kodun 1/3 ü kullanılmıyor bile çünkü ne de olsa garbage collector var, bellek otomatik temizleniyor. dil izin veriyor mu veriyor, o zaman bok gibi kod yazmaya devam.
PHP yorumlanan bir dildir. O yüzden derleme işi çalışırken gerçekleşir. Bu durumda sonuç almak için derlemenin bitmesini beklemeniz gerekir. Evet, derleme yapmadan sonucu görmek güzel bir şey ama ne yazık ki bu kötü bir performans demek. Opcache, JIT vs gibi geliştirmelerin sebebi bundan kaynaklı performans problemlerinin önüne geçmektir.
PHP 90'larda sadece bireysel, küçük bir amaç için ortaya çıkmış bir dil olduğu için doğumu zaten zayıftır. Buradaki zayıf gerçek anlamda zayıf. Amacı hiçbir zaman yaygın olarak kullanılması düşünülen bir dil olmamıştır. O yüzden geliştirilmesi, büyümesi, topluluk tarafından sahiplenilmesi vs. hep yavaş ve sancılı olmuştur. O yüzden önemli gelişmeler son 6-7 yılda gerçekleşmiştir. Yani maça yenik başlamıştır. O yüzden birçok dilde olan en basit şeyler bile sonradan eklenmiş ya da değiştirilmiştir. O yüzden üzerindeki eleştiriler geçmişe gittikçe daha da şiddetlenir. Şu an gidişat iyi ama.
Sonuç
PHP yazanlar diğer dillere göre daha rahat bok gibi kod yazabilir çünkü PHP bunu engellemede zayıftır. Zayıf olmasının sebebi ise özündedir çünkü HTTP ile çalışması düşünülen küçük kapsamlı bir dil olarak ortaya çıkmıştır. HTTP parametreleri daima string olarak gelir o yüzden dinamik/zayıf yazılı bir dil olarak ortaya çıkmak zorunda kalmıştır. Günümüzde ise topluluk bu durumu düzeltmek için uğraşmaktadır ve PHP 7 ile başlayan bu adımlar PHP 8 ile hızla devam etmektedir.
PHP bu üstte yazdıklarımı toparlarsanız suistimale açık bir dildir ve acemiler, juniorlar bir şeyleri suistimal etme konusunda seniordur. Dil izin veriyor diye paldır küldür yazarlar. Diğer diller sizi daha iyi programcı yapmaz sadece size eğer ve at gözlüğü takarlar; eşek yine eşektir. O yüzden uzmanlaşmak ve ne yaptığını bilmek bu işte önemli. Ben her ne kadar yan kulvardan Go öğreniyor olsam da PHP'yi bırakmam çünkü benim gözümde gün geçtikçe değeri artan bir dil ve 15 sene boyunca bana sağolsun doğruları ve yanlışları bir arada gösterdi. Memory leak yemeden memory kontolünü öğrenemezsiniz, tipleri belirlemeden belirsiz tip hatalarını öğrenemezsiniz.
Son olarak; dil, sadece bir araçtır.
- Düzenlendi
Klasik ASP, C# ve Python dillerini de tecrübe edinmiştim. Şimdi ise PHP ile yazıyorum. Bende bazen twitter veya medium da bahsettiğiniz türde yazılar görüyorum (okuyorum) ama pek kafaya takmıyorum şahsen.
Dil olarak süper bir dil değil ama gelişen bir dil. Onun için dili değil, yazılımcının yazdığı kodları iyi veya kötü, başarılı veya başarısız şekilde karşılaştırmak daha doğru olur. Özellikle PHP 7 ve devamında gelen 8 sürümleri (8.1 henüz release edilmedi ama RFC lerde güzel özellikler var) çok başarılı.
Birde yazılım işini yapan herkesin (en azından benim düşüncem) öncelik sırasında birinci sıra para kazanmaktır. Bugün PHP konusunda uzmanlaşır iş yaparsınız. Bunun yanında 1 veya 2 dil ile de ilgilenirsiniz ve ileride o dillerden biriyle kariyer şansınız daha fazla olursa o dil ile devam edersiniz. Onun için dil fanatikliği veya düşmanlığı bence gereksiz.
Diyelim ki ekmek keseceğiz. İngiliz anahtarı ile kesmeye çalışırsak ne olur, bu alet işe yaramıyor kötü deriz. Diyelim ki civata sıkacağız, bıçakla yapmaya çalışırsak bu alet çalışmıyor kötü deriz.
Örnek basit ama etkili. Her aletin bir amacı var. Programlama dillerinde de bu büyük ölçüde geçerli. PHP ile masaüstü programlama yapmak isterseniz kötü, mobil uygulama yapmaya çalışırsanız kötü, gömülü sistem kodlamak isterseniz kötü. Web geliştirmek için? Bence oldukça iyi.
PHP kadar basit ve hızlı bir şekilde geliştirme ortamı ayağa kaldırabileceğiniz, alan adı, sunucu, hosting.. 10 dk da satın alıp yayına alabileceğiniz bir başka dil yok. Yarım saatte bir dinamik web sitesini yayına alabilirsiniz. Bu muazzam kolaylık PHP'yi popüler yapmıştır ve işini iyi yaptığı sürece bence başka bir işi daha yapamaması hiç problem değil.
Bana göre bu kolaylığın neden olduğu en büyük kötülük de PHP ekosisteminin bilgi çöplüğü olmasıdır. Çünkü PHP ile başlamak o kadar kolaydır ki, başlayan kişilerin hatırı sayılır bir kısmı 1 haftada SEO uyumlu web sitesi yapmaya başladığından kendilerini PHP uzmanı sanmaya başlarlar ve hemen bilgilerini ispat etmek isterler. PHP ile hello world yazma konulu milyonlarca makale vardır. Hal böyle olunca da bilen bilmeyen herkesin paylaştığı bilgiler seri bir şekilde yayılır ve bilgi kirliliği ve çöplüğü oluşur. Bir de eski makaleleri okuyup bir şeyler öğrenen kişilerin o eski bilgilerden öğrendiklerini düşünerek yeniden bilgiyi dağıtmaları yok mu, beni kahrediyor. Eski bilgi eskide kalmıyor zombi gibi yaşamaya devam ediyor. Sonra 2021 senesinde mysql connect çalışmıyor diye yardım talep edenlerle karşılaşıyoruz.
PHP'nin geçmişe dönük uyumluluğu da çok iyidir. Kötü isimlendirilmiş fonksiyonları geçmişe dönük uyumluluğu bozmasın diye değiştirilmemiştir. Python 2 de yazdığınız bir proje python 3 te çalışmaz ve neredeyse baştan yazmak gerekebilir. Ama php 5.6 ile yazdığınız kod php 8 de ufak değişikliklerle (belki o bile gerekmeyebilir) çalışabilir.
@mgsmus un dediği gibi PHP web sayfası geliştirmek için doğmuştur ve bu işi çok iyi yapmaktadır. Kötüleyen kişiler PHP ile başlamış olsalardı başka bir dili gömüyor olacaklardı. Tamamen ilkler özeldir duygusallığı ile yapılan eleştiriler.
@coder2 nin dediği gibi de para kazanma amacı güdüyoruz ve bize en hızlı para kazandıran bizim için en iyisidir. Fanatiklik oldukça az bilgili insanların işidir.
Siz yarım yamalak öğrenmeyin, tam öğrenin, bilgi kaynaklarınızın güncelliğinden emin olun. Eleştirilere de kulak asmayın. Boş şanslar.
Çok sağolun abiler gerçekten tatmin edici cevaplar aldım dedikleriniz çok doğru çok sağolun.
temel olarak kodlama dili bir araçtır, iyi veya kötü yazmak yazılımcının kendi elindedir. php hızlı aksiyon alınabilmesi açısından son derece kolay öğrenim eğrisi olan bir dildir. bu yüzden yazılıma php ile başlanmasında büyük bir fayda vardır. bir süre sonra dil bağımsız oluyorsunuz ve rahatlıkla bir başka yazılım diline geçme imkanına sahip oluyorsunuz. burada dilin gevşek tip güvenliiğinin olması, yazılımcının yükünü arttıran fakat dikkat edildiğinde çok ta problem olmayan bir, zayıflıktır., Uzun süre C# ta yazılım yaptıktan sonra önce codeignater daha sonra laravele geçtim, laravel alt yapısı itibariyle daha ciddi nesne yönelimdi bir framework özelliği taşıyor, C# mvc yapsı ve razor engineden sonra laravel mvc yapısı ve blade engine çok hoşuma gitti kendimi daha konforlu bir şekilde evimde hissetmeme neden oldu.
burada dikkat edilmesi gereken önemli nüans şu, yazılım yaparken C# veya php farketmez çamur gibi de yazılım yapılabilir, çok iyi kodlar da yazılabilir her ikisinde. bu yazılımcını kendi yetkinliği ve ve yetenekleri ile ilgili bir durum.
controller da html kodları basıyorsan,OOP mantığını tam oturtup SOLID prensipleri ve tasarım desenlerini kullanmıyorsan burada kötüsün, diğerlerinde de kötüsün. kullanıyorsan burada da iyisin orada da iyisin. hangi dilde olursan ol soyutlama yeteneğini geliştir. bağımlılıkları tersine çevir, gelişime açık değişime kapalı kod yaz, sınıflarının yanlızca bir tek sorumluluğu olsun ve kendisi dışında diğer sınıflarla ilişkisi gevşek bağlı bir şekilde olsun, olay bitmiştir. artık çok iyi bir yazılımcısın en rahat olduğun dilde çok etkili kodlar yaratabilirsin.
kendi yazdığı kodlara geri döndüğünde spagetti kodlarını kendin anlamaktan zorlanıyor ve küfrediyorsan hangi dilde yazıyorsan yaz bir sorun var demektir. tekrar ediyorum yazılım dili son tahlilde bir araçtır. amaç üzerinde iyi düşünülmüş ve iyi soyutlanmış sürdürülebilir kodlar üretmektir. hem yazılımcının kendi yaptığı yazılımı zihninde kavrama getirmesini kolaylaştırır, ne yaptığını çok iyi bilerek çalışmasını sağlar, hem daha sonra ekibe katılan diğer yazılımcının çabuk adapte olmasını sağlar.
Son söz olarak, javascript php çok daha kötü çamur gibi kodlar yazılabilecek kadar gevşek tip güvenliği olan, zayıf bir dil olmasına rağmen etkili frameworkleri ile birlikte harikalar yaratılabilen bir dil ve bu dili bilen yazılımcılar piyasada en çok para kazanan yazılımcılardır.
Kötü bir dil yoktur, kötü yazılımcı vardır.
Merhaba Arkadaşlar. Benim 2000 li yıllarda asp ile hazırladığım bir portal var elimde. Üzerinde hatalar var ve eksikler var. Bunu Php ile düzenleyecek öğrenci arkadaş var mı ? ( Ticari bir program değil kendim kullanacağım. ) Yüksek fiyatlara değil ama uygun bir rakama anlaşabiliriz. ilgilenen arkadaş varmı ? isterseniz 0 535 468 80 80 den detay görüşebliriz.
mgsmus seviyenin 1000 olmasına son 1 yanıt kalmış abi