"Php kötü bir dildir" paradigmasını nasıl kırabilirim? [kapalı]


19

PHP kötü bir dil değildir (veya en azından bazılarının önerebileceği kadar kötü değildir). Ben söyleyene kadar PHP'nin nesne yönelimli olduğunu bilmeyen öğretmenlerim vardı. PHP geliştiricileri olduğumuzu söylediğimizde hemen bize güvensiz müşterilerimiz vardı ve Django veya RoR gibi şık dilleri ve çerçeveleri veya Java ve ASP.NET gibi "kurumsal ve sağlam" dilleri kullanmadığımız için bizi sorguladık.

Facebook PHP üzerine kurulmuştur. Web'de Joomla ve Drupal gibi kurumsal ve hükümetlerde kullanılan pek çok sağlam proje var. Tüm dillerde gördüğüm en iyi mimarilerden bazılarına sahip çerçeveler ve kütüphaneler var (Symfony 2, Doctrine). PHP gördüğüm en iyi belgelere ve profesyonellerden oluşan büyük bir topluluğa sahiptir.

PHP, PHP'nin artık yatay olarak yeniden kullanımı doğal ve temiz bir şekilde özellikler üzerinden desteklemesine izin vermekle birlikte, yansıma, arayüzler gibi gelişmiş OO özelliklerine sahiptir .

PHP'ye kötü bir ün veren kötü programcılar ve komut dosyası çocuklar var, ancak aynı zamanda PHP topluluğuna da güç veriyorlar ve PHP'yi halletmek çok kolay olduğu için, işleri yanlış bir şekilde yapabilirsiniz, ancak neden suçluyorsunuz? dil?.

Şimdi, bunu gerçek bir cevaplanabilir soruya kaynatmak için: bir çatlak düştüğünde kaşlarını çatmaktan ve önyargıyı durdurmak ve bir PHP geliştiricisi olduğunuzu söylediğinizde onurunuzu savunmak için iyi ve sağlam ve kısa ve tatlı bir argüman ne olurdu? .

