Mike Daconta

COMMENTARY

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.


Related coverage:

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.

Reader Comments

Mon, Aug 13, 2012 Bryan Way

I know this is somewhat of an old post but I managed to stumble on this and it sounded interesting as I had thought similar thoughts awhile back. While not exactly what I was expecting from the title, I do agree that extendable IDEs have helped multiple languages grow rather than just one major one, but I think that real reason lies behind the fact that most programming languages, as you've said, build off of other languages. For this reason there are many programming languages and scripting languages (as some people like to seperate the two) that are similar in design, but different in concept. I can't tell you have many times I found a need to work in a different language that I had never programmed in before, and come out shortly after looking at the basics and some function referances with a full functional program or script. Ranging from BASH, Python, PHP, Perl (quite troublesome seeing how Perl is very different from "normal"languages), Java, C#, Batch, and probably more that I don't remember off the top of my head. So, in reality most programming languages are all built off each other in a "family tree" and switching from one to the other is fairly simple provided you know the inner functioning of the language at runtime, such as memory allocation. Anyway, that's it for me.

Cheers,
Bryan Way

Sun, Jul 22, 2012 Rene Nashville

I have an idea about creating a cloud to store data for all smart phones, but I don't which programming language to use. All I know is visual basic, html and some javascript; I hope you guys can help me out.

Wed, Sep 21, 2011 Steven

As someone that claims to be an expert (multiple books and such), you are sadly lacking on actual knowledge of what you write about in this article: "archaic language such as Objective C that lacks automatic memory management" Is... Well... Dead wrong? On many levels. Being a software engineer myself and having done lots of C++, Java, C#, various assemble languages and Objective-C, I find the sheer elegance and simplicity of Objective-C much nicer than the complexities of introduced with both C++ and Java (the most poorly thought out language I have ever used). Add to that the fact Objective C added automatic memory management years ago, and it shows just how amazingly out of date and out of touch with languages you really are.

Wed, Sep 7, 2011

Drew Conway set out to quantitatively explore programming language popularity. Interesting results with noted limitations of the study. http://redmonk.com/sogrady/2011/09/06/dataists-anguage-rankings/

Wed, Sep 7, 2011 Dataman Las Vegas

I've always said, make it work, then Make it pretty. Given enough time and money, anything is possible in almost any language. Problem is, you never have quite enough of both. Choosing the right tool for the job makes making it work easier. Typically most of what I do is in SQL these days, so whatever puts up a UI the easiest is what gets chosen. Yes, ASP.NET, and regretably JAVA at times when MS doesn't quite have the complete VB.NET story together. I would say one thing though... When the opportunity presents and there's no choice, I have created my own languages (like a generic scripting logic engine). So, the right tool for the job.

Show All Comments

Please post your comments here. Comments are moderated, so they may not appear immediately after submitting. We will not post comments that we consider abusive or off-topic.

Please type the letters/numbers you see above