There are many programming languages today, sometimes too many to choose from for a new project. The good thing is that there aren’t many main stream programming languages, so picking one is not a daunting task. And almost all main stream languages can achieve similar things, meaning any one of them will work. So in the end it’s really a matter of team preference and sometimes company policy.
What if you can have one programming language that can be easily converted to others? This is what I call hub programming language, just like airport hub where you go anywhere easily. Writing code in a hub programming language, you can delay your choice or change your mind along the way.
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.
The benefit may sound familiar to some of you. Yes, that is the promise of CASE in 80s and later UML. The CASE tools didn’t work out. The UML works well in capturing high level design ideas and software architecture, but not good and efficient enough for describing system behaviors. So it cannot be used as a programming language.
- Not every language can be a hub language. To become one, it has to have these characteristics:
Wide adoption. It must have a big enough mindshare and market share; otherwise, there is no incentive to make tools for it being a hub.
- Ecosystem. It should have a good ecosystem with strong developer community, great tool support including IDEs, APIs and application framework, and middleware support.
- Portability. Note that this is on source code level, which is different from Java’s byte code level. It does not have much platform specific feature that makes it impossible to convert to other languages.
Java happens to be such a language that satisfies all the above requirements. C# is yet another hub programming language that is designed with very similar principles as Java. Therefore they would be used even more by the developers. You can convert between them as well, for example, this Sharpen project.