One of the two questions we get asked most frequently is: “Which programming language should I learn?” (The other one being “Which PC should I buy?”). I have faced this question from students, and I have faced it from working professionals. I have been asked the same question by friends, and I have had it asked by relatives. During these difficult times, the frequency and urgency of this question has only increased.
My answer has always been the same–there is no one programming language that can provide you the key to happiness ever after. You need to learn multiple languages, and more importantly, you need to understand the process that your application will be used to deliver. Unfortunately, my opinion has often been in a minority. Some years back, many thought that PowerBuilder was the only thing they needed to know. More recently, many more thought that Java provided all the answers. And in both cases, they have been proved to be completely wrong.
A programming language is very much like a carpenter’s chisel. Any decent carpenter will have a variety of chisels–wide ones and narrow ones, short ones and long ones–in his toolbox. And he will use more than one to create any piece of furniture. Each one has its specific use, where only that one and none else can give the required results.
However, when you sit on a chair, you are not bothered by which chisel was used to make it. You look at whether the chair is comfortable or not. Similarly, a user is not concerned with whether a particular application is written in Cobol or Java or Perl or Python. What he is concerned with is how well the application meets his needs. To deliver this, you may need to code different parts of the application in different languages, much as a carpenter uses one chisel for a chair’s back and a different one for the seat.
There has been no single programming language that has been at the top of the heap all the time. Take the hot languages of today–Java, VB, C#…. They were not even around a few years back. And the hot ones of those times–C, C++, PowerBuilder, et al–are not that hot anymore.
Knowing just the current hot language can give you only short-term returns. If you were a carpenter who knew best how to make the back and not the full chair, you would be in deep trouble if chairs without backs became fashionable. The chair–and not the back or the seat–is the application. If you know what the chair is used for and how to create its different parts using appropriate tools, you will be much better off than someone who knows only to use the wide chisel, and not the narrow one.
One of the theories of evolution speculates that dinosaurs became extinct because they could not adapt to changes in their environment. That is why I always say that you should not be a single-language programmer.