
Ask HN: Why no love for PHP?  - ironkeith
I'm curious as to why I rarely see PHP articles on Hacker News.<p>Is it because PHP isn't considered a "serious" language, and is mostly the realm of "designers" and "script kiddies"?<p>Do the developers who visit this site <i>all</i> code in Ruby, Erlang or Objective-C? Are PHP developers a minority in this community?<p>I play with Ruby &#38; Objective-C on my own time, but at work it's an all PHP shop. We primarily use the Zend Framework, and honestly it's pretty good (good enough for IBM...). With the recently announced build tools, and some of the classes we've developed on top of ZF, I can develop just as quickly in PHP as I can with RoR.<p>PHP is also fairly popular with successful startups. Larger sites like Digg, Flickr and Facebook are using at least <i>some</i> PHP to scale to fairly massive traffic; even Wufoo (a site which I feel represents what so many of us here are trying to achieve in essence) is written in PHP.<p>I will agree that PHP is a bit of a mess (backslashes for namespaces?), and that the internet is full of the wrong way to use it; however, there certainly are talented developers  writing quality software in PHP. Is there no interest in that here?<p><i>Apologies if this is a rehash of a tired topic; I poked around for a few minutes and didn't see anything relevant/recent.</i>
======
unexpected
People who are really good at their jobs obsess about their tools- artists
obsess over their paint, carpenters obsess over their power tools, cooks
obsess over their knives.

PHP is like buying a chef's knife at Wal-Mart. You can create a 5 star dish
with it, it cuts perfectly fine, but it doesn't inspire the same passion that
a Shun knife does.

Most restaurants in fact, don't use fancy-knives, they use just regular knives
and it works out just fine.

But, to draw the analogy back to programming, we're not regular restaurants.
We're wannabe "rock-star" chefs- coding and "startup-ing" isn't just a job,
it's part of our core ethos, so we obsess over all the tools we use, the text
editor, the monitor, even the chair- because it makes the experience all that
much better.

Most people do this about things they seriously care about. Runners debate
intricacies of running shoes or the perfect in race meal. I've had debates
with weight-lifters about weight-lifting gloves. Go over to a different forum,
and you will hear arguments about the perfect size of a suit lapel.

The "Everyman" tools can always accomplish 100% of the job, but provide 90% of
the experience. We spend an inordinate amount of time trying to get that last
10% out.

Is it probably unnecessary? Yeah. But people really bond over passions, and in
arguing/debating that last 10%, you can really connect with people, which is
why sites like Hacker News are fun and addictive.

~~~
edw519
Great argument, nice analogy, makes a lot of sense, and I completely (and
respectfully) disagree.

Your analogy reminds me of the greatest cook ever, my grandmother. She used
_no_ technology whatsoever. All of her tools had been _her_ mother's which
were probably manufactured in the 1800s. She chopped everything by hand in a
wooden bowl. (If anyone else helped her with the chopping, everyone at dinner
could tell.) She never used pencil or paper and measured nothing. She stood in
line at the farmer's market, the butcher, or the grocery store and inspected
every item. And absolutely nothing I have ever eaten since, in any restaurant
or home, has been remotely close to hers. It was magnificent! And I miss it so
much.

I'd like to think I have almost as much passion about my work. I use the most
primitive tools, 24 x 80 green screen editor, no framework, no IDE, no
debugger, and mostly pencil and paper. I savor every byte just as I imagine my
grandmother savored every little detail of her cooking. I'm not trying to save
time or be fast, I just aspire to creating Grandma-quality software. I only
hope my software brings someone the same joy her food brought all of us.

I've used many different tools, including php. And I rarely care how fancy
they are. Ironically, the simpler, the more joy I have found along the way.

~~~
unexpected
I don't think your story is incompatible with my analogy, in fact I think it's
totally in-line with my analogy.

Many hobbyists who have reached the utmost peak level in their art go totally
primitive. Cooks grow their own food. Carpenters make hand-made furniture,
people really serious about clothes go bespoke.

Just because we spend more time agonizing over things doesn't mean we have to
spend more money on them. More "expensive" and "fancy" doesn't make them
better- in cooking, look at the revival of cast-iron cookware and the people
learning how to sharpening their own knives. The coffee snobs don't buy the
most expensive starbucks brands- instead they go order fresh coffee beans,
roast themselves, and then grind them. A person really into clothes doesn't
get the latest Tom Ford/Armani suit- they instead get a bespoke suit from an
English tailor, which is often far cheaper. There has been a movement away
from $150 running to shoes to shoes like the vibram five-fingers to even
barefoot!

Why do masters of the art do that? I think it's because of the idea that you
can create something from nothing. This is very easy to do with computers
(programming is the only profession where you can truly create something from
nothing, limited only by your mind). You're not limited to someone else's
vision when you do this- you can have everything exactly the way you want, the
way you care about, the way that lets you exude your passion the most.

