Very recently I was reading and article on a pretty well-known site where the author just downrightly insults a programming language for what it is. I refuse to quote the site for good reason, but that actually doesn’t really matter. The thing that really got to me is that the author gives downright mundane reasons as to why he hates a language, Java in this case. I have seen this sentiment all through out the industry where many (, not all) programmers think the programming language “they” work on is the best and all others are either sub-par, or downright foolish! I don’t intend to start a flame war on this blog on programming languages, far from it, I will try and debunk some commonly held misunderstandings and misconceptions about programming and programming languages. And yes, I am not going to directly touch on any particular language while doing so.
The biggest misconception of all and held by many is, “You have to learn a particular language (C++, Java or any other) to become a good programmer.” The answer to that is …No! Programming is all about solving problems. If you can do that effectively, then you can become a good programmer using any programming language. The best programmers are the ones that solve difficult problems subtly and elegantly. The choice of language does not determine the quality of a programmer.
The second misconception, and often generally shared by a lot of budding programmers is, “I have to learn the most difficult programming language to get and edge over others in the industry.” Not true either. Some of the best programmers I know started out with Perl, Python and Shell Scripting, which are some of the easiest languages around. In fact, now that I think about it, that experience actually gave them an edge over others, because they learned the holy grail of programming, which is the famous KISS principle (Keep It Short and Simple). If you are starting out, pick the easiest language you can understand, learn it completely and become a good programmer with that language.
The next famous one is, “I can do anything and everything with the programming language I know. Learning or even looking at another language is a waste of time. My programming language is the best!” This is probably the most dangerous one of all, because this sentiment is shared by some senior programmers. Programming languages are like tools, and like any good tool-chest, the more varied the tools you have in it, the better you will be at doing a particular job. Some jobs will require a hammer to force in a nail, others may require a spanner and some others may require a drill. The same thing with programming languages. Many languages are designed to solve specific and sometimes domain related problems, and most of the time they do an excellent job at that. Often better than most other languages that were not specifically designed to address those issues. A good (senior) programmer will often know 3, 4 or even more languages, and will use different languages for different projects when needed. Never be afraid to learn a new programming language, in-fact strive for it.
And another one, “A language doesn’t have an XYZ feature present in my programming language. Hence it is incomplete and therefore it is unsuitable for programming.” This is actually a corollary to the above one, and just as flawed. If a language doesn’t have a feature, then there must be a good reason for omitting it in the first place. The designers, given the nature and scope of the language, felt that the feature was unnecessary. Again if you feel the need for that particular feature in your project, then it’s time to re-evaluate the choice of programming language for that project. It however doesn’t mean the programming language in question is in anyway bad or that matter inferior.
Next misconception, “Programming is too complex, it’s for geeks and really clever people!”. Nope! True some programming languages are more complex than others, but some are really really simple. Check out Python, Perl (, not taking any sides here, you can just as easily use others as well). The rule of the thumb is, if you can use a Spread Sheet package (like Excel), you can learn to program.
Another one that creates a lot of debate is obviously the speed of a language. The misconception is, “XYZ language is faster than PQR language.” Not entirely accurate. A language has no definition of speed. A language is never fast or slow, a program written in a language can be fast or slow. The speed of a program depends on a lot of factors and can be a tricky thing to evaluate. It has more to do with correct design decisions and not so much on the language. There is a phrase I have coined for this over the years debating with people. It goes like this, “The speed of a program directly depends on the intelligence and experience of the programmer.” The fact is a good programmer will produce fast code in any language. It is true that well-written code in some languages can be faster than similar well-written code written in other languages, but unless you are working on bleeding edge of technology, this doesn’t really matter.
A similar misconception is, “XYZ language is more powerful than PQR language!”. Not quite right. It entirely depends on the domain and task at hand. Some languages are specifically designed for certain problem (Erlang comes to mind) and can be extremely effective at addressing those problems, often magnitudes of an order better than others. Other’s are made simple on purpose, just because you can do very rapid programming with it. Some programming languages go an extra mile so redundant and tedious programming tasks and bugs can be eliminated. Again I don’t intend to take sides, but for all rapid programming tasks I use Python because of it obvious benefits. However, there are other languages like C# which are equally good. Every language has strengths and weaknesses, no language is all powerful.
This is how I stand on the whole issue of programming languages; I consider most programming languages, at least the most famous ones used in the industry as “worth learning”. You can never be a master at all, it’s just impossible. However you can certainly be good at a couple. Learning more languages will empower you to be at a better position to choose the right language for the right problem (or task) . Learning more will allow you understand why these languages were designed the way they were and thus make you to be a better programmer in the end. Most production quality languages aren’t bad\incompetent or useless; don’t say they are. (I am talking to experienced programmers here!) Some languages could be inappropriate for a particular task, but harsher words are unwarranted!