*Language criticism.
via @geetadayal
http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
(...)
"Stance
"I assert that the following qualities are important for making a language productive and useful, and PHP violates them with wild abandon. If you can’t agree that these are crucial, well, I can’t imagine how we’ll ever agree on much.
"A language must be predictable. 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.
"A language must be consistent. Similar things should look similar, different things different. Knowing part of the language should aid in learning and understanding the rest.
"A language must be concise. New languages exist to reduce the boilerplate inherent in old languages. (We could all write machine code.) A language must thus strive to avoid introducing new boilerplate of its own.
"A language must be reliable. Languages are tools for solving problems; they should minimize any new problems they introduce. Any “gotchas” are massive distractions.
A language must be debuggable. When something goes wrong, the programmer has to fix it, and we need all the help we can get.
"My position is thus:
"PHP is full of surprises: mysql_real_escape_string, E_ACTUALLY_ALL
"PHP is inconsistent: strpos, str_rot13
"PHP requires boilerplate: error-checking around C API calls, ===
"PHP is flaky: ==, for ($foo as &$bar)
"PHP is opaque: no stack traces by default or for fatals, complex error reporting
"I can’t provide a paragraph of commentary for every single issue explaining why it falls into these categories, or this would be endless. I trust the reader to, like, think.
"Don’t comment with these things
"I’ve been in PHP arguments a lot. I hear a lot of very generic counter-arguments that are really only designed to halt the conversation immediately. Don’t pull these on me, please. :(
"Do not tell me that “good developers can write good code in any language”, or bad developers blah blah. That doesn’t mean anything. A good carpenter can drive in a nail with either a rock or a hammer, but how many carpenters do you see bashing stuff with rocks? Part of what makes a good developer is the ability to choose the tools that work best...."