The guy who uses Ruby on Rails is no different from you, you just create your
art in different ways. Using a green screen editor doesn't matter to them-
they're not stirred up by it.

Instead, they get stirred up by using RoR. Maybe RoR solves a unique problem
that they've been dealing with. Similarly, the guy tired of dealing with Java
switches to Clojure and experiences the same light that you're experiencing-
going simpler doesn't matter that too much to him.

There's no right or wrong answer in simplicity vs. complexity. Someone out
there (Wozniak) is more of a purist than you and is writing everything in
Assembly. The guy writing the latest and greatest web application is using
Django because it's the simplest, most purest way to solve their problem- and
when they get passionate enough about it that this is no longer the case,
they'll go write their own.

You can get caught up in the tools and the techniques, but the one thing that
really matters is that the examples I gave (and the example that you gave,
which I love and will definitely remember) are of people expressing their
passion. We may express it in different ways, but at least we're exuding it.

People that don't exude any passion drive me crazy.

~~~
edw519
Agreed. You have a nice way of putting these things.

I said "I disagree" when I meant "This just doesn't apply to me". Sorry.

------
mdasen
There are lots of reasons.

* PHP attracts idiots. Partly that's because you don't need to know anything to make simple PHP. So, in the large pool of PHP programmers, there are a ton of idiots. And those idiots produce a lot of verbose code that gets used because it does something. Ruby, Python, Perl, etc. all put up a larger barrier because they don't just come with a session handler or whatnot built in. And that weeds out more of the idiots. Doesn't really have to do with PHP the language, but it is nonetheless significant.

* PHP has a bad type system that leads to errors. There, I said it. The fact that 0 == "string1" and 0 == "string2", but "string1" != "string2" is unacceptably bad.

* PHP has no namespaces. Yeah, they're planned for 5.3, but the implementation is just ugly. This makes it more likely to botch something in a larger project.

* Which leads me to my next point: include/require. In PHP, it's decently common to say require('some_file.php'); and just grab a huge hunk of code. Eww! That code could be doing anything - adding in variables, executing code, etc. While it's true that other languages can do that as well, that's generally not the case - other languages are more in favor of importing objects or functions. Partly it's a language thing, partly it's a culture thing.

* Magic! So, how does mysql_query() know which database to connect to when you don't pass in a database connection? I mean, I'm guessing they're either using a global or if it's in C a static external variable, but PHP is littered with this crap. It's not necessarily bad, but it's magical.

* Functions! So, PHP now has cool object oriented stuff. Still, it doesn't use it at all. I don't object to strlen($var) that much when compared to $var->len(), but there are other cases where it's just crappy. So, PHP has a function strpos() which will return the position of the first occurrence of a substring within a string. Quick! In what order do you put the variables? In this case, it's string to be searched, search string. What about preg_match()? Oh, there you put it in the reverse order! And really, when writing functions, there is no "proper" order, but if you're doing $string.preg_match('/^apple$/'), there's a clear order.

* Looking more at preg_match(). What does it return? It doesn't return a match, it returns a count of the matches it finds. If you want the matches, you need to pass in a variable that it will take a pointer to as an argument so that it can place the matches in there. Bleh! How would this be done in a nice OO-way? $var->preg_match('/^apple$/').count() would get you the count and otherwise you get the match returned. Easy in a way that requires less memorization of weirdness and doesn't feel so wrong. And crappy things like that are done throughout PHP where things are weird, but end up

* php.ini. Terrible idea. PHP allows you to change very important things install-wide, directory-wide, app-wide, ick-wide! It's not just magic quotes. It's more that you never quite know what you're deploying to in a bad way.

Finally, it's that PHP is an older-style language without the cool things that
newer languages can do. PHP isn't bad per-se, but it isn't good either. The
biggest thing it has going for it is that it's easy on shared hosting. With
VPSs coming down in price to the point that they don't represent a huge
premium over shared hosting, that's become less of an attraction. PHP is fine,
but there's a decent amount to get annoyed with when creating a larger
application.

~~~
encoderer
I can't say I love PHP, but some of your criticisms are a little silly.

For example, about typing... your argument is that when you cast a string to
an int, it returns 0. What would you have it return, null?

Typing is jank in a number of ways, but in most cases I See the logic in the
original decision. To a noice, the idea that false == "false" (because "false"
casts to 0) but true != "true" just seems broken. But what else would you have
it do?

About namespaces, people are complaining that PHP should use the dot operator
like every other language. PHP uses dot for concat, which eliminates the
ambiguity of using + for both concat and addition that exists in other
languages. Now, they're going to use a backslash for namespace resolution. And
that does create operator ambiguity. So PHP trades one ambiguity (dot) for
this other.

