My programming language is the best!

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!

2 thoughts on “My programming language is the best!

  1. I think its necessary sometimes to bash a language. I see quite a few ignorant people saying Java is the best. They typically mean its the best for a subset of problems and program domains but the message it sends across is well many people think Java is the best. So someone has to come across strongly to counter that marketing :).

    I hate C++. 🙂 That’s the only thing I can use for most of the main tasks in my domain and I wish for an alternate reality where we had something like D in place of C++ so I would never even have to touch C++. I obviously prefer C++ to C but man C++ wastes so much of my brain cells. It has no good tool support even after so many years of its existence thanks to its horrendous grammar. I think its even worse now considering that most people are being taught Java for their first language so C++ code will get even harder to maintain since well you need a quite a lot of experience to write decent C++ code.

    D ROCKS! ( )
    /marketing 😉
    The D language is very well designed from my limited experience with it, working with the language has been a pleasure. Its C++ done really really right (only link compatible with C code) . There are still some issues : . Don’t interpret the length of that article to mean D has a lot of issues! Right now I would recommend D for side projects and even for scripting. Some relatively minor things need to be ironed out before we could use it in production.

    Would be great if I can get all my stuff done with D, Python and Haskell or some other functional language :).

    /me goes back to dreamland where most coding can be done in D, and OpenGL2 had been what OpenGL3 is supposed to be

  2. Yes, actually just as there is a C++ fanboy club, so is there a Java fanboy club and probably for most other languages as well. That is exactly my point. This fanboy clubism is what the problem is. It’s like the fanboys are always bashing each other up, and that to me is not how things should be.

    No, Java is not the greatest language, actually no language is and I think anyone who says that about any programming language has a nasty case of hubris. However, the reverse is also not entirely accurate. Java is not all bad. Java has been used successfully on thousands of projects by hundreds of companies big and small. It cannot possibly be all bad.

    Then there is an issue of redundancy. C++ was a champion in it’s day, but clearly it is an old language. It did the job well for so many years and might continue to do so, however in this day and age it is like a lumbering dinosaur. The reason it has survived this long is because a) we have large code-bases, both open and closed that overly depend on C++, and b) availability of programmers for C++.

    All new, or should I say next generation languages try to overcome the drawbacks of C++ and to some extent Java. As far as I go, I have done a fair bit of programming with Python, a little with Java, but mostly (nearly 95%) of the code I write is still C++ (, yeah I know, call me a dinosaur, we are a dying breed 😀 ). I do all prototyping work in Python, but I am quickly beginning to appreciate C# as well. Never used D (, one of these days, maybe 🙂 ). Tried learning Haskell once but it’s too much for my small brain to handle. Ocaml is somewhat of a middle ground, so I kinda like to fidget around with that. Scripting languages Lua, Squirrel, and GameMonkey; tried them as scripting systems for the game engine.

Leave a Reply