Polyglot programming defined
Polyglot (person), someone who aptly and with a high level of fluency uses many languages. The word derives from the Ancient Greek πολύγλωττος (poluglōttos, “’many-tongued, polyglot’”), from πολύς (polus, “many”) + γλῶττα (glōtta, “’tongue, language’”)
The term was (probably) coined by Niel Ford in his blog post Polyglot Programming (from 2006) – or not have a look at We Aren’t Too Stupid for Polyglot Programming for more details (Robert Fischer).
Simply put (because it’s all Greek to me) – Polyglot programmer is a programmer that know several programming languages. So Polyglot programming is using several languages in the same project.
Is Polyglot programming a good thing?
Using multiple languages in the same project can be a hassle – I have been at a company that had both C# as well as VB.NET used in the same project without any good reason other then the fact that it was maintained by two developers, one preferred C# and the other VB.NET.
At the end the company decided to work only in one of these to make the code more usable and maintainable.
So is using multiple languages in a project a bad thing – not necessarily, in fact you might be doing it right now:
Do you used a database? RegEx? what about XML? although these are not “classic” programming languages they have domain specific languages that you use to make them work. Many developers use some scripting language to administer their machine or for the project build process – one could argue that that is part of the project as well.
In fact when thinking about all the project I was part of I can’t think of a single project that had only one programming language involved in it’s creation – my favorite is using C# along with C++ for low level programming.
The .NET framework provides a good platform for multi-language programming but that concept is not new. C, Python, PHP, Java are just a few languages that can used in a Polyglot project.
The Polyglot programmer
Do a developer today can make do with learning a single language (e.g. Java, C#, C++) and using it throughout his career? It is a possible (although improbable) scenario.
If all of your projects require only one language do you really need to learn additional languages? I think so…
The first reason to learning additional programming languages are the tools of our trade and learning more languages mean you have more tools to choose from.
The second reason is that by learning different languages we actually learn different ways to think about the problems we’re solving in our everyday work. I know that learning dynamic language helped me become a better C# developer.
Nowadays it’s almost impossible to do your work without constantly learning new technologies. You do not want to be that guy who gets to a point at the project and stops because he do not know XYZ.
My suggestion to you is to make a new year resolution – learn a new programming language.