Vitaly ran into peer-moderation today by posting a pointer to [old link: http://shasta.cs.uiuc.edu/Jumbo/ ] Jumbo, which supports meta-programming for Java.
[…] it looks lovely, but what i fail to understand is why this is
better as an extension for java, rather than using a lisp-like language,
which is much more suitable for compile-time computation (and of course
for code manipulation)
is there anything java (the language) gives you that one should be so
keen to preserve?
The closing question prompted some wry comments on the state of Java’s standard libraries and support for concurrency. Meanwhile, Vitaly defended using Jumbo:
Sure Lisp-like languages are much better in this field. They have
only one flaw – they’re
not accepted by the majority of the industry. So, sometimes using this
sort of workarounds
is the only way – Java-only programmers will be happy, and Lisp
programmers will be happy
to see this functionality in Java.
Everyone cannily avoided the invitation to meta-discussion about the ‘industry’, and instead digressed into talking about what support there is in LISP for concurrency. Vitaly held up Bigloo, explaining that there were thread primitives to build on and that any ugliness can be hidden in macros — which brought us almost full circle.