At JavaOne 2007 I spent some of my time trying to figure out where things are going. It has always seemed to me that you either knock yourself out keeping up with every last thing (shiny new toy syndrome) or you try to figure out what is going to be important and focus on that (pragmatist). I am in the latter camp, but fortunately I know many people in the former camp. For programming languages I read the TIOBE Programming Index each month.
The May 2007 edition confirms a trend that I mentioned to a few people at JavaOne. Ruby had leveled of at the end of 2006. It is now in decline. From Tiobe’s commentary:
Although, Ruby is the rising star if you look back 1 year, it is not growing more the last couple of months. Even worse, since April it is slightly declining. If this appears to be the new trend, then also Ruby does not become the “next big programming language”.
Java, C and C++ have been dominating the TIOBE index from the start and it seems as if they will keep this status for a long while. Possible new candidates are Lua (from 55 to 23 in 1 years time) and Groovy (from 103 to 52). These are, just like Ruby, lightweight scripting languages. I have the impression there is a maximum to such dynamically interpreted languages. Although very popular for web-based programming, statically compiled languages remain the core of all enterprise software systems.
The significance of the drop in May and the leveling of is that “Ruby does not become the ‘next big programming language'”. I learned both Ruby (and Python) in 2005 in preparation/mitigation of that happening.
Does this mean that Ruby is not important? No.
Firstly, Ruby (and Rails) are having enormous influence on the development and direction of the more entrenched languages and frameworks. In evidence of this I cite what is happening to Java. By Java I specifically include the JVM runtime. Within this broad church we see JRuby, JSR241 aka Groovy, JSR292 invokeDynamic (http://blogs.sun.com/jrose/entry/jsr_292_deep_dive_notes), and numerous influences to web frameworks such as SEAM. I have suggested to Paul Hammant that he create a graphical representation of web framework influences, which would make this last point clearer.
Secondly, if you look at the chart above, Python, JS, PHP and Ruby make up a pretty big chunk. They are not going away. Taken as a group they are slowly growing. So let the appservers and runtimes (see Glassfish V3 and JVM7) run them. If developers do not use Java they will be using Java infrastructure. And just as the dynamic languages run everywhere, so does Java Infrastructure.
So we see that the Sun, and the broader Java industry, is taking an each way bet. Suck up the good ideas from the Ruby community into your own stuff so that you keep your own adherents. Failing that be a great place to deploy apps written in dynamic languages. Either way you stay relevant.
It’s a trend that I found out as well, and one even some Rubyistas have commented on….
http://blueboard.com/smalljava/archives/59
I’ve never actually believed ruby on rails could last….it had no major disruptive feature that would keep it afloat after so many other scripting languages started making their own run at the Java community, like Groovy, Jruby, and now JavaFX.
If this is in fact a sign of some serious trend, it might be bothersome if language/platform popularity had any correlation whatsoever to the language’s merits for typical development tasks.
It’s very interesting to follow the current fury around dynamic languages. In my opinion, there are serious limitations on large scale software projects (ie: 200,000+ lines). Some of these limitations being maintainability issues (lack of refactoring ease, toolchain support, etc). Dynamic languages certainly have a great niche in smaller scale things like build management, simple DSLs and many other things, but is it generally acknowledged that these languages aren’t suitable for large scale development, or is this lost in the hype?
Good analysis Greg.
For web delivered application, there seems to be a “spreading” across languages, as people can choose tools more then in the past. Of course, the JVM platform seems to be increasingly embracing them.
JRuby has found its legs, and I can also tell you that Jython is alive and well and again picking up pace.