Tuesday, April 18, 2006

 

Language lock-in, language culture, development strategy

It used to be that people tried to avoid vendor lock-in. If you bet your company (or your project) on a vendor, and the vendor goes out of business, or simply discontinues the tools you're committed to, you're in for major headaches. When it comes to programming languages, national (ANSI) and international (ISO) standards were somewhat meant to protect the general public from vendor lock-in, basically leaving vendors to compete purely on quality issues. Things didn't work out exactly this way :-), considering today's language world, dominated by a handful of players. In many cases, once you pick a language and a target platform, you're left with one or two vendors.
In fact, in many cases the issue has moved from vendor lock-in to language lock-in. Learning a language, its libraries, its idioms, and so on requires some effort (assuming you truly want to learn the language: contrast this with using (e.g.) C# but thinking (e.g.) in VB3). People have a natural tendency to avoid large efforts (and rightly so :-). Therefore, in many cases they won't switch language, unless truly compelled. It makes then perfect sense to pick "the right language", and here start the troubles :-)). Language wars abound, and I'm not going to add more fuel (well, not today :-). Instead, I'll add yet another factor to consider when picking a language: the alignment between your development strategy and the language culture.
A recurring theme in my consulting activity of the past few weeks has been the use of metrics to control some quality attributes. This is particularly important in large, distributed, partially outsourced projects, but even smaller endeavors can benefit from a few measurements (more on this another time). Of course, the first step is the selection of meaningful metrics; the second step is getting some tool to calculate those metrics. Here some facets of language culture are brought to light. For some languages, you can easily find powerful tools (commercial or open source) to calculate basically anything you may want. For others, there's basically no way to find anything decent. Does it matter? It just depends on your development strategy!
By the way: does anybody know where I could find a (commercial or free) program to calculate (at least :-) the cyclomatic complexity of a PHP function? I'm not kidding, I could actually use it...

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?