"Despite its popularity, PHP is considered by the programming elite, almost without exception, as one of the worst languages currently in use today"
I would say, the blogging-about-programming elite, rather than the actual programming elite. I haven't coded PHP in years, but some of the most brilliant devs I know use it when it fits the task.
PHP is a programming language (that is, a formal grammar for specifying the operations a computer should perform), but also an implementation of an interpreter for that grammar. You're talking about the implementation, which is of fair quality (certainly better than, say, MRI Ruby) and very widely-deployed, a combination which many devs (brilliant or not) take advantage of.
People who say PHP is badly designed, however, aren't talking about the implementation; rather, they're strictly talking about the language itself—the syntax, the semantics, and the standard library. There is no advantage to the way PHP-the-language does things; it makes nonsensical choices (like the flat, disorganized, all-libraries-included function namespace, the inability to chain method calls in a single expression, the extreme amount of "weakly-typed" cruft surrounding the comparison operators, etc.) which derive no benefit.
It would be strictly beneficial to the programming ecosystem if PHP-the-language were treated as an object-code for other, better-designed languages to target, such that PHP-the-implementation could be used without needing to write in PHP.
PHP-the-implementation is pretty spectacularly shitty too — it'd be even worse than MRI for persistent processes of any sort.
What's good about PHP is the execution/dispatch/deployment model, which papers over massive deficiencies in the infantile implementation (much less the know-nothing language).
Excellent point, and often (as now) overlooked. PHP does have some brilliant design choices, for example attaching itself to the Apache process, terminating when the request ends - this makes a lot less vulnerable to issues like memory handling. Some extensions may leak like a sieve, but since it's all cleaned up when the request ends it never really becomes a problem.
PHP has been able to chain method calls and members since 5.0. The main thing that can't be chained outside of PHP trunk is array access after a method or function call.
I kind of agree. But I still find 90% of extremely talented programmers breath a sigh of relief when they find they're not having to use PHP. Even for web development.
PHP was great a few years ago, and by great I mean "one of the only options". PHP is active on every shared web host around. It's the norm. Only recently have the likes of Ruby and Python become popular on shared hosts. Personally I think that's fantastic.
Ok, I'll admit, this may sound a bit trollish, but if PHP is not one of the worst languages, then what languages do you rank below PHP? C comes to mind, not as a bad language itself, but lack of web libraries, but that's about it.
It has messy stdlib (gets()!) and lots of features that you can shoot yourself in the foot with (software security would look very different if it had arrays like D).
The C standard library is very clean. gets is left in the C89 and C99 standards for backward compatibility an deprecated right now. Nobody uses gets nowadays.
I don't think PHP is a beautiful language. But that's beside the point. Sometimes you need a hammer, sometimes a screwdriver. You don't dismiss a tool because it's not pretty.
Hammer and screwdriver are equally ugly/pretty. But that's beside the point - it's not the ugliness of php that puts people off, it's the clumsiness and awkwardness of the tool.
Is Instapaper merely adequate, or is it better? Would it have been that much better if it was constructed in Rails?
IIRC, Instapaper's a PHP application. I could have mentioned a larger site, but Instapaper was probably a better example, since it's quite popular with HNers.
Well, I hate Rails so that wouldn't be my first comparison.
But yes, it would probably be more easily maintainable if written in a better language, and the developers would be able to add new features more quickly.
To comment based on your metaphor, the problem is not that the screwdriver/hammer is ugly. It's that the grip doesn't feel right and it's unbalanced. You can turn the screw and drive the nail, but it takes more effort and might leave your hands scraped up.
I would say, the blogging-about-programming elite, rather than the actual programming elite. I haven't coded PHP in years, but some of the most brilliant devs I know use it when it fits the task.