|
|
CTO ArticlesPublished in IT World
The library IS the programming languageI am wondering if we are reaching some sort of inflection point in the history of computer programming? An inflection point brought on primarily by the rise of so-called 'virtual machines'. In particular, the important twist on the virtual machine concept inherent in Microsoft's .NET implementation known as the CLR (Common Language Runtime). The CLR is most often compared and contrasted with the JVM (Java Virtual Machine) but to my way of thinking, it is more similar to the UCSD P-code System[1] of my pre-bearded youth. Let me explain. Think of the JVM and what immediately springs to mind? Well, the Java programming language of course. Think of the CLR and what springs to mind? Well, there is C# of course but also VB.NET, JScript, IronPython etc. With the CLR, you use any of these you like and indeed (with some limitations) mix and match them. Out of the box as it were, the CLR gives you a great big library of stuff that you can use from any programming language you like - as long as that programming language targets the CLR. Now this is also true of the JVM thanks to Jython, SISC etc. but to date this 'language family' concept is not part and parcel of how programmers conceptualize the JVM. It is however, part and parcel of how people conceptualize the CLR. In my opinion, the attitudes of CLR and JVM folk to the concept of multiple-languages targeting their virtual machines will prove to be a decisive factor in how the two fare into the Twenty First century. However, that is not the inflection point I mentioned earlier. I think the 'aha' moment we are heading for is this: programming language doesn't matter half as much as it used to and frankly, we should stop talking so much about them. In my opinion, any competent programmer should be able to pick up a new imperative programming language in a couple of days. They are all the same really. Actually, deep down they are in fact totally the same[2]. However, it is not reasonable to expect a competent programmer to be productive in application development after those couple of days. The reason being that real world applications are not developed primarily IN a programming language. They are developed primarily ON a platform - a library of pre-developed code doing everything from opening databases to drawing GUI screens. These libraries are, these days, behemoths. So big that competent programmers can and do spend literally years wrapping their heads around them. The common interview question "what programming languages do you know?" is becoming less and less useful. The common line of reasoning that goes like this 'She knows C++ therefore she will be able to pick up programming on platform X in no time', is becoming increasingly fallacious. There is a risk that focusing too much on programming language choices can mask the real issues surrounding portability, ease of maintenance, lock-in and so on. If these issues are on your agenda, make sure you look past the programming language. Get under the hood into the library/platform where the really important analysis needs to be performed.
[1] http://en.wikipedia.org/wiki/UCSD_p-System |