Why programming languages no longer matter
When people ask me what I do, my usual response is “software engineer,” even though I now do as much or more work in information management, enterprise architecture or strategic IT consulting. Besides being a simpler term to understand, in my heart of hearts, I am a programmer.
Given that, it is painful for me to realize that programming languages no longer matter. I say this even though my favorite programming language, Java, is currently the No. 1 language, according to the TIOBE Programming community popularity index.
Intell agency's software would predict world events
How did I come to this realization? How can I prove this assertion? And finally, what are the ramifications of this assertion for government IT and IT in general?
Though I have written several books on Java, C and C++, I have developed software in nearly a dozen languages throughout my career, from procedural to object-oriented and functional languages.
Although many basic constructs are common to all languages, such as loops and conditionals, each language has unique features that set it apart from the rest. Some differentiations are unimportant and thus called “syntactic sugar,” while others are more substantive, such as automatic memory management or parallel programming features.
Features and syntax are often introduced to improve the design of an existing language — some languages go so far as to name themselves as a better derivation of a previous language — for example, C++ as an improved C. It is that syntax and those features that programmers become wed to and thereby vigorously defend their language against all others.
Programmers, including yours truly, are passionate about their favorite programming language. Given such partisan fervor, you would think the best language would win out, and the language wars would finally end. Instead, we see programming languages being eclipsed and marginalized by programming environments that consist of intuitive Integrated Development Environments (IDEs), robust sets of built-in libraries and high-level abstractions that simplify the creation of professional applications. It is not that there is no difference among programming languages; it's just that those differences are becoming less and less a factor in choosing a development platform.
The three major programming environment categories are the personal computer (such as Java Virtual Machine and .Net), mobile (iOS and Android), and the cloud (Amazon and Apache’s Hadoop). Evidence of programming languages’ marginalization is seen with inelegant languages such as Visual Basic that have numerous bolted-on features made successful by Microsoft’s environment or an archaic language such as Objective C that lacks automatic memory management but is popularized by Apple’s success and its XCode environment.
Additionally, Oracle recently released Java 7, which added support to improve the performance of other non-Java dynamic languages running on the Java Virtual Machine. The key reason for adding such a feature is that the Java platform is more important than Java the language. Thus, if you want to code in a hot new functional language, such as Scala, you can do so while using your favorite IDE, the extensive built-in libraries and large open-source community. In other words, you can have a new language with the same comfortable, robust programming environment.
The ramifications of this new normal programming world are twofold. First, the emerging cloud environments will be forced to follow suit and become language-independent. This will be a critical development to increasing cloud adoption, improving security and improving cloud interoperability. Such a requirement should be part of government requests for proposals for platform-as-a-service offerings.
Second, and more generally, this is another indicator of software evolution in a world of increasing reliance on software. Marc Andreeson, of Netscape fame, discusses this phenomenon in a recent column in the Wall Street Journal titled “Why Software Is Eating The World.”
So the marginalization of programming languages heralds the rise of programming environments — aka platforms. Given that our government is leading the charge to cloud computing, that is becoming the most promising programming platform of all.