
(We could all write machine code.) A language must thus strive to avoid introducing new boilerplate of its own. New languages exist to reduce the boilerplate inherent in old languages. Knowing part of the language should aid in learning and understanding the rest. Similar things should look similar, different things different. It’s a medium for expressing human ideas and having a computer execute them, so it’s critical that a human’s understanding of a program actually be correct. If you can’t agree that these are crucial, well, I can’t imagine how we’ll ever agree on much. I assert that the following qualities are important for making a language productive and useful, and PHP violates them with wild abandon. And you knock on the front door and it just collapses inwards and they all yell at you for breaking their door. Now imagine you meet millions of carpenters using this toolbox who tell you “well hey what’s the problem with these tools? They’re all I’ve ever used and they work fine!” And the carpenters show you the houses they’ve built, where every room is a pentagon and the roof is upside-down. And there’s no clear problem with the set as a whole it still has all the tools. Everything in the box is kind of weird and quirky, but maybe not enough to make it completely worthless. That’s less useful, but it still turns bolts well enough, so whatever.Īnd on you go.

You pull out the pliers, but they don’t have those serrated surfaces it’s flat and smooth. Still serviceable though, I mean, you can hit nails with the middle of the head holding it sideways. You pull out the hammer, but to your dismay, it has the claw part on both sides. Okay, well, that’s not very useful to you, but you guess it comes in handy sometimes. You pull out a screwdriver, and you see it’s one of those weird tri-headed things. I can’t even say what’s wrong with PHP, because- okay. I just blurted this out to Mel to explain my frustration and she insisted that I reproduce it here. It has paltry few redeeming qualities and I would prefer to forget it exists at all.īut I’ve got to get this out of my system. It’s so broken, but so lauded by every empowered amateur who’s yet to learn anything else, as to be maddening. PHP is an embarrassment, a blight upon my craft. Every time I try to compile a list of PHP gripes, I get stuck in this depth-first search discovering more and more appalling trivia.


And I can’t even point out any single damning thing, because the damage is so systemic. The language, the framework, the ecosystem, are all just bad. Virtually every feature in PHP is broken somehow.

Go on, ask! It makes for interesting conversation. I can tell you all manner of good things about languages I avoid, and all manner of bad things about languages I enjoy. PHP is not merely awkward to use, or ill-suited for what I want, or suboptimal, or against my religion. Combine with Sturgeon’s Law, and I have a lifetime’s worth of stuff to gripe about. There’s a lot in the world of technology I don’t like, and that’s really to be expected-programming is a hilariously young discipline, and none of us have the slightest clue what we’re doing. (This article has been translated into Spanish ( PDF, with some additions) by Jorge Amado Soria Ramirez - thanks!) Preface
