Erlend: Every language has its strengths and weaknesses. In your opinion, what are the best and worst aspects of Java. What is most missing, except for templates?
Bruce: I think that the best aspects are garbage collection, enforced exceptions, improved syntax over C++, and that Java focuses on program validation
The worst aspects are that there are occational pockets of bad design, like cloning of objects, the AWT, java.util.Vector, finalize(), and I/O.
Other problems are a lack of the const keyword, as this is useful not only for performance reasons, but also for design reasons.
Features that would be nice to have include operator overloading and default arguments.
The primitive types (int, float, etc) make OOP ackward.
Other problems include polymorphic calls from constructors and no support for destructors (finalize() is not guarateed to be run)
Erlend: We all want to increase our productivity and write better programs. In your opinion what are the most imporant factors in programmer productitity?
Bruce: This is a very important area, and this interview is very short, so I recommend everybody to read
1) PeopleWare (2nd edition)
2) Extreme Programming Explained
Erlend: In Thinking in Java, you make references to other programming languages such as C, C++ and Python. How important do you think it is for a programmer to know more than one programming language well?
Bruce: Its really useful for me. I learn things in Java, and I can use the same concepts in C++, and the same for Python.
Some concepts are just too difficult to learn in one language but if you learn them in another you can re-create them.
Erlend: What is your view on Java standardization and the role of SUN?
Bruce: I have worked on the C++ standardization committe, and I'm not so enthusiastic about a standards process at this time. SUN has been doing a good job so far. At some point it makes sense to have a standards process, but at the moment there are too many changes to Java for a standards process to be efficient.
Erlend: What are your thoughts about the future direction of Java?
Bruce: I hope they dont mess up templates. Just using a similar approach to pizza (http://www.cs.bell-labs.com/who/wadler/pizza/) does not make full use of the power of templates