Chapter 14: The Dream Language
Graham lays out his criteria for a dream language in this chapter. He has some interesting things to say, but a couple of points made me reflect on my experiences with Java.
First is hackability -- Java is only mildly hackable. Swing components, while extremely flexible, have a lot of private, and package protected variables, and code is split sometimes arbitrarily between the UI and the View classes. I usually end up copying the src of some class or another and hacking (in the bad context) my own copy of it. I don't really consider that a hackable (in the good context) language.
I code Swing most of the time, but this holds for the rest of the language. For example, I hear a lot of C++ programmers complain that they don't have the same low level access to pointers and such in Java. It would be cool if the language itself was build in layers so that if you were one of the people who likes to dig into things like classloaders and JavaCC, you can, otherwise you can just run with the standard stuff.
We can chat about all of the other attributes as well, but I just want to add one thought from earlier in the discussion regarding multiple languages. The topics in this chapter are all sort of overarching, global heuristics -- I agree with the earlier discussion and don't believe there is a single, best language. On the other hand, I could see an optimal unified platform -- a group of languages that all work together, each with a specific purpose and intent.