Category Archives: archive

Articles written in 2003.

Java is a Language for the Masses

Share the article!

20030603162828

Matt Quail writes about the new complexities of JDK 1.5 extensions.  He points to this blog which quotes:

The real point is that LFSPs (Language for Smart People) have a much greater support for abstraction, and in particular for defining your own abstractions, than LFMs (Language for the Masses).


Half a year ago there a couple of bloggers made the recomendation of adding Hygienic Macros into Java as an alternative to adding language features piecemeal.  We received this response from Gilad Bracha, the resident Computational Theologist at Sun.

Thanks for the suggestion. Yes, we do know what macros are, and we may have even heard of Lisp. Seriously, some formulations of macros are well structured enough to prevent the onerous kinds of abuse that have given macros a dubious reputation in the C culture.Nevertheless, we don’t plan on adding a macro facility to Java any time soon. A major objection is that we do not want to encourage the development of a wide variety of user-defined macros as part of the Java culture.

He goes on further to explain what he means by Java Culture:

The advantages of Java is that it easily serves as a lingua franca – everyone can read a Java program and understand what is going on. User defined macros destroy that property. Every installation or project can (and will) define its own set of macros, that make their programs unreadable for everyone else. Programming languages are cultural artifacts, and their success (i.e., widespread adoption) is critically dependent on cultural factors as well as technical ones.

We are catering to the Java culture, while trying to manage things well on the technical side at the same time. In general, once can contrast the Scheme-like philosophy of using a small number of very general constructs, with the more mainstream approach of having a great many highly specialized constructs, as in C or Modula style languages.

Java is clearly in the latter camp. Most Java developers are happy to have dedicated, narrowly focused solutions that are tailored to a specific problem. I am keenly aware of the drawbacks of such an approach, but I don’t see it changing very quickly.

A little while later William Grosso puts together a Share the article!