The Rise and Fall of Languages in 2012
drdobbs.com
drdobbs.com
Nothing's changed. Only node.js is new.
To say it's "treading water" means it was flat between 2011 and 2012, which I don't think is true.
Of course, you might want to just kill yourself first.
COBOL programmers are increasingly valuable both because of their scarcity, and the fact that the small number of places that will need to continue maintenance on old legacy COBOL applications are mostly financial companies, who are using said COBOL applications for integral parts of their banking systems. It's a good market to cater to.
I don't necessarily have a crystal ball, but I'd bet that in 10-15 years Java will be a long way from a declining language; and I say that as someone who has never particularly liked it (the language itself, I think the JVM is actually a pretty badass virtual machine).
Donald Knuth
I highly doubt that he's wrong regarding his own programs, but it's most certainly wrong for the majority of programmers.
PS if we're going to appeal to authority, Church and Lambda Calculus were there first.
Obviously Tcl has Tk which I think was for a long time a significant attraction - certainly was for me in the 1990's. The ability to script, cross platform GUI applications that glued bits of existing c code was exciting at the time. I had a significant amount of image processing stuff working this way with some very workable Tcl/Tk interfaces using OpenGL. That was fun too.
However, I've been using Lua for some of the same reasons that I used to use Tcl. In particular I like the simple nature of the language especially allowing a multi-paradigm approach to development. Although I have heard some argue it just supports many paradigms equally badly on single person projects, it's expressive enough. It's code base is small and neat - Tcl was always kept in good shape - and it is obviously designed for extendibility but with just enough of a core language to be of value on the vast number of platforms on which it runs. There are a reasonable number of addons and libraries available but the small core is a primary characteristic of Lua. Thus to get greater functionality you need to 'craft' your own setup which allows you to deploy just what you need for the task - the language is uber dynamic in that respect. LuaJIT is a nice bonus and the performance figures certainly suggest some stunning improvements are possible - not used it myself. Whilst understandable, it is a shame that LuaJIT isn't totally compatible with 5.2. Lua even has a pretty close approximation to Tk in IUP [http://www.tecgraf.puc-rio.br/iup/].
The "everything is a string" design principle is a hindrance to most (but not all) of those use cases. The only place where it really doesn't create problems is in shells but TCL never did shells right (tclsh sucks).