And what do you possibly mean by "older style language"? Do you mean
functional features? As you probably know, lambad's and closures will be
available in 5.3. I agree that Python (my language of choice) and even C# (my
2nd fave) seem cleaner. But of course they do. They're new. Java seemed clean
in 1997, too.

And finally.. I do value consistency in userland code and in the runtime. And
PHP is horribly inconsistent. A salvation army of a language. But that stopped
actually affecting me about 8 years ago when I left behind VIM for a real IDE
with intellisense.

~~~
Zak
_What would you have it return, null?_

I wouldn't have it return anything. I'd have it throw an exception (type
error). Dynamic typing can be a Good Thing. Pretending types don't exist is
probably a mistake.

PHP uses the backslash for escaping characters in strings and for line
continuation. There's ambiguity being created any way you look at it.

Many languages much older than PHP seem much more modern. Scheme, Smalltalk,
Haskell, Python and even Perl come to mind.

------
tannerburson
PHP doesn't get mentioned, because it isn't interesting. I've done a lot of
PHP work, and still do. But there's not a lot of NEW going on in the PHP
world. Their latest earth shattering move is namespaces. The only interesting
thing about PHP's namespace support is how awful it is.

Almost all of the cool concurrency, natural language, efficiency, functional
programming, and what-have-you research and development, is going on outside
of the PHP community. Those are topics that HN collectively finds interesting,
so PHP gets left out.

That said, just because PHP itself isn't particularly interesting, doesn't
mean people don't build interesting things using it, and doesn't mean you
shouldn't use it.

~~~
indiejade
_there's not a lot of NEW going on in the PHP world_

There was an article on slashdot yesterday about PHP6. Here's one from IBM:

[http://www.ibm.com/developerworks/opensource/library/os-
php-...](http://www.ibm.com/developerworks/opensource/library/os-php-future/)

Not a whole lot of new, but something. I think PHP gets ignored sometimes
because it _is_ an older language, not the new and trendy thing.

~~~
nuclear_eclipse
> * I think PHP gets ignored sometimes because it is an older language...*

For what it's worth, Python is four years older than PHP, and it still gets a
good amount of attention on HN. Python just has more of the "inspiring
language" atmosphere, while PHP has more of the "corporate, mundane" feel. And
I'm an avid open source developer working on multiple PHP and Python
projects...

~~~
indiejade
All righty; I'll give you that. Try this logic: maybe because Yahoo! is all
about PHP and Google is all about Python and Yahoo! is older than Google. :)

------
coglethorpe
PHP has a few downsides, everything from poor naming conventions to security
vulnerabilities. People around these parts are always looking for the cleanest
solutions to their problems and the latest methods available. PHP's relative
age and problems make it neither.

That said, I coded my first startup in PHP. It's dead simple to make a dynamic
web page with PHP, but it's also dead simple to create a huge mess. In that
sense, PHP reminds me of C. It's pretty simple to write an app in C, but there
are 1,000 pitfalls.

Just like with C, there are definitely talented coders out there who can make
PHP behave correctly. Sadly, they are a minority. Many of them move on to
other languages and frameworks.

I've since moved on to Ruby (on Rails) as well as Python. Both languages offer
simplicity and power. Rails, in spite of being the Dane Cook of frameworks,
makes it extremely easy to create a web application.

~~~
JustAGeek
I agree with more or less with what you said but a downside of PHP is not
security vulnerabilities, that's really just a myth. I can't remember the last
vulnerability which could be directly attributed to PHP as a language.

Sure, there are plenty of apps containing holes but those are not caused by
PHP but by not coding correctly, eg not checking input making SQL injections
possible etc.

Which might confirm what you said, it's easy to create a huge mess with PHP.

But then, it's easy to create a huge mess in any other language, too. It's
probably even easier with Ruby due to its highly dynamic nature.

Languages are like tools, you have to know how to use it but you can't blame
the tool if somebody misuses it.

Edit: Fixed typo.

~~~
hapless
Languages are like tools: buying a the best set you can afford is the best
possible start to a project. PHP doesn't cause SQL injection flaws, but it
doesn't make it any easier. How many escape functions are there ? Shall we
count them ?

\----------

mysql_escape_string() - Escapes a string for use in a mysql_query

mysql_real_escape_string() - Escapes special characters in a string for use in
a SQL statement

mysqli_real_escape_string() - Escapes special characters in a string for use
in a SQL statement, taking into account the current charset of the connection

addslashes() - Quote string with slashes

stripslashes() - Un-quotes a quoted string

The magic_quotes_gpc directive

The magic_quotes_runtime directive

stripcslashes() - Un-quote string quoted with addcslashes

stripslashes() - Un-quotes a quoted string

addcslashes() - Quote string with slashes in a C style

