[PHP is a bad programming language. You should not use it.](http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/) ---- Nearly everything that's bad about PHP is called out in that first link, so I don't have a whole lot to add in terms of additional bad things. ---- What I'm thinking about today though, is whether and how it is OK to communicate about PHP's badness. (And, perhaps by proxy, bad software technology in general, as a person in the software field.) ---- First and foremost, I think it's important to always try to not attack people personally for their technology associations. In other words, if you meet a PHP programmer, even if they have some objectionable opinions, it's important not to call them names. Be polite. Be friendly. Be understanding and compassionate. Remember: they're more a victim of PHP than you are. ---- I say technology "associations" and not technology "choices" on purpose. Technology is so complex that we generally do not choose our tools like a craftsperson meticulously selecting the most appropriate tool for a job. That's basically impossible, since we rarely even have any objective, to say nothing of scientific, criteria for choosing between different tools. Even personal taste is largely shaped by what our friends tell us we should have learned. So if someone is a "PHP programmer" it is unlikely that they really considered being every other kind of programmer first and chose PHP above all others; more likely, they just stumbled into it, just like we all stumbled into our own technology selections. ---- That said, I don't think that it is necessarily a good idea to pretend that working in PHP should necessarily be treated as equivalent to working in other, better languages. You should be able to be nice to PHP programmers but retain the conviction that programming in PHP is wrong. ---- "But glyph", I hear you saying, "What do you mean 'wrong'? If someone likes working in PHP, what's wrong with it? Who are they hurting?" ---- So let me give a concrete answer. If someone uses PHP, they are potentially hurting: 1. Their users. 2. Their colleagues (other programmers). ---- They're hurting their users because their users are probably not sophisticated enough to understand what the fact that they're using PHP means (and may not even be able to tell that they're using PHP at all). It means that there is a higher probability that the program will have a range of security bugs. It means that the programmer has to take extra care to avoid logical errors in a variety of contexts. It means that, overall, the software is going to be of worse quality than software with the equivalent amount of effort expended to create it in another, better language. ---- They're hurting their colleagues because when their users have their passwords stolen, or their data lost, through the fault of a shoddy component of PHP itself, or through the fault of a bug introduced because PHP is hard to program in, this diminishes the faith of the general public in computers (and therefore, programmers) yet further. ---- But this stream isn't really about whether PHP is a problem or not. I just want to make it clear that I find it nonsensical to argue that it *can't* be a problem because all programming languages are equivalent or it's just a matter of personal taste. It's really about *how to talk* about the fact that it's a problem. ---- For starters, although I am fairly confident in my assessment of PHP, because I have heard no thoughtful counter-arguments, and Eevee's article (as well as the dozens, or maybe even hundreds, of others like it) is rather comprehensive and damning, it's important to note that my understanding does not rise to the level of a scientific theory of PHP's crappiness. I cannot ***prove*** that PHP is crappy, I can just ***argue*** that it is. I cannot predict, with any degree of success, the failure of a business or a project or a research endeavor based on PHP, because there are a number of variables in play and isolating the influence that the choice of PHP would have is, with current methodologies, basically impossible. And, critically, as far as I'm aware, neither can you. (Although, if you can, please send me the proof, that would be absolutely fascinating.) ---- Given that we can't *prove* that PHP is bad, while I certainly *believe* it is so, to the best of my ability and current resources, I must have a certain level of humility about it as well. We should be able to acknowledge that people know PHP, and use it, and that PHP has enabled good things (even if other things could have enabled those good things better). ---- Critically, there are times when, given the constraints of a problem (both political and technical), PHP is actually the better option. For example, for all its warts, it's generally a better idea to build a web application in PHP than in C. This despite the fact that C is quite a reasonable programming language certain problems, it is considerably more labor-intensive than PHP and can result in even more security-critical mistakes. ---- Critically, there are times when, given the constraints of a problem (both political and technical), PHP is actually the better option. For example, for all its warts, it's generally a better idea to build a web application in PHP than in C. This despite the fact that C is quite a reasonable programming language certain problems, it is considerably more labor-intensive than PHP and can result in even more security-critical mistakes.