How momentum affects language choice
Let’s be real, Java has taken off. At least where I live, there are 3 times more Java programming positions as C++ or C# ones. I ran a simple search using a popular job search web site and that is what the stats showed.
Someone said comically that C++ was made for bad programmers so that they do not hurt themselves. Then Java came along to transition C++ programmers so that bad programmers are even shielded from inflicting harm on themselves. Now Java has momentum and from a functional programming point of view, it will be hard to convince software development managers to wean them from the comfort that Java provides. No one in her/his right mind would ditch that investment, that solid code base, and go functional. That suggestion just won’t fly.
We know Clojure and Scala are two FP languages that have been created to supply functional facilities without straying too far from the JVM.Between the two, the typical Java programmer not familiar with FP will experience a strong culture shock if he/she hops into Clojure because Clojure syntax is Lisp – it works with S-expressions so the transition here is abrupt. On the other hand Scala’s syntax follows close to Java and so the transition here is soft or smoother. The typical Java based outfit will likely go this route. However that is where the rub happens to be. Scala allows you to program OO and of course it is a good thing but if a Java programmer is going to use Scala’s OO then what is the point of that? Then just stick to Java. Something like this happened when C++ was introduced, programmers still programmed procedurally even though the OO facility was there.
It is the momentum, it is hard to stop programming in one paradigm and then switching to another. The force of habit is great and hard to break and may be carried over to the new one. I’d say bite the bullet, do the paradigm, do cold turkey on your programming language drop your style and adopt what is being supplied. If you are going the Scala route, yet sticking with the OO aspect of it, you are wasting code time, stick to Java – that will save you headache. On the other hand if you are set free from your OO inhibitions and you are willing to let go of your comfort zone, then Clojure and Scala are now in equal footing. Both will allow you to call old Java codes and API within the language so I’d say take the plunge.
Lastly, good luck to those going the Groovy route. That is another language not really going anywhere so much so that even the starter of that language lost interest even before version 1.0 went off the press. Personally I won’t bother.
UPDATE: Go to Dr. Dobb’s article t o find out which languages gained or lost adherents in 2012. Click here