Aspects: Invocations are first class objects.
Some of the more advanced programming languages let us have functions as first class objects, and some even do continuations. Aspects (through toolkits like JAC) let us get at a call before it happens, possibly modifying what's going on in it, and performing pre- and post-activities. I wonder what a language that directly supported invocations as first class objects would look like. You'd be able to work with them, pass them around, trigger them once, again...adjusting parameters as you go.
Current aspect-oriented programming systems just don't seem to feel right for this stuff, yet. The dynamic nature of JAC is clearly the way to go...being able to splice complex creations together at runtime is at the heart of any modern system. Compile-time flexibilty (a la AspectJ) just isn't good enough for enterprise class systems.
I want something that's going to give me the clean syntax of an AspectJ, but the runtime flexibility of JAC...I think that runtime flexibility should be in the language.
Which brings up another point.
Minimalist languages are stupid. Let's see -- I can have a very small language where I have to code everything, or a bigger language where many of the complicated things are done right for me. I'll go with the more complex language any time. It just doesn't take all that long to learn them! Learning libraries is much more complex than learning languages.
4:55:17 PM
|