htmlspecialchars() - Convert special characters to HTML entities

quotemeta() - Quote meta characters

get_magic_quotes_gpc() - Gets the current configuration setting of magic
quotes gpc

\----------------

I especially love the contrast between "mysql_escape_string" and
"mysql_real_escape_string," since the first one is fake in a magical, side-
effect-laden way.

~~~
EliAndrewC
I think this comment sums it up nicely: <http://blog.ianbicking.org/php-
ghetto-comment-11.html>

It basically argues that in PHP there's often an easy, insecure way to do
something and a verbose, secure way to do it. With regards to SQL injection,
Java is the same way; prepared statements are much more verbose and annoying
than string concatenation.

~~~
rbanffy
I regard string concatenation as very annoying in Java.

Actually, just about anything is annoying in Java. I guess I have been spoiled
by more modern languages like... Smalltalk/80 or Lisp'56.

------
ErrantX
_holds hand up_ I use PHP. Indeed I use PHP for most of my commercial web
stuff (i.e. stuff I make at work & most of my startup ideas).

Mostly I'm a Python fan but for websites PHP is just 100% easier for me
because I have a framework I know well (KohanaPHP) and years worth of
snippets/experience to use in prototying sites. I bet I can code a simple site
faster in PHP than Python.

As to why PHP isnt discussed much on here: well I will hazard a lot of people
take the same approach. We love exciting stuff in Python, C and Ruby (well,
not ao much ruby for me :P) but PHP is our grab-it-and-run language. If
someone knocks on the door and says "make me XYZ website in 2 days" we will
probably pull out the PHP.

Nothing exciting and new is really happening with PHP - it is doing what it is
supposed to do: help us produce dynamic websites fairly quickly with little
fuss. So we can get on with the _real_ job of hacking in Python (or Ruby or C
or..... etc.) :D

I could be wrong :)

~~~
RossM
I agree with this statement. I've reached a stage where I could code a PHP-
based website much quicker that in other languages. Admittedly it's what I
started programming on (and has taught me a few bad things, but certainly kept
my interest in programming).

I don't agree that there's nothing interesting going on though. I'd like to
see some more innovative extensions (which might be because they are coded in
C) but PHP Classes (<http://phpclasses.org>) is constantly producing PHP
libraries and snippets for common tasks

~~~
breck
God I hate phpclasses.org

The code is great, but the site is awful, just awful. Mirrors? What is this
1999? How much bandwidth can downloading ZIPPED php scripts use?

Oh yeah, and there's registration required and big, ugly, flashing banner ads.

If someone knows of a site with the same contents, please, please let me know
:)

~~~
RossM
I can agree with that, the site does look like it's still in the 90s. It's a
shame there isn't anything much similar (searching GitHub can turn up some
gems though). It's an idea I toyed with once.

------
KrisJordan
I abandoned PHP about two years back. 8 months ago, after going to a
conference and hearing the folks at Flickr talk, specifically Cal Henderson
([http://www.krisjordan.com/2008/09/16/cal-henderson-
scalable-...](http://www.krisjordan.com/2008/09/16/cal-henderson-scalable-web-
architectures-common-patterns-and-approaches/)) I got re-energized to take
another stab at making PHP pleasant to work with.

The results of my last push evolved into a PHP framework: Recess.
(<http://www.recessframework.org>) It's got annotations for a declarative,
meta-programming style. It's inherently RESTful (and more fine-grained content
negotiation is coming soon). The Models/ORM are lazy so that you can chain
together queries that evaluate at the last minute. Recess deploys just fine to
commodity $5/mo servers and was designed to be lightweight and fast without
giving up object-oriented design (a la Code Igniter).

What I feel gets lost in the "PHP is terrible" literature is a distinction
between PHP as a programming language and PHP as a technology / platform. As a
programming language, from an academic perspective, PHP is embarrassing. As a
technology/platform it's incredibly well suited for web applications because
that's exactly its intention. PHP's shared-nothing execution model, simple
deployment, efficiency & performance make it a great technology for authoring
web applications. Tooling has gotten much better too with Eclipse's PDT &
XDebug.

If you're growing tired of PHP and looking for a platform/framework to develop
on that is more productive and enjoyable try taking Recess for a spin. For me,
at least, it's made PHP fun again: <http://www.recessframework.org/>

~~~
KevBurnsJr
Every language must balance expressivity, performance and utility.

I think PHP strikes a good balance, and Recess definitely has the best
performance I've seen out of any ActiveRecord ORM in PHP.

------
cardmagic
PHP is not a language that was designed to be a language. It was originally a
set of scripts that slowly morphed into a kind-of language. Because of that,
PHP lacks a lot of the language features (threads, namespaces, proper OO
design from the ground up) that "serious" languages all have. Ruby was buit to
be the best language Matz could think of. Erlang was built to be a great
language for programming telecoms. None of the "serious" languages morphed out
of some CGI scripts.

