IronPython as a Foundation for DSLs
The release of IronPython is, in and of itself, A Good Thing. But maybe the best thing is that it's a shared-source release with a very reasonable license. Not because I'm a utopian about the quality of open source, but because I really quite like the code structure. Apropos my dismay that there is not a compiler-design tutorial that reflects modern techniques, IronPython is as close as anything I've seen to just that.
Hey, how awesome would this be:
Three big problems with understanding compiler techniques are that
- tutorials traditionally use a single implementation language, and
- toy samples (calc) morph into complex samples (mini-C) morph into esoterica (unification) rather than iterate on a single problem, and
- there's a gap between hand-coded tutorials and tutorials based on the use of tools (lex, yacc, bison, antlr, etc.). The two techniques should be shown in parallel, with an emphasis shifting from one to the other as the tutorial gets more advanced.
Jim Hugunin wrote the first few iterations of IronPython in Python, then switched to C#.
How rocking would it be to have a tutorial that started with those Python-based prototypes, showing the development of the object structure, strategies for this and that, etc. and then switched to C#, showing the complexities of implementation in a explicitly typed, mainstream language? Meanwhile, you track the development using a tool like Antlrworks:
While I believe that IronPython is 100% hand-coded, I think that most will want to use tools to automate the process as much as possible.
Oh, man, such a tutorial would be great. Jim should so do it in his copious spare time.