question I linked silindi gibi, ben burada bazı yer olacak:
Question
Ben PHP korkunç bir dil çağıran başka bir soru parçacığı bir dil-in-yanak açıklama yaptı ve o deli gibi aşağı oy var. Görünüşe PHP seviyorum burada bir sürü insan var.
Yani gerçekten merak ediyorum. Ne eksik? Ne PHP iyi bir dil yapar?
İşte sevmemek için benim nedenleri şunlardır:
PHP yerleşik ve kütüphane işlevleri tutarsız adlandırma vardır. Öngörülebilir adlandırma desenleri herhangi bir tasarım önemlidir.
PHP yerleşik fonksiyonların tutarsız parametre sipariş var, örneğin array_map vs array_filter basit durumlarda rahatsız edici ve beklenmedik davranış ya da kötü her türlü yükseltir.
PHP geliştiricileri sürekli yerleşik işlevleri ve alt düzey işlevselliği itiraz etmek. Onlar pass-by-başvuru işlevleri için önerilmemektedir zaman iyi bir örnektir. Bu kimse, diyelim ki, fonksiyon geri aramaları yapmak için bir kabus yarattı.
Yeniden tasarlanırken dikkate eksikliği. Yukarıdaki amortisman, birçok durumda, işlevleri için varsayılan değerler anahtar kelime sağlama yeteneği ortadan kaldırmıştır. Onlar PHP 5 bu sabit, ancak PHP 4 pass-by-başvuru kalktı!
Isim alanların yoksul yürütme (hepsini eski no name boşluk). Şimdi isim alanlarda var olduğunu, ne inceleyebilirsiniz karakteri olarak kullanabilirim? Backslash! Karakter bile PHP, kaçmak için evrensel olarak kullanılan!
Aşırı geniş örtülü türü dönüştürme hataları yol açar. Ben örtülü dönüşümler ile bir sorunum yok, diyelim ki, tekrar tamsayı veya yüzer. Ama PHP (son I işaretli) mutlu sihirli bir tamsayı için bir dizi dönüştürmek çalışacaktır.
Kötü özyineleme performans. Özyineleme herhangi bir dilde yazmak için bir temelde önemli bir araçtır; Karmaşık algoritmalar kadar basit yapabilirsiniz. Zavallı desteği affedilemez.
Fonksiyonlar harf duyarsız. Ben bu birinde ne düşündüğünü hiçbir fikrim yok. Bir programlama dili belirsizlik olmadan bir bilgisayar ve bir kod okuyucu hem davranışını belirtmek için bir yoldur. Case duyarsızlık çok belirsizlik tanıttı.
PHP (pratik gerektirir) sunumu ile işleme bağlanmasını teşvik eder. Evet, sen öyle yapmaz PHP yazabilirsiniz, ama bir şekilde (bir ses tasarım açısından) yanlış kod yazmak için aslında kolay.
PHP performans önbelleğe alma olmadan dipsiz. Herkes PHP için ticari bir önbelleğe alma ürün satmak mı? Oh, PHP tasarımcıları yapın, bak.
Hepsinden kötüsü, PHP web uygulamaları tasarımı kolay olduğuna insanları ikna eder. Ve bu gerçekten çok daha kolay dahil çaba yapmak yok. Ama aslında güvenli ve verimli hem de bir web uygulaması tasarlarken, çok zor bir iştir.
Programlama almak için pek çok ikna ederek, PHP programcıları kötü alışkanlıkları ve kötü tasarımın bir bütün altgrubunu öğretti. Bu onlara güvenle kullanmak için anlayış eksikliği yeteneklerine erişim verdi. Bu güvensiz olarak PHP'nin ün yol açmıştır.
(Ancak, kolayca PHP daha fazla ya da daha az güvenli başka bir web programlama dili daha olduğunu itiraf edecektir.)
Ben PHP ile ilgili eksik olduğumu nedir? Ben fakir programcılar yumurtlama olan bir dil bir organik yetiştirilen, kötü yönetilen karmaşa görüyorum.
Yani aksi halde beni ikna!
Top Rated Answer
Ben senin her bir madde yanıt bir deneyeceğim
PHP has inconsistent naming of
built-in and library functions.
Predictable naming patterns are
important in any design.
Ben de seviyorum ve bu konuyu nefret ediyorum. Özünde, bu sorunu doğru olduğu için. Neden bir çizgi ile bazı bi-sözcük işlevi bölünmüş, bazıları değil mi? Neden samanlık ve iğne parametreler bazen argüman imza pozisyon takas? Bu çok saçma. Ama günün sonunda ... Bu gerçekten önemli mi? Sadece bir tarayıcı tık uzakta intellisense ve php.net ile benim IDE, bu anlaşmanın sadece düz büyük değil. Bir dili olarak PHP karşı olumsuz mı? Evet. Etkili bir programcı olmak benim yeteneğini engelliyor mu? Hayır.
The PHP developers constantly
deprecate built-in functions and
lower-level functionality. A good
example is when they deprecated
pass-by-reference for functions. This
created a nightmare for anyone doing,
say, function callbacks.
Şahsen, ben bu iyi bir nokta olmadığını düşünüyorum. Amortisman dile, PHP yaptığı kadar Kruft vardır, özellikle bir evrimi için gereklidir. PHP "kolay kötü bir programcı * olması için yapmak" için çokça alır ama onlar gibi dilden aptal yapıları, kaldırmaya çalıştığınızda aynı zamanda, PHP grubu da sorun olur çağrı zaman pass-by -referans. Pass-by-başvuru çağrı süresini ortadan kaldırarak onlar şimdiye kadar yapılmış en iyi hamle biriydi. Bu "özelliği" ile daha bir acemi geliştirici kendi ayaklarına ateş için hiç kolay bir yolu yoktu.
A lack of consideration in redesign.
The above deprecation eliminated the
ability to, in many cases, provide
default keyword values for functions.
They fixed this in PHP 5, but they
deprecated the pass-by-reference in
PHP 4!
Ben hiç dikkate genel bir eksikliği var sanmıyorum, ben sadece bu özel değişiklik soktu ve ağzınızda ekşi bir tat bıraktı olmuştur düşünüyorum. Vaktinden yıllar değil eğer dil değişiklikler genellikle ay bilinmektedir. Bir göç rehber 4-5 hareket için sağlanan ve sürüm farklılıkları kılavuzda belgelenmiştir. Pass-by-reference-time diyoruz korkunç bir "özelliği" olduğunu ve geliştirici diğer yollarla elde değil herhangi bir ifade gücü vermez. Ben (sihirli tırnak gibi diğer bok) ile birlikte gitti sevindim
Poor execution of name spaces
(formerly no name spaces at all). Now
that name spaces exist, what do we use
as the dereference character?
Backslash! The character used
universally for escaping, even in PHP!
Ben bu konuda karışık duygular var. Parçam ", kimin umurunda karakter öncelemeli zaten bir dize dışında hiçbir anlamı yoktur" düşünür ve bir parçam "elbette onlar daha iyi bir şey kullanabilirsiniz" düşünüyor. Ama onlar olabilir? Bilmiyorum, ben Zend çözümleyici için bir geliştirici değilim. Da 5.3 kadar PHP hiç ad yoktu ki büyük bir dikkatsizlik mi? Evet, kesinlikle.
Overly-broad implicit type conversion
leads to bugs. I have no problem with
implicit conversions of, say, float to
integer or back again. But PHP (last I
checked) will happily attempt to
magically convert an array to an
integer.
Ben PHP bu nasıl yaptığını katılmıyorum için ok düşünüyorum, ama bu dili "kötü" yapar katılmıyorum. Ama bu konuda oturup güçlü yazarak vs zayıf konuda tartışmak istiyorum ne kadar bana sor. (PS I, at all yok) Kayıt için: bir argüman konularda türü ve baskı yoluyla çözülemeyeceğini tarafından zaman PHP bir e_warning seviyesi hata verecektir.
Poor recursion performance. Recursion
is a fundamentally important tool for
writing in any language; it can make
complex algorithms far simpler. Poor
support is inexcusable.
PHP web için bir DSL. Ben 8 yıldır bunu tam zamanlı yapıyorum ve belki genellikle can sıkıcı dizin veya XML zikzaklı bir tür için, özyineleme 4 veya 5 kez kullandık. Sadece sık sık web geliştirme için gerekli olan bir model değil. Ben yavaş performansını mazur değilim, ama bu bir üretim sorunu çok daha fazla akademik bir konudur. Eğer gerçekten güçlü özyinelemeli performans gerekiyorsa, PHP zaten sizin için yanlış bir dildir.
Functions are case insensitive. I have
no idea what they were thinking on
this one. A programming language is a
way to specify behavior to both a
computer and a reader of the code
without ambiguity. Case insensitivity
introduces much ambiguity.
Ben tamamen% 100 buna katılıyorum.
PHP encourages (practically requires)
a coupling of processing with
presentation. Yes, you can write PHP
that doesn't do so, but it's actually
easier to write code in the incorrect
(from a sound design perspective)
manner.
* Hmmm, bu konu umutsuzca tanıdık geliyor ...
- VEYA - Ama cidden, ben olağanüstü insanlar kesinlikle% 100 sen (hacmi ve stil PHP çiftleşmiş sistemleri tek başına bu kadar konuşuyor) istediğiniz herhangi bir çıkış sistemi uygulamak sağlayacak bir dil hakkında şikayetçi olacağını bulmak tüm bu yükü atlayın ve Sadece çıkışı doğrudan. Bu da tüm PHP kötü yapmaz. PHP iyi kılan bir parçası.
PHP performance is abysmal without
caching. Does anyone sell a commercial
caching product for PHP? Oh, look, the
designers of PHP do.
(Bir hızlandırıcı gibi) bytekod önbelleğe alma, veya çıkış önbelleğe alma demek?
Eski, o gerçekten ben bu konu hakkında bakım ne kadar bilmiyorum. Hızlandırıcıları ücretsiz ve çalıştırmak kolaydır. O dilin bir parçası değildir Biz neden hakkında iddia olabilir ama sonunda, ben çok konularda sanmıyorum.
Eğer çıkış önbelleği bahsediyorsun o zaman sana ne diyeceğimi bilmiyorum. Önemli trafik HERHANGİ web projesi (örneğin tohum podcast # 27) önbelleğe alma ihtiyacı vardır. Bu bir PHP özgü bir sorun değil at all.
Özetle, ben PHP bir çok akademik moda bir "kötü" bir dil düşünün düşünüyorum. Ve önceki sonrası muhtemelen "halletmek" için PHP kullanmak benim gibi insanlar tarafından aşağı seçildi.
Second Top Rated Answer
Tüm eleştiriler (ve biraz daha fazla) geçerlidir. Sen izin ve hatta PHP nefret bekleniyor.
Ama sonra tekrar, bazı yararları vardır:
- Her yerde birden bulunan
- Hızlı (özellikle opcode önbelleklerini kullanarak)
- Büyük toplum (ve büyük belgeler)
- Eserler
Iyi kod yazarak tüm olumsuzlukları başka bir dilde yazmak istiyorum değilse Son olarak, birçok üstesinden gelebilir. Birçok kat daha hızlı çalıştırmak ve barındırmak için ve pek çok alternatife göre ölçekli kolay olacak ki, PHP, sağlam, güvenli ve iyi kokulu kod yazabilirsiniz.
Third Top Rated Answer
What is it that I'm missing about PHP?
I'm seeing an organically-grown,
poorly-managed mess of a language
that's spawning poor programmers.
Simple. The fact that poor programmers get very defensive about their language. ;)
PHP is easy to learn, much easier than the alternatives, and once you've learned it, it's not exactly obvious 1) what's wrong with PHP, 2) how the alternatives are better, and 3) how to switch to, and learn, one of the alternatives.
And perhaps the fact that, well, what alternatives do people have? ASP? That has plenty of problems on its own, from being unable to run on the majority of webservers (Apache), to some ridiculous and overengineered design choices on its own (webforms? Viewstate? AJAX where your asynchronous" requests are intercepted and run sequentially?)
Ruby on Rails? Well, perhaps, except how many webservers support it again? It's not exactly easily approachable at the moment. And it's slow.
So perhaps PHP's "strength" is really that no good alternative exists.
At least this is why I stay away from all web programming when at all possible. PHP sucks, and I'm not too keen on any of the alternatives either.
PHP bile komik değil pek çok temel sorunları var. Unicode destek eksikliği, genellikle tam sunum karıştırma ve ... her şey, ya da kullanabilirsiniz (son I işaretli) yoktur varsayılan veritabanı modülü için, beklenmedik güvenlik açıklarına yol birçok örtülü tip dönüşümleri parametrelenmişse sorgular. Biz bir iki şey için yapılmış dili, veritabanı erişimi ve üreten HTML ve hangi hem de korkunç bahsediyoruz.
Bu sadece kötü bir karmaşa, bir dil tasarımı, nitelikli, ya da mümkün olmayan kişiler tarafından tasarlanmış bir dildir. ;)