As I already mentioned, PHP is not an OO language. It is a language that has
OO as a feature, but the core API is not OO. This creates a very awkward mix
of OO and procedural code.

One of the most embarrassing things about PHP comes from its complete lack of
naming and ordering conventions. Look at the array functions.
<http://us.php.net/manual/en/ref.array.php> 47 of these functions start with
array_, 25 of them are a mismatch of whole words and partial words that happen
to do array functions. The reason PHP documentation is so good is out of
necessity. Without fantastic documentation, PHP would be completely unusable
due to this staggering oversight.

------
JeremyChase
I have often thought the same thing as PHP is a fantastic web development
language, and it is very well developed. The documentation is very good, and
as you mentioned there are useful code examples right in the documentation.
The learning curve for PHP is very low, and there is library support for
pretty much anything you want to do. Oh, and it is dead simple to deploy.

I think RoR is one large reason why PHP is looked down now. More specifically,
there isn't a leading PHP framework that has a proven following or as well
executed marketing plan. There are a lot of PHP frameworks, but none that
capture the attention of the masses like RoR.

The other argument I hear is that the language is annoying to program in. This
just doesn't not compute in my brain as PHP code looks perfectly normal to me.
I think that some people just prefer certain syntax, and I have yet to come up
with a reason that I understand.

As you have probably guessed I have been a PHP fan for years, but I recently
started seriously using Ruby/Rails for some side projects. There are two
reasons I am playing with this instead of cakePHP/KohanaPHP/Symfony/Zend

1\. There is a lot of literature about Ruby/RoR

2\. I found myself resisting Ruby/RoR, and I don't want to be the old guy that
won't learn new technology

~~~
ErrantX
WHat would you recommend for getting into Ruby? I tried it once but their site
is horrible and the "Hello World" example is really babyish and idiotic - and
it put me off :)

I've never "got" RoR. Python makes sense to me as a killer all-purpose
language just as PHP makes sense to me as a niche for-the-web language (I cant
get these people that insist on running PHP standalone :o). But I never quite
figured the rails niche.

~~~
JeremyChase
ErrantX

I would highly recommend learning Ruby before trying RoR. The first time I
tried to learn RoR I didn't know any Ruby. I had limited success because I had
to battle the framework and the language.

You don't need to know everything about Ruby to start on RoR, but you should
be able to write some basic programs.

There are a number of online resources for Ruby:

Unofficial and old, but has a lot of good info:
<http://www.math.umd.edu/~dcarrera/ruby/0.3/>

<http://www.whytheluckystiff.net/ruby/pickaxe/>

<http://www.ruby-doc.org/docs/UsersGuide/rg/>

<http://qa.poignantguide.net/index.html>

For RoR guides online, I didn't find anything that I really liked. I ended up
with Sitepoint's Simply Rails 2.0 and followed it. I didn't find any free
guides/books that really helped me much. Once you get a basic understanding of
MVC you can learn a lot of from <http://railscasts.com> though.

PS: Sorry to everyone for the RoR/Ruby hijack

EDIT: Wrote a sentence misleadingly, fixed it.

------
jlsonline
Back in the day, PHP was exciting. It was free, it was powerful, it was easy
to learn. Everyone coming out of college knew C anyway and it has a similar
structure. You could suddenly give your circa 1999 web pages a page date in
REAL TIME and you could respond to forms without nasty cgi-bin. Eureka!

Nobody gets excited about it anymore because it solved the problem it was
aiming to solve a long, long time ago.

------
unfug
I've been using PHP at work and on personal projects for years. It has a very
low "barrier for entry", which is both good and bad. It's easy/cheap to hire
entry level programmers to write simple PHP, but it's all too easy to let them
jump into big projects too soon and write something that turns into a huge
mess. Well written PHP code can be just as easy to read as Python/Ruby/etc.,
but PHP makes it far too easy to write something that is a horrible mess.

At work we are still mostly a PHP shop, but anything I write on my own now
gets done in Python. PHP's complete lack of a coherent function naming scheme
is enough reason alone to get away from it.

------
Jem
I'd love to see more PHP on HN (I am here to learn, primarily, and PHP is what
I do), but the problem seems to lie in there being a lack of quality PHP
articles. Maybe I'm being unfair, but just lately I've been getting the
impression that the more someone knows, the less likely they are to share.

