This morning I read this interesting article 13 reasons why Ruby, Python, and the gang will push Java to die… of old age. Some of the initial points are relevant, while many of the latter ones are irrelevant.
For example Reason 13 “lack of tools” I disagree with. My design tool of choice is a good text editor like TextPad or nvi. I never use an IDE as I find they get in the way of “how I think” about a problem and often hide the language preventing a programmer from learning a language properly. Outside of an editor, compiler, interpreter, and debugger all the additional tools that serve as programming aids can often be a crutch that impede a developer from actually thinking about design and logic; sure they can help, but I don’t see this as the reason behind a language not being adopted.
Reason 10 “hanging about” I disagree with. Java evolved out of C, C++, and Smalltalk. Algol inspired Pascal which begot Modula2 & 3 which in turn inspired Ada, which was sponsored by US military needs. Lisp inspired Scheme and Lisp is still the favourite of the Emacs crowd. Python draws some of its roots from ABC and Fortran in terms of using indentation / column position for code blocks. Forth, a stack based language, was probably the inspiration for Postscript, which are both popular in their respective domains (embedded systems, printing). The point here is that the older languages had merit in their time, but go on to inspire a newer variant, and some languages have a certain niche domain or problem space that they were design for, rather than being general purpose.
Reason 9 “lack of sponsor” I disagree with. Perl became popular because it provided superior regular expression handling as syntactical objects, instead of a set of functions or methods. In addition Perl brought together all the elements of AWK, sed, and grep (regular expression based tools) and the shell into one kitchen sink type language at a time when shell script programming was painful due to the multitude of shells (Bournce, Korn, Csh, …) and their assorted quirks. Don’t recall there being any particular big name sponsor behind it. I’ve read some where that Larry Wall would not have written Perl had Ruby existed at that time to solve his needs. This would imply that the adoption of a language by programmers is also a matter of timing in addressing a need.
Also I see the creation of huge collections of libraries that are distributed as part of the core support more of a discouragement to learning a language like Java, Perl, or Python. I dislike “everything and the kitchen sink” approaches. I learnt Java several years ago before the sudden influx of APIs where added. It was appealing then because one could see and understand the whole of it. Now I seldom program in Java, because I just see it as bloated mess; the language is ok, but all the additional libraries that are bundled with it now make me want to run screaming into the hills.
Reason 8 “no killer application” I strongly disagree with. A killer application is a new and novel idea or concept, which is separate from the implementation language. The choice of language used to develop a killer application might simplify parts of the implementation, but do not inspire the actual ideas behind the application. What a killer application does for a programming language is give it exposure. However, this can lead to programmers “worshipping the messenger more than the message”, which is why some languages like Perl, Python, Tcl, or Ruby on Rails will gain sudden followings. What people do after with their language(s) of choice will be more interesting to history.