If you ask a software programmer what language they write in – the answer is sometimes simple and you may get a one word reply i.e. Java, Python, PHP, Visual Basic, C# or C++ etc.
More often we find that programmers define themselves as “all of the above” and more. Essentially they have become multilingual polyglots i.e. individuals capable of speaking or writing more than one language.The polyglot programmer term was allegedly coined by ThoughtWorks architect Neal Ford in a blog written way back in the mists of time on December 5, 2006.
Ford writes, “We are entering a new era of software development. For most of our (short) history, we’ve primarily written code in a single language. Of course, there are exceptions: most applications now are written with both a general-purpose language and SQL. Now, increasingly, we’re expanding our horizons.”
This leads to the conclusion that it’s not really about what language or how many languages you have on your tool belt. It’s about understanding and mastering the paradigms of these programming languages. Once you know the basic building blocks of programming languages you can easily pick up a new language by learning the syntax and tooling.
This might sound complex but actually it’s a tremendous simplification. It’s much simpler to master paradigms than it is to master languages. One reason for this is that there are virtually infinite numbers of languages out there but only a small set of paradigms. Paradigms are also, themselves, smaller and simpler than entire languages. Besides, all programmers already know a whole bunch of paradigms; they just don’t realize it.
For example, if we take web development, what you need to know are at least 3 different languages to write a web application:
- HTML to provide a user interface.
- A web scripting language (e.g. PHP) and possibly a general programming language (e.g. JSP + Java, ASP.NET + C#) in order to process the data entered by the user.
- SQL so that you could save the data to a database.
Of course, these are just the bare bones of a web application. More practical web apps require the developer to know more technologies:
- CSS to make the interface more appealing and manageable.
- Another markup language like XML and JSON to facilitate data exchange (e.g. for AJAX)
- A web framework to reduce the complexity of a large system.
- A scripting language to automate the build and testing of the system
Learning and understanding paradigms also stops you from repeat learning. Once you realize that many things are the same or similar across languages you don’t have to start over every time. You can easily map the knowledge you have to a new language and read up on the paradigms you are missing.
Editor’s note: Learn programming in the easiest and efficient way. Register with us to know more.
With the wide variety of robust languages and platforms currently available and ready for prime time, it is hard to imagine that any one or two will become as dominant a force as Java and .Net have been over the past 10+ years. To remain valuable and relevant, it is becoming necessary to write software in more than one language. Having the ability to produce in more than one language may be a luxury today, but it is becoming very clear that this will be a necessary skill for tomorrow’s engineer.