~~~
ironkeith
I follow the Zend Developer Zone (<http://devzone.zend.com/public/view>) and
find that an interesting article pops up every now and then. I've added a few
developer blogs to my feed reader from articles that I discovered there.

------
jcapote
If you can develop as quickly in PHP as you can with RoR, then you are not
using RoR to it's full potential.

~~~
boundlessdreamz
That is quite true. Even when using frameworks, PHP code is more verbose.

Also PHP has a proliferation of frameworks, so you may come across different
frameworks in different projects reducing your efficieny. Since Django and RoR
dominate in python and ruby respectively, the issue doesn't arise as much

------
garethr
One of the things that I think is relevant to startups hiring is that (
_warning_ experience mixed with opinion ahead) there are lots and lots of PHP
developers of wildly varying quality. This makes the initial stages of
recruitment time consuming. By looking for people with skills or interest in
Ruby, Python or Scala (or whatever is hot that month) you'll probably see less
interest but, on average, the quality and enthusiasm will probably be greater.
Which means it takes less time to hire (well, maybe), as well as getting the
better people (hopefully).

~~~
Zak
PG made similar arguments in his 2004 essay "The Python Paradox" -
<http://www.paulgraham.com/pypar.html>

I'm inclined to agree. If you know how to advertise within a language
community then using a lesser-known language will make it easier to find good
programmers. This is probably even true for the short-term contract gigs often
posted to freelance sites since there won't be hundreds of low-quality
responses to sort through.

------
breck
I like to code in other languages more than PHP but for the startup, that's
what we use.

We use PHP because at the end of the day startups are a job, and you've got to
be creating value. I find that PHP gets the (web development) job done better
than anything else.

Is programming in Ruby or Python more fun? Way more fun! But in the end, all
that really matters is what happens when someone points their web browser to a
URL. PHP was built for this use case and the whole LAMP stack solves this
problem extremely well without needing any additional frameworks on top.

Also, as ugly and awkward as the C {}; syntax is, and as much as I hate not
having certain features in PHP (i.e. chaining), I think there could be
something special about that syntax that has understated benefits as evidenced
by the sheer fact that the most widely used languages (C++,C,Java,PHP) all use
it. Maybe it's just because that's what everybody knows and not because it's
better. I'm not sure.

------
begemot
When you know you could save pages of code with it, being without proper
higher-order functions is beyond tedious.

------
JoelPM
Coming from a Java background into a startup that was built using PHP, it's
been my experience that PHP is difficult to scale. This is for two reasons:

1) PHP isn't long-lived. Every time a request comes in Apache launches the PHP
processor/interpreter and runs through the entire script. This means you don't
get a heap that you can use to cache things[0], you don't get the benefit of
JIT compilation, and you don't get the benefit of pre-compilation[1].

2) PHP development always seems to be tied tightly to a database. At some
point an extremely high-traffic app will need to scale beyond what a DB (even
a sharded DB) can support. To do this you have to think in terms of
asynchronous processing, out-of-process updates, aggressive caching, and more.

The second point isn't really an issue of PHP, but more an issue of the PHP
ecosystem - however, it affects the way I perceive the language itself.

Places that use PHP for high traffic sites seem to use it to build the
presentation layer, which seems to work for them, but the majority of the work
is being done by back-ends written in some other language.

[0] Yes, you can use memcache, but it still means, at the very least, a cross-
process hop and most likely a cross-network hop.

[1] Compiling to bytecode (for Java) is still better than no compilation.
Also, you only take the hit of starting the JVM once, not on every request.

~~~
e4m
PHP doesn't scale? Facebook has > 200 million users. It's written in PHP.

~~~
aaronblohowiak
The parent clearly talks about how PHP is used mostly for the presentation
layer of that class of applications.

------
lleger
Maybe I'm a pariah here, but I like PHP. Especially when I have teachers
cramming C++ down my throat. But Ruby is a great language, too. I've had my
fair share of fun with both.

I think the thing to remember is that as programmers we should be language
agnostic. This is because we need to chose the right tool to get the job done.
Granted, most times we can just choose our favorite language; however, there
are times when, say, PHP would do better than Rails, or vice-versa.

------
flooha
I've got nothing against PHP, it's just a matter of preference. There are a
lot of fantastic apps built using PHP and I use them on a frequent basis.
However, if I build something, it's Ruby all the way. I just find it much
cleaner and pleasurable to develop with. Looking at PHP makes my eyes hurt
now.

The great thing about PHP is that the difficult problems have mostly been
worked out. Getting a PHP site up and running and scalable is standard stuff.

------
ironkeith
In the past I've purposefully avoided submitting articles to Hacker News if
they were about PHP. I kind of just assumed that they would be downvoted just
for being PHP. I wonder if I'm alone in that?

Edit: fixed a typo.

~~~
Jem
You can't downvote articles (only flag them)?

~~~
zeantsoi
You can downmod after you've reached a certain karma threshold.

~~~
Jem
I was pretty sure this only applied to comments, not articles?

