4 ms·
I haven't used PHP since 2012 so I don't know if any of the stuff that made me hate it still applies. A lot has probably changed since, but I don't know to what
by throwaway8748 6y ago
I haven't used PHP since 2012 so I don't know if any of the stuff that made me hate it still applies. A lot has probably changed since, but I don't know to what extent.
Surprisingly, the technical inconsistencies isn't what I hated most about it. It's rather the fact that questionable practice was rampant and largely left unchecked in its many communities. The only way to realize this is to join another community where peer review is severe enough and bullshit detection high enough that mediocrity is rarely given the opportunity to infect your practice for long and fester. A proper community is supposed to nurture you into becoming a better programmer, so that you can take those lessons and carry them with you wherever you decide to go next. By contrast, my experience with PHP over the 6 years or so that I used it was that you learn 3 things today and you'll have to unlearn 2 tomorrow. Eventually I got fed up of the cyclical learning pattern and I moved on.
Some years after my move away from it, I decided to take a look back at some of the code that I had written with PHP. I was freshly appraising the sum of my past experience. I remember thinking that the language seemed to have a crisis of identity. It was dynamically and weakly typed, but with serious Java envy and so some of the less desirable aspects of Java were basically just cargoculted in, but in a shitty incomplete way. Private, protected, public class members, what a joke. If you're a PHP programmer, did you ever ask yourself why would Python or Ruby programmers somehow be able to get by without this shit and not you? Do you know that because of the way its interpreter works there are some technical benefits for Java to have these besides the fallacious architectural "advantages" of hiding access from the programmer? Does the same thing apply to PHP? Interfaces and inheritance, without the possibility to overload methods, which can cause a lot of grief when a zealous and inexperienced library designer hasn't properly thought things through (which happened more than I'd like to remember in PHP projects). That was just at the language level, but many of the big frameworks followed suit with the Java obsession, by implementing a slew of circuitous patterns aimed at convincing programmers that they were now coding "Enterprise Style". Front Controller, Action Controller, Dispatcher, and a whole other lot straight out of pattern catalogs. When you think about it, most of those efforts were fallacious in PHP. If the problems that you were trying to solve were beyond the constraints of what PHP is typically good for, namely cms-type admin web apps, then you were probably better off with another language. On the other hand, if they applied, why bother with all the enterprisey bullcrap? But, but, but Facebook... Ah, shut up! Even Facebook had to invent a whole other language to fix that mistake. The other projects that didn't buy into this sort of architectural zeal went the other extreme, with their own experimentations and idiosyncrasies. Bastardizations of concepts that someone had seen somewhere else, but only half-understood, was common. Lots of Rails envy and no shortage of fame-driven wannabes that had failed to make a name for themselves in other communities, but somehow always found a way to shine in PHP. Ensued just more bullshit.
Anyways, that was a long time ago. I hope things have changed. I'm not sure I'd be back if they did, in hindsight what PHP has for it is one of the easiest "hello world" tutorials, but you end up paying for years the half-hour you saved to see these two words on a web page. And for what it's worth there are worse languages, but there are better ones too.