Thu Jun 11 23:10:18 CEST 2009
Last year I really enjoyed the talk of Anurag Mendhekar
"Aspect-Oriented Programming in the Real World". I'm watching it
again. Some point to take home:
* You can't write generalized weavers. That's a bit of the point of
aspect-oriented programming: your design (the aspects) determines
the implementation of the weaver.
* Practical advice: your users will think language = syntax. Use
XML to trick them into thinking they already know what you're
telling them. Next to a standard syntax, also try to give your
language a dumbed down semantics. (This is the rule of least
* Be _really_ careful about the abstractions you build. Know your
stuff (language design, macros, source tx, compiler design)
* Specific techniques: abstract interpretation, monadic semantics
and Hindley-Milner type systems (constraint solver).
I don't find any introductory work on Modular Monadic Semantics.
Googling for it does yield some papers though..
About this syntax vs. semantics thing. Indeed, I've run into this
too. Semantics seems to be something that is "hidden" when people not
experienced with how computers (interpreters) work think about
programming. The direct contact is with the language syntax. They
will absorb the semantics through example. It seems that this
implicit notion of language semantics is quite central to the way
natural languages are used: semantics is created by your _own_ brain,
by observing how _another brain_ interprets the syntax. Starting from
an explicit model of semantics is really confusing, as it puts
abstraction before experience.