Polyglot Programming
The dictionary meaning of Polyglot is Knowing or using several languages**. From this you can definitely guess the significance of term **Polyglot Programming, it is basically programming done using various different languages.
Historically software development was done using a single language. Initially there were no separate Databases or even SQL. Data was stored on files and a single language did everything from reading data to processing and displaying results on console. Slowly things started differencing into a separate DB layer and SQL as querying language to manipulate it, use of HTML and other markup languages for display, use of XML as configuration language, use of Java Script for client side scripting but still the language compiled to bytecode was largely only one. With time the requirements from software are becoming more and more challenging. An application is required to be secure, safe, modular, less development time, ease of changing, concurrent, robust…..
No single language can address all these issues. Thus we are now seeing increasing adoption for Polyglot Programming that is use of various different languages for programming, taking advantage of capabilities of each of them. We see now a lot new languages coming up with their own specific capabilities and interoperability with other languages in the ecosystem.
There are mainly 2 platforms available for this JVM and CLR. Different JVM languages offer various different capabilities and great interoperability. Thus we have freedom to pick up the right language for problem at hand like for concurrency we can use prefer Clojure and if at any point we find that the language is not fitting in we can move to some other JVM language.
Advantages for Polyglot Programming include: use of best tool for given job, minimize amount of code, encourage thinking about architecture. A programming language affects the way we think about a problem and learning new language and learning new languages can do a lot of help to think about solving problem differently.
But Polyglotism requires more learning by the developers, but now we are seeing with upcoming languages we get much greater ease of learning material, acquiring, installing, much greater community support. There are also other issues like IDE Support for multiple languages, debugging, and deployment in different languages at same time.
A good example for polyglot programming would be Google Android built using Linux + C Libraries + Java or NodeJS made using JavaScript + C Libraries. In my own last project we used Java, Groovy, Java Script in addition to XML, HTML, SQL.
JAVA has dominated the scene for long time of about a decade, this was the time of internet bubble and JAVA provided features sufficient to support the kind of applications that were developed during this time. But now the requirements are again changing becoming more complex more specific which no one language will be able to meet.
We thus see emergence of multiple new languages. With interoperability between these languages we would be able to create great applications. So which language are you learning next?