------
swolchok
It reminds me of Perl. Perl literally gave me a headache last time I coded in
it. (Incidentally, this is why I'm wary of Ruby as well.) Besides, I am
totally satisfied with Python.

~~~
apgwoz
I don't see too much similarity between Perl and PHP. Perl has a the syntax of
a loose cannon. PHP's syntax is very Java like.

* PHP doesn't have special variables that change things about the language like, the starting index of an array.

* Out of the box, Perl requires you to import modules to get functionality that PHP has with a simple function call.

* Perl has support for classes, but you feel like it's a hack every time you write one.

* PHP has classes, that give you the notion that they are part of the language (which they are of course, so are Perl's)

Until recently, I hadn't programmed in Perl in years, but I find that coming
back to it again has given me a new outlook on it. You might wanna take
another look. I still much prefer Python though.

~~~
davidw
Perl is also way faster than PHP, and has had nice things like closures
since... well, for a long time now. Not that I'd want to use Perl these days,
but language-wise, it's a bit more advanced than PHP is.

~~~
dbul
_way faster_ \-- sounds subjective to me. What references say this?

------
TallGuyShort
PHP offers little more than convenience. I use it myself because it's so easy
to integrate with PHP and MySQL, and it's easy. I think it's a decent platform
for a basic web-site, but further than that it doesn't offer anything truly
unique or powerful.

------
rbanffy
PHP was a hack conceived long ago, in a time where there were no complex (as
in "more than one page") web applications and little to no demand for them. It
has the readability of Perl and the structural elegance of 70's BASIC.

Need I say more?

~~~
rbanffy
Isn't it lovely when people can simply mod you down when they disagree with
you instead of trying to debate?

~~~
lincolnq
Your comment wasn't worth responding to, because it was an obvious troll,
designed to incite a strong emotional response from the reader. If you were
intentionally trolling, you picked the wrong audience. If not, you should try
to support your opinion with more facts and rational arguments.

~~~
rbanffy
I really thought it was an accurate and concise depiction on the history,
limitations and overall characteristics of PHP.

------
bcheung
I work as a full time web developer and am required to use PHP for everything
server side. It's one of the worst languages I have ever used but I live in a
LAMP world and everyone requires me to use it.

I have used Clojure and RoR in the past and really like them but unfortunately
I can't use them in reality. I wrote about it in this post on my blog.

<http://www.codeinnovator.com/uncategorized/lisp-vs-php/>

You can certainly develop professionally with it. It's just not a whole lot of
fun.

------
shaunxcode
php is my virtual machine. It runs everywhere (and cheaply), Anything is
possible with it - it's just really ugly - thus code generation is your
friend. This is something I hope to drive home with
<http://lisphp.googlecode.com> (nearly r5 scheme) and LET (my smalltalk w/
macro expansion) which is used in <http://voltron.googlecode.com>.

------
abyssknight
PHP is like that kid in school who got everything right but everyone hated.
I'll be honest, I love PHP. I love it as much as I love Ruby, Python and any
other _language_. For some reason communities have sort of ganged up on PHP
and beat it to a pulp. The funny thing is, PHP, for the most part, outperforms
them all in real world memory usage. Of course, that's probably because PHP is
a _language_ and Rails, Django and such are _frameworks_. PHP was built for
the web, and as such it does a good job serving up web content.

The problem is that uneducated neophyte developers are polluting the tutorial
scene and elitist, higher level language developers are shutting them down.
Why aren't we helping these people progress? Why are they hitting a glass
ceiling of knowledge?

I know, I was one of them. I worked at a small PHP shop and the attitude was
"make it work, ask questions later". We got the job done. It worked, and the
customers didn't notice a thing wrong with it. The problem was that I stopped
learning. There was nothing more to learn about PHP. Why? Because it was a
language. It's finite.

I've seen numerous posts about how horrible PHP is, but really, is it? It's a
language. PHP, unlike a framework, is what you make of it. There are no
standards, no methodologies, no guidance. That's what PHP needs -- a
framework. Just as Ruby and Python after it needed a framework. Not because it
makes you a better programmer, but because it allows others to understand,
maintain and manage your code. The language you use doesn't make you a better
or worse developer, it's how you use it.

Tools are tools. Skill are skills. I think the biggest mistake we make is
mistaking tools for skill. Some of the greatest programmers I know write
ColdFusion and PHP, and some of the worst I know write Ruby and Python (and
yes, PHP).

------
jrockway
I wrote a long post about this here a few weeks ago:

<http://news.ycombinator.com/item?id=579387>

Basic ideas -- missing language features, language features that don't work,
improper OO, lacking modern abstractions (where's a good ORM?). Read the whole
post for details.

------
jxcole
I use PHP every day at work. I find that the best way to program PHP is to
pretend it is java and ignore (almost) all the other features. Many of the
features of the language are very powerful and because they are so powerful,
PHP has a tendency not to scale well.

If there are 200+ ways to do one thing you can guarantee that looking at
someone else's code will always be an adventure. You CAN write good code in
PHP, but it is flexible enough that bad programmers will be able to take it
and do much worse things than they could with, say, java.

Call me old hat but I think type safety is an important aspect of scalable
projects. If I could add one feature to PHP it would be enforced type safety.

------
FlorinAndrei
It's the MS Windows of programming. Everybody uses it, nobody brags about it.

------
asnyder
Personally, I enjoy working with PHP, but only because I work with a
platform/framework on top of it. I would likely steer clear otherwise.

While PHP by itself can be a challenge to work with, various frameworks and
platforms abstract those idiosyncrasies while providing a significant increase
in out of the box features and functionality.

For instance, NOLOH (<http://www.noloh.com>) is one such platform. Others such
as Yii and CodeIgniter, while not as robust in certain respects, do a good job
of this too.

(Full-disclosure: I'm a co-founder of NOLOH)

------
BerislavLopac
PHP is not a programming language. It's just an overblown template engine.

------
bcheung
I work as a full time web developer and am required to use PHP for everything
server side. It's one of the worst languages I have ever used but I live in a
LAMP world and everyone requires me to use it.

I have used Clojure and RoR in the past and really like them but unfortunately
I can't use them in reality. I wrote about it in this post on my blog.

<http://www.codeinnovator.com/uncategorized/lisp-vs-php/>

You can certainly develop professionally with it. It's just not a whole lot of
fun.

------
fsniper
I'm a big fan of PHP for myself. But I've seen enough of PHP script kiddies
out there making nearly free (as in beer) websites/webapps. They become a mess
in no time.

Mostly hacking phpnuke, joomla or some other messy portals. Hacked sites
mostly never get any security updates or any kind. But employers having free
work done are ok with this scheme so more and more script kiddies emerge.

Also there is not much thing going on PHP nowadays. Maybe PHP is at peek for
it's purpose - doing web apps easy and quickly.

------
Kaizyn
The truth is that this is Hacker News. No matter how appropriate PHP may be as
a tool for many web programming jobs, no one wants to admit to their cool
'Hacker' friends that they use it. Just like you won't hear many people talk
about how they're using ASP.Net or C# for their startups. It's not that these
are in some way inferior or bad; it's just that you don't get any hacker cred
for using or talking about them.

~~~
abyssknight
I use .NET and VB.NET. I am not ashamed. :) Oh, and ColdFusion too. I'm proud
to be a language agnostic developer. Immune from hype, smoke and mirrors.
Hehe. Okay, maybe not as immune as I think.

------
tybris
I used it for years and still regret it.

------
ninjaa
For all its flaws, PHP and Perl are the only web languages that let you build
a web app in _whatever_ fashion you want.

This extreme flexibility coupled with mature libraries makes web app
development ridiculously easy. For a complex application that starts at ground
zero I would probably recommend Ruby or Python but really even that decision
is 50-50. We've faced this crossroads 3 times in the last couple months and
2/3 we've gone with PHP over Python, and not just cos of familiarity.

For any existing app, it's probably already in PHP or something worse like
ColdFusion, so migrating it to "good" PHP 5.x is usually the only logical
step.

That said threading, namespaces, sickening magic and the whole haystack/needle
needle/haystack game SUCK. But you can get everything done quick and
everything will scale and if you need to change it you know you always can
without tearing down a house of cards so ... I for one don't mind it, in fact
I quite like PHP and the PHP ecosystem.

------
paraschopra
I guess one of the most strongest reasons why PHP got popular was its default
support on shared hosts. You could taste your first real web creating with PHP
real quick.

------
santacruz
I earn money with PHP for 8 years now. I just love it. When you in love you
don't give a flying f..ck about anything else.

------
badger7
PHP is like a mobile phone that's a year old - it's perfectly good, but ain't
what the cool kids are playing with.

~~~
josefresco
Except every year the 'cool' phones come and go, and PHP is still around, kick
ass and taking names.

~~~
hack_edu
And my Nokia 5120 still boots up like it's first day when I pull it out of the
discarded gadget drawer.

~~~
dasil003
Do you mean because it's never been used?

------
TweedHeads
PHP is like Basic for web development

Everybody knows about it, but nobody talks about it.

------
c00p3r
Just imagine a fake swiss knife made in china with a hundred of blades and
tools, no one is good enough for its task.

------
JoelMcCracken
How is this a question?

------
keefe
I don't care for PHP because it's interpreted vs compiled, debugging is a pain
and it muddles view and application logic! Separation of concerns is one of
the key principles of software engineering. Also, library support is much
better in Java and it's generally a more mature language. I really want to
write my logic separately and unit test it against mock objects and this is
harder with PHP. My preferred stack is Java server talking to jquery front
end.