(birini (müşteri ya da diğer) yerinde ikna etmenin ampirik kanıtı olanlara krem ​​şanti ile ücretsiz kurabiye

Not: Symfony kullanıyoruz ve kod güzel ve bakımı kolay bitiyor

PPS: Facebook PHP ile yazılır, HipHop üzerinden C ++ ile derlenir ve Hadoop'a dağıtılır. Burada: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/


9
Yeni başlayanlar için, Programcılar hakkındaki tüm gizli PHP karşıtı yorumları işaretleyin.
Bunları

23
İyi PHP kodu yaz
Charles Sprayberry

42
Sadece bir not, PHP insanlar "FB PHP üzerine inşa edilmiştir" argüman getirdiğinde gerçekten nefret ediyorum . Bu bs, Hadoop gibi büyük dağıtılmış sistemler üzerine inşa edilmiş ve gerçekten şeyler almak parçaları C bulunmaktadır. PHP templating için kullanılır ve kullanıcı arayüzü, "FB PHP üzerinde oluşturuldu" demek için yeterli değil ...
TC1

10
@NB Evet, ancak bu durumda, IMHO "FB PHP üzerine inşa edildi" demek StackOverflow'un CSS ve JavaScript üzerine inşa edildiğini söylemek gibidir, çünkü burada ve orada bazı hoş UI dokunuşları var ...
TC1

13
PHP kodunu korumak istemediğim için seni işe almam. PHP, Perl ve JavaScript ve diğer acele edilmiş diller gibi özellikler kazanıyor, ancak çekirdeği aceleyle tasarlandı ve biri bunu değiştiremez. Belki de bazı Django ve RoR ve Grails öğrenmeyi düşünmelisiniz ve bu nedenle dile agnostik olmalısınız.
Meslek

Yanıtlar:


40

Sahip olduğum tek cevap şu: her şey berbat.

OOP'a karşı fonksiyonel veya prosedürel programlamaya karşı iyi bir argüman bulabilirsiniz (hızlı bir arama onları ortaya çıkaracaktır). Görünüşe göre PHP'nin OO desteği bunu savunuyor.

Google boşluğu berbat ve her şey için sonuç bulacaksınız. Python berbat . Ruby berbat . Raylar berbat . PHP berbat . Java berbat .

Gerçekten neyin berbat olduğunu bilmek ister misin? Programcılar. Programcılar emmek. Herhangi bir iyi geliştirici , dilden bağımsız olarak, dile aşina olmasalar bile , inanılmaz bir uygulama, ön uç ve arka uç oluşturabilmelidir ! (Yani, iyi bir programcı herhangi bir dili etkili bir şekilde öğrenebilmeli ve çalışabilmelidir).

Ayrıca, bir uygulamanın başarısının koduyla hiçbir ilgisi olmadığını unutmayın. Facebook kodunun korkunç olduğunu duydum, ama Tanrı tarafından etkili. Aynı şey Wikimedia için de geçerlidir (Wikipedia PHP üzerine inşa edilmiştir ve aynı zamanda son derece popüler bir web sitesidir). Asıl önemli olan sonuç!

PHP kişisel olarak en tanıdığım dildir. Ölümüne kadar savunacağım. Tüm web geliştirme için PHP çerçeveleri, düz PHP kodu ve PHP, python ve ruby (ve hatta Java) ile çalıştım . Birinin diğerinden daha iyi olduğunu söyleyemem. Önemli olan geliştiriciler ve algoritmalar. Birçok dilde inanılmaz derecede iyi ve tamamen korkunç bir kod gördüm (çok fazla pozlama olduğundan özellikle PHP).


Şimdi sorunuz için: kiminle uğraştığınıza bağlı

İşadamları

Çoğunlukla sonuçları ve maliyet etkinliğini önemserler. Çok başarılı Facebook, Wikipedia ve Wordpress'in PHP kullanması, onları başarılı uygulamalar oluşturmak için etkili bir dil olduğuna ikna etmek için fazlasıyla yeterli olmalıdır.

Programcılar

Kodunuzun kendisi için konuşmasına izin verin. Bir geliştirici PHP'nin bir şekilde daha düşük olduğunu söylüyorsa, onlara etkili olduğuna inandığınız bazı PHP kodlarını gösterin. Pudingin kanıtı yemek yiyor.


8
"Herhangi bir iyi geliştirici, dilden bağımsız olarak inanılmaz bir uygulama, ön uç ve arka uç oluşturabilmelidir" - bunu Malbolge'da denedikten sonra tekrarlayın.
Michael Borgwardt

5
İyi bir programcının bilmediği dilde iyi kod yazabileceğini sanmıyorum. Terbiyeli, belki, ama iyi değil. Çünkü herhangi bir dilde iyi kod yazmak, kütüphaneler ve dil hakkında iyi bilgi gerektirir.
svick

4
Katılmıyorum; iyi bir geliştirici, iyi uygulamalar yazmak için gerekli bilgiye aşina olmalıdır. İyi kütüphaneler ve sözdizimi bilgisi önemlidir, ancak bu iyi bir geliştiricinin kolayca alabileceği bir şeydir. Daha zor olan şey algoritma ve kavramlardır (ve muhtemelen sabır) .. dil Malbolge olsa bile. Ya da belki harika bir geliştirici düşünüyorum .
Patlama Hapları

7
success of an application has nothing to do with its code<- Doğru. Ancak insanlar "PHP kötü bir dildir" derken, "PHP'de yazılmış uygulamaların kötü olduğu" anlamına gelmez, bunun yerine "PHP'de yazılmış uygulamaların kod spagetti nedeniyle çalışması eğlenceli değildir" anlamına gelir. Emin olmak için PHP'de yazılmış harika uygulamalar var. Ama ben bu cevabın PHP "kötü" olarak adlandırdıklarında programcıların ne anlama geldiğini düşünmüyorum.
Billy ONeal

2
@BillyONeal Bir dilin "iyi" veya "kötü" olup olmadığına ilişkin ölçümünüz nedir? Uygulamalar her şeydir .. hiç kimse kod umurunda değil . Linus Torvalds, C ++ 'ın ne kadar korkunç olduğu konusunda bir rant yaptı - bazı programcılar kötü kod yazdığı için her şeyin kötü olduğunu söyleyebilirsiniz.
Patlama Hapları

20

PHP'nin alaycı bir geçmişi vardır. Kısa bir süre önce bile çok daha iyi, ama çok kötü uygulamaların ve kalıpların cesaretlendirildiği ve kaçınılması zor olan bir zaman, çok uzun bir zaman vardı. Orada hala etrafında tekme korkunç bir PHP kodu nesil var ve yeni programcılar eski kodu okuyarak öğreniyorlar, kötü davranışlar öğreniyorlar. PHP artık blackend itibarını hak etmeyebilir, ancak yine de kazandı.

PHP'yi savunmanın en iyi yolu, sanatın mevcut durumunu dikkatlice mesafelendirmek ve herkesin bildiği tarihten ayırmaktır. PHP'nin korkunç bir dil olmadığını söyleyebilirsiniz, ancak birkaç yıldır sektörde olan biriyle konuşuyorsanız, bellekleri aksini söyler.

PHP ekibinin hatalarından nasıl öğrendiğini ve dilini daha iyi nasıl değiştirdiğini gösterin. Gitti sihirli tırnak ve kayıt küreselleri günler. Gitti küresel-her şey paradigması ve güvenli mod ve mysql_escape_string. Onlara gerçek PHP programcılarının her zaman ad alanlarını ve parametreli sorguları kullandığını, kullanımdan kaldırılmış işlevlerden kaçındığını ve her zaman kütüphane kodlarını belge kökünün dışına koyduğunu açıklayın.

PHP değişti ve PHP programcıları değişti. Bu yüzden PHP bugünkü harika bir platform. Ayrıca, müşterilerinizin önceden yükleneceğini bildiğiniz tek platform budur. Bu çok büyük.

Bir yan not olarak, mevcut CMS motorlarını ve çerçevelerini PHP için büyük bir kazanç olarak göstermeme tavsiye ederim. 4 gün önce Websense güvenlik çalışması gibi şeyleri işaret etme riskini, son web sitesi enfeksiyonlarının% 94'ünün Joomla ve Wordpress gibi yazılımlar çalıştıran PHP web sitelerine karşı olduğunu gösterme riskiniz var . Görülmek istediğiniz şirket değil. Bunun yerine kod olacağına işaret yollu diğer şeyler hepsi daha güvenli.


1
+1 - ancak - ama - Kodunuzun birkaç profesyonel tarafından yapılan kod akran değerlendirmelerinden "çok daha güvenli" olacağını iddia etmek, güvenlik konusunda deneyimli kimseye çok fazla su tutmayacaktır. Herkes güvenlik hataları yazar. İşin püf noktası onları kötü adamlardan bir adım önde düzeltmektir.
Billy ONeal

@BillyONeal yep. Son paragraf olduğu anlamına biraz ... garip olarak grev ve güvenlik yaklaşımınızı düşünmek yeniden gerçekten yapmak. Ben PHP olmayan PHP webapps vs güvenliği hakkında bir çok araştırma yaptım ve raporlar rahatsız edici, kitlesel PHP karşı çarpık. Bu PHP'nin kötü olduğu anlamına gelmez, ancak güvenlik gerçek bir endişedir.
Mart'ta

1
"Ayrıca, müşterilerinizin önceden yükleneceğini bildiğiniz tek platform" Bu ifade benim için tamamen yanlış görünüyor, Konuşlandırılan her sunucu bir LAMPhp yığınıyla dağıtılmıyor veya birlikte göndermeyi denediğim herhangi bir linux sunucusu dağıtımı yok PHP önceden yüklenmiş. Ancak, şimdiye kadar kullandığım her linux dağıtımı Python 2.x ile geliyor. Bazı yaygın yardımcı programların buna bağlı olduğundan şüpheleniyorum.
ThorSummoner

9

PHP, web'in COBOL'udur. Her iki dil de saygı görmemekle birlikte, birçok insan yaşam binalarını ve bakım sistemlerini kendileriyle yazıyor ve kendi ana dünyaları için ( yani sırasıyla web ve ticari iş) hemen hemen her büyük bilgisayar sisteminde mevcut . Her iki dil de, daha sonradan daha iyi öğrenen ve takımlarını geliştiren programcılar tarafından uygulanan eski ve eski alışkanlıklara dayanan diğer, daha popüler dillerin uygulayıcıları tarafından incelenmektedir.

PHP o kadar şanslı olmalı ki COBOL'un hayatını yaşıyor. COBOL, FORTRAN'dan başka bir şeyden daha uzun süredir var ve yakında hiçbir zaman yok olmayacak. Günlük kullanımda, onları sürdüren insanlardan daha eski olan birçok COBOL programı vardır. "Yeni sıcaklık" olmayabilir, ama onunla ve onunla çalışarak kazanılacak para her zaman olacaktır.


4

Madalyonun diğer tarafını anlamak ve PHP'nin eksikliklerini tanımak da yararlı olabilir. PHP bir şablon dili olmaktan çok ilerlemiş olsa da, geliştirilebilecek birçok şey var. PHP'nin hala eksik olduğu bazı noktalar vardır: Unicode, fonksiyonel özellikler, standart kütüphanenin organizasyonu, arrayvb.

Benim önerdiğim - PHP güçlü ve zayıf yönleri hakkında yapıcı bir tartışma yapmak için - tüm bunları kabul etmek iyi olabilir. "Evet, PHP standart kütüphanesinin çok organize olmadığını biliyorum. Ama eğer bugün yazılmışsa, ad alanlarını ve nesne yönelimli API'leri kullanabilir". "Evet, varsayılan dizinin sözlük ve dizi yapılarını karıştırarak biraz karışıklık yaptığını biliyorum. Ama eğer daha iyi koleksiyonlar istiyorsa, SPL'den faydalanabilirsiniz".

Diğer insanların argümanlarının bir nedeni olduğunu bildiğinizi gösterirseniz, bakış açınız daha da güçlü olacaktır.


2

Neden?

Kendinizi savunmanız gerektiğini hissettiren herkes (kariyer, eş, harcama alışkanlıkları vb.) Kendi zamanını boşa harcıyor. Kendinizi savunmak için zaman ayırıyorsunuz, sadece yanlış türde insanları mırıldanıyorsunuz - şimdi hem zamanınızı hem de onların zamanını boşa harcıyorsunuz.

Bu insanları hayatınızdan çıkarın - onlarsız daha iyi olursunuz.


4
Yani, cevap kişisel almak ve görmezden gelmek? Bu kültürel bir sorundur, bunu ele almayı tercih ederim ve argümanlarımı cehaleti azaltmak için daha iyi ve daha özlü hale getirmeyi deniyorum.
17:12

3
Bir boşlukta, buradaki tavsiyenize katılıyorum, ancak PHP savunulamaz. Mark Zuckerberg'in PHP'nin berbatlığına rağmen nasıl başarılı olduğuna hayret ediyorum : codinghorror.com/blog/2008/05/…
Jim G.

1

İnsanları PHP ve geliştiricilerinin değerli olduğu konusunda ikna etmek için kullanabileceğiniz kısa ve tatlı bir astar yoktur, ancak soruyu sormadan hemen önce çok ikna edici bir argüman yazdınız.


1

"PHP kötü bir dildir" konusunu ele almak için, söz konusu bireyin neden kötü bir dil olduğunu düşündüğünü bulmanız gerekir. Belki PHP ile yazılmış kötü bir proje üzerinde çalıştı. Belki de değişkenlerine önek eklemeyi sevmez $. Belki de dili kullanmaya çalıştılar ve sürdürülemez bir karmaşa yazdılar. Diğer programlama dillerinden gelen birçok programcı PHP'yi görür ve bir karışıklık görür, çünkü PHP'de mantıklı olan şey diğer dillerde veya diğer platformlarda gerçekten mantıklı değildir. Örneğin PHP'de, diziler "evrenin koli bandı" dır ve hemen hemen her şeyi başarmak için kullanılırken, diğer programlama dillerinde böyle bir şey saçma olur.

Burada cevapların bir kombinasyonunu öneririm.

  1. Gibi tylerl dedi modern PHP yaşlı kuzenler daha iyi belirgin olduğunu göstermek zorundayız. Gitmiş olması create_function. Gitti includeher yerde elle arama ormanı .
  2. PHP'de hatalar olduğunu kabul edin. Her programlama dilinde hata var. Aksi takdirde, birçok ciddi programcı bir "fanboi" olarak yanıtınızı tamamen görmezden gelecektir.
  3. İnsanlara PHP'de diğer programlama dillerinde zor olan şeyleri gösterin. Programlama dilleri bazı görevleri kolaylaştırmak için tasarlanmıştır, bu da diğer görevleri zorlaştırır. C? Bellek manipülasyonu ve bit saldırıları gerçekten kolaydır ve dil gerçekten basittir, ancak büyük uygulamaları korumak zordur. Java? Sahip değil freeve her şey "OO-ish", ancak çalışma süresi büyük ve OO sınırlayıcı olabilir. C ++? Dilde tam olarak ilkel türlere (örn. İnt) benzeyen, ancak büyük miktarda karmaşıklıkla gelen türler yapmanıza izin verir. PHP? Çok fazla programlama bilgisi olmadan başlatmayı gerçekten kolaylaştırır, ancak sonuç olarak internette çok sayıda çöp kodu vardır.
  4. PHP'nin dil dışı avantajlarını kabul edin. PHP'de hala çalışmak için can sıkıcı bir dil olarak birçok şey var. Ancak yapılandırması kolaydır, dağıtımı kolaydır ve çok fazla çalışma yapmadan "takabileceğiniz" çok sayıda harika kitaplık ile birlikte gelir.

Her dil için bir yer var. Eldeki probleme uyacak dili seçin, tercih edilmeyen bir dili ait olmadığı yerlere ayakkabı çekmeye çalışmayın.


1
-1: Neden PHP'yi savunmaya çalışıyorsunuz? Berbat: codinghorror.com/blog/2008/05/…
Jim G.

1
@JimG .: Çünkü OP benden yapmamı istedi. Burada şeytanın avukatı oynuyorum; Ben gerçekten PHP ile kendimi çalışmak umutsuz. Ancak bir sistemin çalışmak için can sıkıcı olması, o sistem hakkında iyi bir şey olmadığı anlamına gelmez. Biri büyük şakalardan bile öğrenilebilir. :)
Billy ONeal

@BillyONeal Onunla çalışmaktan neden nefret ediyorsun? Şeylere kendim karar veriyorum.
johnny

@Johnny: Çoğunlukla, büyük sistemler oluşturmak için uygun olmayan bir betik dili olmak. Komut dosyası yazma dilleri hızlı prototip oluşturma, uygulama kolaylığı ve kutuda büyük standart kitaplıklar için mükemmeldir. Ancak, onlarla birlikte büyük sistemler oluşturmak, derleme zamanı denetimlerini ve kısıtlamalarını uygulayamama nedeniyle genellikle sürdürülemez karışıklığa neden olur. PHP'yi senaryo senaryoları için esnek ve iyi yapan şeyler (örn. Değişkenler türlenmemiş), bir bileşeni kullanan birkaç kişiden daha fazlasıyla sistemler kurmayı zorlaştırır.
Billy ONeal

@Johnny: Açıklığa kavuşturmak için - PHP ile büyük sistemler oluşturmanın imkansız olduğunu söylemiyorum - Facebook ve Şti. Sadece daha iyi derleme zamanı sözdizimi ve anlamsal denetimler sağlayan dillerden daha zor olur.
Billy ONeal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.