

Ask HN: Why does PHP "suck"? - llambda

Let me be clear: I'm not a PHP hacker, I don't use it and probably won't have an immediate need for it. However it's been my perception that many people have a strong opinion about PHP. I'm wondering what specific technical reasons there are for this?<p>(Please excuse me if this isn't the right method for asking these kinds of questions.)<p>Edit: I don't actually have an opinion, in other words I don't think it "sucks", but I'm hoping that some of you might be able to address that "PHP sucks!" line I read so often.
======
rosenjon
Yes...it sucks so much, that Facebook used it to scale a network worth $50
billion dollars today.

From a coding perspective, it is a very "loose" language (not that kind of
loose). This has advantages and disadvantages, depending on what you are
doing.

It is very easy to learn, and therefore there is a large degree of
stratification with PHP devs. Professional coders turn their nose up at PHP,
because it is kind of like telling Tiger Woods that you play golf. Maybe you
do...but you don't play his game of golf. It's more impressive to say you code
in a language that is difficult to do well, and that will punish you badly if
you don't code in it well. PHP is pretty forgiving, even for pretty crappy
code (I've seen some pretty awful stuff).

The truth is that PHP is a great web language. Rails and other frameworks
provide tighter integration with the db and view layers, but this isn't
necessarily a good thing. PHP allows for that level of integration if you want
it (as mentioned, there are many PHP based frameworks). It also happens to
have a large, open source code base that is reviewed by many, many eyes, so
bugs get fixed quickly and the language evolves quickly. The help manual is
superb, and it performs well across hardware platforms.

You will hear many baseball fans saying the other team's players suck. Most of
the time it isn't true.... it's just a pride thing.

~~~
code
It's funny but people always reference Facebook whenever PHP is called to
discussion. Former CTO and now cofounder of Quora, Adam D'Angelo, has said so
himself the main reason for Facebook staying on PHP was mostly for legacy
reasons. There was simply no good reason to continue using PHP but it had
already become a core part of Facebook so they optimize as best as they can.
In building Quora, he decided in hindsight to use Python and had Facebook not
been so entrench in it, they probably would have switched. That isn't to say
Facebook doesn't already use other languages as part of their infrastructure.
And it was in part why hiphop was developed.

That said, I have nothing personal against PHP and have been a PHP developer
for years. It does get the job done and is forgiving as you have said but make
no mistake, there are better alternatives. There are things that, for example,
Python and Ruby is able to do that PHP can't since PHP is purely a web base
language and Python and Ruby are not. At the end of the day, it's really what
the developer is most comfortable with.

~~~
rosenjon
"At the end of the day, it's really what the developer is most comfortable
with."

Totally agree. I would maybe extend to say its what the team of developers is
most comfortable collaborating around (assuming you are more than 1 person).

Basically, it should be about building a good product. The end user generally
couldn't care less what programming language your project was built in. If you
can deliver the best experience in the fastest amount of time with programming
language X, then that's the one you should use.

------
techvibe
I know HN ist not place to prais php... PHP ist easy to learn and it easy to
code in php, but if your a professional software developer you can also write
professional software for php.

You can develop faster, because of large amount of built-in functions and
classes. The "shared nothing" philosophy makes it almost unbeatable in terms
of performance. Thats why a majority of large sites like Facebook, Wikipedia,
Yahoo and Flickr is powered by PHP.

Well php is not as structured as ruby or python. Sometimes it is not
structured at all. :-(

Other HN users would certainly talk about disadvantages of PHPafter my
comment. ;-)

~~~
bmelton
Please explain how you consider it 'less structured'. I admittedly don't work
with much PHP any more, but it has namespaces, classes and objects.

I can write linear Python just as ugly as anything a PHP developer could come
up with (probably). And I could write MUCH more destructive C code than
anybody in PHP could (probably).

If you mean it's less structured because of Rails or Django, I'd submit that
PHP has CodeIgniter, Zend, and a bevy of other frameworks that all seem to be
pretty solid to an outsider looking in.

~~~
jnankin
I think part of this is the fact that there are a myriad of functions that are
just "baked in" to the language, making it a little chaotic. Sometimes it
seems like some PHP contributer needed some function and just decided to add
it to the language. (Examples: rsort, sort, http_build_query, rawurldecode,
urldecode, etc.)

There should be Util or Helper libraries that do that, and in a much more
organized way. On the flip side, these commonly used functions are written in
C, so they're most likely faster than if you were to write your own in php or
load a library.

Either way, I love PHP and use Symfony for all of my projects. PHP/Symfony is
pretty much like rails but without the cracked out ruby syntax.

------
nbpoole
A very good answer from Quora: [http://www.quora.com/What-are-PHP-s-main-
flaws-(and-good-par...](http://www.quora.com/What-are-PHP-s-main-flaws-\(and-
good-parts\)/answer/Brian-Krausz)

Or, if you'd prefer an HN discussion:
<http://news.ycombinator.com/item?id=1805729>

------
redredraider
PHP doesn't suck. It runs the internet. It's possible to write crappy code in
any language.

------
lowprofile
It doesn't. It is like anything else, strengths and weaknesses. Disclaimer: I
am biased since my successes have all used it.

------
bmelton
It doesn't.

You're right, this isn't the right way to ask these questions, and since you
obviously recognized that, I can't imagine why you didn't bother to try to
come up with a less inflammatory way of asking the question.

~~~
llambda
My apologies. Perhaps I should delete this post?

~~~
jagtesh
Or edit it perhaps and make it a little less condescending.

