Beyond AOP: toward naturalistic programming

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.

[1]  Wanli Ma,et al.  An Overview of Temporal and Modal Logic Programming , 1994, ICTL.

[2]  Gregor Kiczales,et al.  D: A Language Framework for Distributed Programming , 1997 .

[3]  Scot Kamins,et al.  HyperTalk 2.2, the book , 1992 .

[4]  Johnette Hassell,et al.  Information Relationships in PROLOG Programs: How Do Programmers Comprehend Functionality? , 1991, Int. J. Man Mach. Stud..

[5]  Leslie Lamport,et al.  Proving Liveness Properties of Concurrent Programs , 1982, TOPL.

[6]  Ellen Riloff,et al.  NaturalJava: a natural language interface for programming in Java , 2000, IUI '00.

[7]  Pierre Wolper,et al.  Synthesis of Communicating Processes from Temporal Logic Specifications , 1981, TOPL.

[8]  Cristina V. Lopes,et al.  Abstracting Process-to-Function Relations in Concurrency Object-Oriented Applications , 1994, ECOOP.

[9]  Marian Petre,et al.  Usability Analysis of Visual Programming Environments: A 'Cognitive Dimensions' Framework , 1996, J. Vis. Lang. Comput..

[10]  Zohar Manna,et al.  Adequate Proof Principles for Invariance and Liveness Properties of Concurrent Programs , 1984, Sci. Comput. Program..

[11]  Leslie Lamport,et al.  Specifying Concurrent Program Modules , 1983, TOPL.

[12]  Emmon W. Bach,et al.  Categorial Grammars and Natural Language Structures , 1988 .

[13]  Cristina V. Lopes,et al.  Adaptive Parameter Passing , 1996, ISOTAS.

[14]  Noam Chomsky,et al.  Conditions on transformations , 1971 .

[15]  Karl J. Lieberherr,et al.  Adaptive object-oriented programming using graph-based customization , 1994, CACM.

[16]  David H. Lorenz,et al.  Pluggable reflection: decoupling meta-interface and implementation , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[17]  Gerald J. Sussman,et al.  Structure and Interpretation of Computer Programs, Second Edition , 1996 .

[18]  Cristina V. Lopes,et al.  Acoustic Modems for Ubiquitous Computing , 2003, IEEE Pervasive Comput..

[19]  Thomas R. G. Green,et al.  Cognitive dimensions of notations , 1990 .

[20]  David Canfield Smith,et al.  KidSim: end user programming of simulations , 1995, CHI '95.

[21]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[22]  Brad A. Myers,et al.  Studying the language and structure in non-programmers' solutions to programming problems , 2001, Int. J. Hum. Comput. Stud..

[23]  Cristina Videira Lopes,et al.  Aerial acoustic communications , 2001, Proceedings of the 2001 IEEE Workshop on the Applications of Signal Processing to Audio and Acoustics (Cat. No.01TH8575).

[24]  L. Quéré Cognition in Practice , 1996 .

[25]  Cristina V. Lopes,et al.  Aerial communications using piano, clarinet, and bells , 2002, 2002 IEEE Workshop on Multimedia Signal Processing..

[26]  Ankit Shah,et al.  XAspects: an extensible system for domain-specific aspect languages , 2003, OOPSLA '03.

[27]  C. Pollard Anhaphors in English and the scope of binding theory , 1992 .

[28]  G. Lakoff,et al.  Where mathematics comes from : how the embodied mind brings mathematics into being , 2002 .

[29]  G. Lakoff Women, fire, and dangerous things : what categories reveal about the mind , 1989 .

[30]  David H. Lorenz,et al.  Unplugging Components using Aspects , 2003 .

[31]  Lance A. Miller,et al.  Natural Language Programming: Styles, Strategies, and Contrasts , 1981, IBM Syst. J..

[32]  G. Lakoff The Contemporary Theory of Metaphor , 1993 .

[33]  G. Lakoff,et al.  Women, Fire, and Dangerous Things: What Categories Reveal about the Mind , 1988 .

[34]  Noam Chomsky,et al.  Lectures on Government and Binding , 1981 .

[35]  Edmund M. Clarke,et al.  Using Branching Time Temporal Logic to Synthesize Synchronization Skeletons , 1982, Sci. Comput. Program..

[36]  Brad A. Myers,et al.  Using HCI techniques to design a more usable programming system , 2002, Proceedings IEEE 2002 Symposia on Human Centric Computing Languages and Environments.

[37]  SERGEI KOJARSKI,et al.  Aspectual Reflection , .

[38]  Alan W. Biermann,et al.  Programming in natural language: “NLC” as a prototype , 1979, ACM '79.

[39]  M.N. Sastry,et al.  Structure and interpretation of computer programs , 1986, Proceedings of the IEEE.

[40]  Yehuda N. Falk,et al.  Lexical-Functional Grammar: An Introduction to Parallel Constraint-Based Syntax , 2001 .

[41]  G. Lakoff,et al.  Metaphors We Live by , 1982 .

[42]  Paul Brna,et al.  Learning to Build and Comprehend Complex Information Structures: Prolog as a Case Study , 1999 .

[43]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[44]  Bonnie A. Nardi,et al.  A Small Matter of Programming: Perspectives on End User Computing , 1993 .

[45]  Alan F. Blackwell,et al.  Mental imagery in program design and visual programming , 1999, Int. J. Hum. Comput. Stud..

[46]  Brent Hailpern,et al.  Modular Verification of Computer Communication Protocols , 1983, IEEE Trans. Commun..

[47]  Jean E. Sammet The use of English as a programming language , 1966, CACM.

[48]  Henry Lieberman,et al.  Watch what I do: programming by demonstration , 1993 .

[49]  Thomas R. G. Green,et al.  The cognitive dimension of viscosity: A sticky problem for HCI , 1990, INTERACT.

[50]  Paul Brna,et al.  Teaching, learning and using Prolog: supporting the programmer , 1991 .

[51]  A. Pnueli The Temporal Semantics of Concurrent Programs , 1979, Theor. Comput. Sci..

[52]  David H. Lorenz,et al.  Aspects and polymorphism in AspectJ , 2003, AOSD '03.

[53]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[54]  Michael P. Georgeff,et al.  Communication and interaction in multi-agent planning , 1983, AAAI 1983.

[55]  Karl J. Lieberherr,et al.  Aspectual Collaborations: Combining Modules and Aspects , 2003, Comput. J..

[56]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[57]  Bonnie A. Nardi,et al.  Twinkling Lights and Nested Loops: Distributed Problem Solving and Spreadsheet Development , 1991, Int. J. Man Mach. Stud..

[58]  Susan Wiedenbeck,et al.  Novice/Expert Differences in Programming Skills , 1985, Int. J. Man Mach. Stud..

[59]  António Branco Without an Index: a lexicalist account of binding theory , 2001 .

[60]  G. Lakoff,et al.  Philosophy in the flesh : the embodied mind and its challenge to Western thought , 1999 .

[61]  G. Fauconnier Mappings in thought and language , 1997 .

[62]  Kate Ehrlich,et al.  Cognitive strategies and looping constructs: an empirical study , 1983, CACM.

[63]  Gennaro Chierchia Aspects of a Categorial Theory of Binding , 1988 .

[64]  T. Odlin Women, Fire, and Dangerous Things: What Categories Reveal about the Mind , 1988 .