PHP is extremely inconsistent, has pitfalls that are easy to fall into, but it's useful because you practically don't need to worry about importing much because they just put everything in the core.
Javascript was actually fairly consistent, despite having some pitfalls, until they decided to add classes and lexical scoping (e.g. you can't actually bind a context to a fat-arrow function, while you can for the older syntax), so now there's like 5 different ways to do everything and some have more pitfalls than others. At least I know how I can use the updates to make my own code cleaner, and new coders can just ignore that prototypal inheritance ever existed and the unique design patterns that came with it.
A friend texts me last night "we're ready to finally build a website for our bar"
half hour phone call later and a basic 4-5 page Wordpress website is decided upon.
And after what will be 8-10 hours of work sometime this weekend, I'll be finished with the site, have earned a quick $800 (friend prices) and he'll have something nice and easy to maintain.
PHP is not the devil - it allows a lot of us to earn a living / make some extra cash - backed by an incredibly huge community and is easy to write in.
If I was building the next Facebook - sure, I'd spend time researching languages, frameworks, etc... but day to day programmers don't care about language short-comings or pitfalls - we care about earning a living and whatever it takes to get the job done cost effective. And my friend cares about functionality / cost / ease of updating.
90% of the internet is made up of websites like this - quick and easy websites that serve a small niche population. Not massive scalable multi million dollar spanning websites.
I don't consider Wordpress's market penetration a plus, because it makes it a target. On the other hand, I made some money recently (unfortunately only for analysis rather than a solution) because a website that someone I know manages got a virus.
Javascript was actually fairly consistent, despite having some pitfalls, until they decided to add classes and lexical scoping (e.g. you can't actually bind a context to a fat-arrow function, while you can for the older syntax), so now there's like 5 different ways to do everything and some have more pitfalls than others. At least I know how I can use the updates to make my own code cleaner, and new coders can just ignore that prototypal inheritance ever existed and the unique design patterns that came with it.