Programming Languages Diversification

What are programming languages? Programming languages are languages created for the purpose of instructing a computer what to do. Computers are not able to think for themselves yet. Until the Singularity happens after which, programming will be no longer needed. Thousands of such programming languages exist today and new ones are being constantly created. Some of those languages are general-purpose, while others are only designed for a single environment, for instance, a web browser or a spreadsheet.

More Introduction

Most programs resemble cooking recipes. The computer has to follow an ordered list of steps step-by-step. This is called imperative style programming. Functional programming, another programming style, is more concerned with evaluation of functions and tries to avoid change of state. Logic programming focuses on declaring facts and rules. Object-oriented programming is centered around objects, that hold data and can perform operations. These programming styles can be combined by a programming language.

Schools of Thoughts

The majority of programmers are very strange and peculiar people. Something innocent like discussing programming languages can get you into a heap of trouble. I have to be really very careful today. Once a recruiter gave me the advice  (I don’t know why he found it necessary) to stick to one single programming language and specialize in it. Lots of people agree with this statement. I don’t have an exact number, but it must be a pretty high percentage.

Another school of thought that seems to be regarded with favor, suggests learning at least one  new programming language each year. Mostly to learn new concepts. If you are like most programmers you started programming somewhere in your teens. This means that if you learn a brand new programming language each year, you would have to study at least fifty programming languages until you retire (if you survive the Singularity that is). I don’t know what your opinion is, but it seems a bit too much to me.

Of course, you can learn basic syntax within a year. However, there is so much more to learn  – conventions, concepts, libraries and more. Maybe you should just learn enough to decide whether the programming language in question interests you and then continue with it or move on.

The Clone Project

For a company or a big team creating an exciting new product such as a Google Reader clone, the question of which programming language to choose is even more important. Do we use multiple programming languages? Or do we use only one and if so which one? The choice, I am afraid, will depend on completely random events.

Often a project starts out with quick and dirty scripts, that can demonstrate basic mandatory functionality. Years later the original expert developers have moved on to greener pastures and the programming language is no longer popular. Yes, there is some sort of programming fashion. The programming language choice is crucial and you have to somehow predict what the fashion requirements will be five years or a decade from now. What if people call your favorite programming language a horrible disease or a virus a decade from now?

The truth is that you can’t predict such developments with absolute certainty. Of course, there are somewhat reliable indicators. How many percent of programmers use the language? How often is it mentioned on Reddit, StackOverflow or generally on the Internet? Is the language owned by a single company? If only a single company takes care of a programming language, this could be potentially really bad. In the event that the company is later taken over by an uncaring larger company, then you should prepare for the inevitable.

As the title suggests diversification is obviously the way to deal with this uncertainty. Don’t put all your eggs in one single programming language basket, right? The details are evidently controversial. Which and how many different programming languages?

I would say Objective C (iPad, iPhone), Javascript, Actionscript, Java (Android), Dart (is Dart any good?) or a combination of those for the front-end. Maybe the same languages for user scripts and plugins, plus Lua, Python or Ruby. Whatever you do, don’t create your own small proprietary language! I know it was in vogue and maybe it still is, but such a domain specific language (DSL) only leads to a maintenance nightmare. I speak from actual real life experience. Creating your very own domain specific language is a rush, but once you are done you better find yourself another job quickly unless you enjoy excruciating pain. For the back-end I would go with Python, Ruby, Java or C++ or a combination of those.

Disclaimer: this post was written without any research and is only my own humble opinion. If your favorite language wasn’t mentioned it was, because I totally forgot, since I am getting older and didn’t have a good memory to begin with.

Bookmarks for March 20, 2013

By the author of NumPy Beginner's Guide, NumPy Cookbook and Instant Pygame. If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.
This entry was posted in Uncategorized. Bookmark the permalink.