Section 5.7. FUTURE CHALLENGES


5.7. FUTURE CHALLENGES

On the way to future challenges, I'll do a brief incursion into Linguistics. Linguistics has been studying a large super-set of the constructs that AspectJ supports: referentiality between utterancesthe subject matter of binding theory draws its roots from Chomsky's pioneering work. In natural languages, pronouns (e.g., this, that, it, her, which, etc.) are examples of such referential relations, but they are not the only ones. In general linguistics, referential dependence is studied regardless of morphological form, regardless of whether it is context-dependent or context-free, and regardless of whether it is about objects or about time. For example, references can be lists of nouns such as "president, the cat, the resident, and the hat," constraints on nouns such as "colorless liquids," temporal references such as "after reading the input stream," and combinations of the above. Note that we use these forms intuitively, that they make texts concise, and that they allow us to organize our ideas as optimally as we can. This rich set of references is what allows us, for example, to divide specification manuals into chapters and sections that are related but loosely coupled; it is also what allows us to make a statement and add more to it at a later point. If we didn't have these referential forms, we would have a hard time communicating indeed.

Programming languages support a very small set of referential relations. In particular, reflective references, groups, and temporal references are practically nonexistent. They can be simulated by combinations of computation and new nouns. And that's exactly one of the things that make programs much more complex than they should be: Programmers have to express a rich set of referencing forms using a very small set of referencing forms. In the process, intentions get diluted and tangled.

The future of AOP will probably benefit from removing the word "Aspect" from its name! What's important for the next generation of programming languages is the exploration of the rich set of referential relations we find in natural languages. That will allows us to appropriately implement pieces of program specification not only as separate chapters, but also as sections, paragraphs, and even sentences in a way that's much more natural. This will help avoid redundancy, temporary variables, and all sorts of programming oddities. This is, of course, a challenge for language designers. I have only some fuzzy ideas about how those languages should look. It seems to me that the conceptual framework that's available from Linguistics is an excellent framework for programming languages, too.



Aspect-Oriented Software Development
Aspect-Oriented Software Development with Use Cases
ISBN: 0321268881
EAN: 2147483647
Year: 2003
Pages: 307

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net