If you are like me, who does programming for living, if you are very passionate about one language and would never ever think of switching to any other language?
Then this blog post if for you.
During my early years as programmer, I was very passionate about Java and only Java (does not mean that, I am any less passionate about Java today). I wanted to do programming only in Java. I thought I can do anything and everything in Java (which is true even today).
I was very apprehensive to do programming in any other language.
Then due to a project requirement I had to work on C++. Because of that, I started appreciating Java even more.
How elegantly it does memory allocation and garbage collection etc. I started appreciating the high productivity I could get using Java.
After that, I got an opportunity to work on Ruby on Rails. I started admiring all the dynamic feature of Ruby language. Started appreciating closures in Ruby and learned how a few lines of code can be expressed in just on single line. Started admiring how simple, a modern web framework could be.
Then came along .Net. In .Net we had used a dependency injection framework called Castle. I had used Spring framework from the Java world in the past, because of this I could apply same concepts in Castle framework. This meant, I was productive from Day 1. Effectively no learning curve involved!
I realized that as time passed, C# and Java have converged to each other. Both these languages have learned from each other and implemented some very good features.
Then, I started working on Grails. I was amazed to see that, Grails and Ruby on Rails are almost 90% similar. They are so similar to each other in concepts and implementation that, I find the only difference is the syntax!
Again, was able to apply the concepts, that I had learned while doing the Ruby on Rails project in Grails. End result productive from Day 1.
After all these years, I have learned one thing and that is, all these languages be it Java, Ruby, Groovy, C# etc. be it anything, they implement same concepts over and over and over again.
Now I feel, If someone is a good programmer it actually does not matter which language they use to achieve a given task.
Language and Framework are just tools to achieve a particular task.
In the olden days car manufactures used old tools to manufacture cars and now as the tools and technologies improve they use better tools and manufacture wonderful cars!
Applying similar analogy we just have to keep updating the tools that we use so that we can create good efficient software.
That's why I keep saying to programmers, don't be in love with one language, be in love with the concepts!