JSR 201 and Non-Disruptive Language Extensions
|
|
20021204065742
Looks like there's a new JSR in the JCP, the following will be added to J2SE 1.5:
- Enumerated Types.
- Automatic conversion of primitives to their object wrappers.
- Enhanced for loops.
- Unqualified constants.
Anyway, the JCP reads: "We have therefore approached the task of updating the Java programming language with considerable trepidation. The existing spirit and features of the language are used by a very large developer community and we wish to avoid disrupting or annoying existing users."
Clearly, the changes aren't too radical, but I'm curious, what kinds of language changes are disuptive? Obviously, one that does change the VM specification, and of course, the syntax change that makes older code fail compilation. So, given that we can define non-disruptive language extensions, could we not define a standard way of extending the language?
A 1998 paper by Guy Steel "Growing A Language" points out this issue. Guy asks "How should the Java programming language grow?". He writes: "A language design can no longer be a thing. It must be a pattern - a pattern for growth - a pattern for growing the pattern for defining the patterns that programmers can use for their real work and their main goal." Read that quote a second time! So he tells us to "go meta", this I hope the next JSR should look like.

