by Bruce Eckel
Programming languages always seem to do some things well but not others: Python punts when it comes to user interfaces, Java’s artificial complexity prevents rapid development and produces tangles, and it will be awhile before we see benefits from C++ concurrency work. The cognitive load of languages and their blind spots increases the cost of experimentation, impeding your ability to fail fast and iterate. If you use a single language to solve your problem, you are binding yourself to the worldview limitations and the mistakes made by the creator of that language.
Consider increasing your wiggle room by crossing language boundaries, complementing a language that is powerful in one area with a different language powerful in another. Language hybridization can speed development to quickly discover your real problems, giving you more time to fix them.
After making a case for hybridizing your thinking in general, I will present a number of simple examples; first showing the benefits of using other languages with multiprocessing in Python and Actors in Scala, then hybridization creating a Go language JSON-RPC server and a Python client, and finally a Python web server with a web client using CoffeeScript, jQuery, Ajax and WebSockets. All examples are kept small so that the syntax of each new language can be explained.
16th–18th May 2012