In response to this
You’ve persuaded me to look at Python. I must admit I use Gawk a lot and I’ve made my windows XP machine into a Linux one by installing Cyngwin. I use Vim all the time, I find the way the vi navigation lets me get to the end of a word, or delete up to an underscore Just Works. This is by far more productive for me, even though I spend a lot of time writing PL/SQL and use the TOAD tool. I find I use TOAD for browsing stuff but need a decent editor with RE’s and callouts to Awk to be productive. I will probably migrate my Awking to Python. PL/SQL is Ada without the interesting bits.
Anyway, I half agree with what you say about Java being “for the rest of us”, but the interesting thing is that there are a lot of cool(ish) projects, particularly Apache Struts and Jakarta, that give you a lot of leverage if you are looking at solving some kind of web-based problem quickly, and it’s all open source. If I have a problem in Java I can usually find someone else has solved it in about 10 minutes using Google.
One of the guiding principles of J2EE was that people wouldn’t need to know how to program with threads, for example, and I don’t think this is necessarily a Bad Thing in and of itself. Most of us have to solve boring business problems for a living and we want well-defined architectures that will take the weight and let us get rid of them as fast as possible. I confess I’m still trying to see the point of EJB’s, other than being able to talk intelligently about them at job interviews.
So, I think that when you are being a craftsman it is far better to use more expressive languages (I’ve even worked my way through your book on ANSI Lisp and loved it) but when you are assembling stuff for boring work applications what you want is components you can assemble quickly and others will be able to follow when you’ve gone. That’s the problem, I think.