Posted 2010-08-16 22:00:00 GMT
After more than fifty years, and fifteen years of being an ANSI standard, Lisp still has a feature advantage over platforms like .NET and Java. It's sad. Behind me at work sits a Smalltalker and the pain is shared.
The strange difficulty faced by the .NET platform in programmatically generating a class without resorting to manual IL generation and the assembly builder is symptomatic of the unnecessary balkanisation between compile and run time. F# includes a compiler that can be called programmatically, but bizarrely mishmashes two type systems together (the ML type-system which finds order of definition significant and the .NET type system which works class at a time and supports overloading) without any serious attempt to reconcile them.
On the JVM which is the intellectual heir to much of the Lisp legacy, you have the ASM bytecode framework. What about real macros?
With real macros, you can leverage the program you've already written and build on it. Emitting bytecode requires a conceptual shift, new debugging tools, and so on. It demands a (presumably slightly differently featured) parallel implementation of numerous aspects of the domain already done in the more expressive overlying language; and unnecessarily burdensome, as the C# to IL compiler is hardly a vast technological feat that needs to be guarded for its competitive advantage. Shouldn't it be available at all stages of the programming process?
The entropy and complexity of the computing universe increases naturally; things don't necessarily improve — hard and thankless work is needed.
Post a comment