I’ve decided to start a series of short blog posts on how PHP gets in the way of creating of well designed applications, with a focus on missing features.
The language flamewar
PHP is one of those languages that people love to hate. Its standard library is widely inconsistent, and its gradual typing approach leaves fundamentalists in both the strongly typed and dynamically typed camps unsatisfied. The standard library of a language is important, and, amongst other things, it puts an upper bound to how nice an application written in a certain language can be. This upper bound is however not something you run into in practice. Most code out there suffers from all kinds of pathologies that have quite little to do with the language used, and are much more detrimental to understanding or changing the code than its language. I will take a well designed application in a language that is not that great (such as PHP) over a ball of mud in [insert the language you think is holy here] any day.
“sufficiently incompetent coders can write FORTRAN in any language. […] the converse is also true: sufficiently talented coders can write great applications in terrible languages.”
Well designed applications
By well designed application, I do not mean an application that uses at least 10 design patterns from the GoF book and complies with a bunch of design principles. It might well do that, however what I’m getting at is code that is easy to understand, maintain, modify, extend and verify the correctness of. In other words, code that provides high value to the customer.
“The purpose of software is to help people.”
― Max Kanat-Alexander
These will be outlined in upcoming blog posts which I will link here.