Beyond AOP: Toward Naturalistic Programming

Cristina Videira Lopes, University of California at Irvine
Paul Dourish, University of California at Irvine
David H. Lorenz, Northeastern University
Karl Lieberherr, Northeastern University

Software understanding for documentation, maintenance or evolution is one of the longest-standing problems in Computer Science. The use of "high-level" programming paradigms and object-oriented languages helps, but fundamentally remains far from solving the problem. Most programming languages and systems have fallen prey to the assumption that they are supposed to capture idealized models of computation inspired by deceptively simple metaphors such as objects and mathematical functions. Aspect-oriented programming languages have made a significant breakthrough by noticing that, in many situations, humans think and describe in crosscutting terms. In this paper we suggest that the next breakthrough would require looking even closer to the way humans have been thinking and describing complex systems for thousand of years using natural languages. While natural languages themselves are not appropriate for programming, they contain a number of elements that make descriptions concise, effective and understandable. In particular, natural languages referentiality is a key factor in supporting powerful program organizations that can be easier understood by humans.

In OOPSLA'03 Special Track on Onward! Seeking New Paradigms & New Thinking, pages 198-207, International Conference on Object-Oriented Programming, Systems and Applications, Anaheim, California October 26-30, 2003. OOPSLA 2003, ACM Presss. Published as ACM SIGPLAN Notices 38(12):34-43, December 2003.


paper.html (html)

oopsla03a.ps.gz (92k)

oopsla03a.pdf (248k)

The slides from the OOPSLA presentation: (0k)

Links
http://www.ics.uci.edu/~lopes/documents/oopsla03/
http://www.ccs.neu.edu/research/demeter/biblio/referential.html
http://oopsla.acm.org/oopsla2003/files/onw-2.html
http://www.isr.uci.edu/events/Research-Forum-2003/presentations/lopes.html
http://doi.acm.org/10.1145/949344.949400
http://doi.acm.org/10.1145/966051.966058

CleversCS: A Forum For Clever Computer Science Ideas
The Software Practice Lab Reading Group
Granule-Oriented Programming, Yinliang Zhao, University of Regina, Technical Report CS-2004-001, March 2004.
Utah U. Compilers Reading Group
--------- SIGPLAN ---------
@Article{Lopes:2003:AOP,
    Author = "Cristina Videira Lopes and Paul Dourish and David~H. Lorenz and Karl Lieberherr",
    Pages = {34--43},
    Title = "Beyond {AOP}: {Toward} {Naturalistic} {Programming}",
    Year = 2003,
    Volume = 38,
    Number = 12,
    Month = dec,
    Journal = {ACM SIGPLAN Notices},
    Note = "OOPSLA'03 Special Track on Onward! Seeking New Paradigms \& New Thinking",
    URL = "http://www.ccs.neu.edu/home/lorenz/papers/oopsla03a/",
}
--------- OOPSLA ---------
@InProceedings{Lopes:2003:BAT,
    Author = "Cristina~Videira Lopes and Paul Dourish and David~H. Lorenz and Karl Lieberherr",
    Title = "Beyond {AOP}: Toward Naturalistic Programming",
    Note = "OOPSLA'03 Special Track on Onward! Seeking New Paradigms \& New Thinking",
    Year = 2003,
    Pages = "198--207",
    Address = {Anaheim, CA},
    Publisher = {ACM Press},
    Crossref = "COMPAN:OOPSLA:2003",
    URL = "http://www.ccs.neu.edu/home/lorenz/papers/oopsla03a/",
}
--------- OOPSLA crossref begin ---------
@String{SIGPLAN = "ACM SIGPLAN Notices"}
@String{PROC = "Proceedings of "}
@String{ANNUAL = "Annual Conference on "}
@String{COMPAN = "Companion of "}
@String{OOPSLA = "Object-Oriented Programming Systems, Languages, and Applications"}
@String{PROC:OOPSLA2003 = PROC#" the 18$^{th}$"#ANNUAL#OOPSLA}
@String{COMPAN:OOPSLA2003 = COMPAN#" the 18$^{th}$"#ANNUAL#OOPSLA}
@String{OOPSLA2003 = "OOPSLA'03"}
@Proceedings{OOPSLA:2003,
    Address = {Anaheim, California},
    Booktitle = PROC:OOPSLA2003,
    Key = OOPSLA2003,
    Organization = OOPSLA2003,
    Publisher = SIGPLAN#{ 38(10) }#Oct#{ 2003},
    Title = PROC:OOPSLA2003,
    Year = 2003,
}
@Proceedings{COMPAN:OOPSLA:2003,
    Address = {Anaheim, California},
    Booktitle = COMPAN:OOPSLA2003,
    Title = COMPAN:OOPSLA2003,
    Year = 2003,
    Publisher = {ACM Press},
}
---------- OOPSLA crossref end ----------