How Many Programming Languages Are Enough?

During last 60 some years after computer was invented, there have been hundreds, if not thousands, programming languages. If we include domain specific language (DSLs), which accorinding to Martin Fowler may include regular expression, spreadsheet, etc, the number can be even bigger, not to mention more programming languages continue to emerge.

This would be a big burden if we have to learn all of them. Luckily, we don’t have to. In fact, most of us just need to learn several most popular ones. Even better, these popular languages may look very similar in syntax. As a result, the total efforts to learn them are not proportional to the numbers.

Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.

Like everything else, it’s hard, if possible, to define “enough.” There is no absolutely “enough,” but relatively “enough” to what you want to achieve. If you are embedded system programmer, C alone, maybe assembly sometimes, is most likely enough. It surely is not enough for application developers who need application languages like Java, C#, PHP, etc.

In general, a programming language is not very useful without its standard libraries. The latter becomes more and more important in modern languages, and represent bigger chunk of time in learning a new language.

To be really productive, you also have to familiarize yourself with extra APIs and frameworks, for example, Java Servlet APIs for developing Web applications. Some of them are really needed, but more are not in the sense that applying these frameworks does not buy you much but cost you more. The hard truth is that until you learn and sometimes try them out, you don’t know whether they yield good ROI. I’ve seen so many over engineered applications with unnecessary frameworks/APIs. My principal in general is, “whenever in doubt, leave it out.”

After learning and practicing some programming languages by myself, I feel it’s becomes easier and easier to learn new programming languages because most programming languages are very similar even though they look different. At a certain point after I learned Fortran, BASIC, C, C++, Java, C#, Python, Perl, PHP, I stopped learning new languages for the sake of new languages. I only learn new languages when needed by project, for example, ActionScript for my work. After a project, I might forget it, just like an application unloaded from memory.

However, as a developer you got to have one programming language in memory all the time. In real world, it’s better for one to be an expert in one programming language than know several but specialize in none of them. So instead of learning more, it’s a good idea to become an expert in one of your existing general purpose language. After all, the good tricks/tips and best practices are transferrable mostly. Once you master them in one, you are likely practicing them in others. This does not imply that you should code C# like Java – always follow language specific conventions. For example, you use deposit() method name in Java while Deposit() in C#.

This entry was posted in Software Development and tagged , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.


  1. Gilbert
    Posted July 5, 2011 at 1:27 pm | Permalink

    Would availability of a great framework for a particular language affect a developer’s choice of a programming language?

  2. Posted July 8, 2011 at 6:12 am | Permalink

    Hi Gilbert,

    Great question! I think the answer is yes. A good example for this is RAIL framework which attracted many developers to try Ruby. Over time the great framework will most likely be ported to other programming languages, for example, JUnit to other xUnit frameworks. Therefore the framework’s influence weakens over a longer time.


Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


    My company has created products like vSearch ("Super vCenter"), vijavaNG APIs, EAM APIs, ICE tool. We also help clients with virtualization and cloud computing on customized development, training. Should you, or someone you know, need these products and services, please feel free to contact me: steve __AT__

    Me: Steve Jin, VMware vExpert who authored the VMware VI and vSphere SDK by Prentice Hall, and created the de factor open source vSphere Java API while working at VMware engineering. Companies like Cisco, EMC, NetApp, HP, Dell, VMware, are among the users of the API and other tools I developed for their products, internal IT orchestration, and test automation.