I’m not any kind of programming language zealot/fanboy - syntax is pretty much irrelevant; each to their own.
But I’ve been thinking about the bigger picture of choosing a language, from the business perspective. Sure, most languages can do the same thing, give or take. But what other (non-syntax) issues are there that can influence the ‘cost’ of adopting one language over another?
We use a mixture of languages (the best tool for the job), but I’m personally a fan of PHP, and have used it religiously for 6 or 7 years. So here are my initial thoughts on the cost of using PHP, based on this experience. I haven’t really elaborated on them, but you get the idea. What have I missed out? Do any of these make sense?
- Recruitment. This one’s probably the most controversial. I think there’s more ‘chaff’ to filter through when recruiting/advertising for PHP developers. You could spin this into a positive, and call it ‘more choice’. But - compared to, say, advertising for a Ruby or J2EE developer, I’ve found that there are more ‘designers’ who think they can develop because they’ve written a random image function in PHP. And filtering through CVs costs money.
- Recruitment. Conversely, this low barrier of entry (and cost) means that kids start using it when they’re young. So, arguably, an application from a 23 year old PHP developer is often better (at least, more experienced) than an application from a 23 year old VB developer. Some might elaborate on this (he says, in fear of being flamed) and propose that those people who are born developers - the best, 10x achieving people - are more likely to use PHP (or similar; Ruby, Python, Perl) over, say ASP, as they will have started programming at an early age, when their interest was first piqued. If you are 12, 13 years old and you want to start programming, it’s a lot easier to get up and running (and experimenting/learning) with PHP than ASP.NET/Visual Studio.
- Windows. Like it or not, there are a lot of Windows boxes out there. We probably install an equal amount of our software on Windows and Linux servers. But the PHP development effort have (until recently) not taken Windows too seriously, which does increase our cost of using it in Windows environments (lack of ISAPI support was a real downer for a long time). Consistent, cross platform support is a real plus for many languages.
- Maintenance/Debugging/IDEs. The majority of most large-scale software development effort is through maintenance. PHP has had (in the not-too-distant past) a lack of good quality debugging support (OK, there are some, but they aren’t as good as many other languages) and error handling features (e.g. Exceptions, until recently).
- Market Perception. This shouldn’t be under-estimated. In our market, the majority of our competitors throw around terms like ‘J2EE’ and ‘.NET’ and all other kinds of frameworks. Big business loves these - they’ve heard of them, they’re trusted, they are low risk. So a PHP solution is often seen as the ‘open source’ or lesser solution, unable to contend with these big frameworks. This adds to the ‘cost’ in lost sales. I think Zend/PHP are now starting to take this very seriously.
- Standards/Speed of change/Backwards compatibility. I’ll lump these in together, and just cite one example - XML support. Incredibly important for many web based systems, and hence you’d think it would be an important part of PHP? It was quite slow in coming, it changed over many versions, and didn’t have backwards compatibility with the earlier functions! That all adds up to extra costs (lost opportunities and additional maintenance). I’d still argue that there are some important XML features missing (I know, I know - I should shut up and develop them myself…)
- Richness. I’m getting a bit close to the ’syntax’ thing here, but one of PHP’s killer attributes is the richness of the language - the sheer number and flexibility of its native functions and extensions. Want to do just about anything with an array? Sure, there’s probably a single function for it. Dynamically create PDFs, Images, or anything else? Yup, a couple of extra lines. This is where PHP has real value - in RAD/Agile environments.
This sounds more negative than I imagined it would have. It’s not meant to be - I’m very happy with the progress PHP has made over the last few years (finally, native Unicode support is coming!).