Home · Schedule · Tracks · Recommendations · Registration


Naturalistic Programming and Run-Time Code Generation

Tuesday, 28 October – 10:30-12:00

These papers explore simplifying programming by examining some of our underlying assumptions about references and constructing programs.

Beyond AOP: Toward Naturalistic Programming

Cristina Lopes, University of California, Irvine, lopes@ics.uci.edu
Paul Dourish, University of California, Irvine, jpd@ics.uci.edu
David Lorenz, Northeastern University, lorenz@ccs.neu.edu
Karl Lieberherr, Northeastern University, lieber@ccs.neu.edu

Software understanding (for documentation, maintenance or evolution) is one of the longest-standing problems in Computer Science. The use of bct-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 more easily understood by humans.

Routine Run-time Code Generation

Sam Kamin, Univ. of Illinois at Urbana-Champaign, kamin@cs.uiuc.edu

The decades-old paradigm of "object code = executable code: is outdated. The paradigm we propose in this paper is "object code = executable program generator.: Similarly, "software component" should be "program that, when appropriately invoked by a client, generates machine language useful to the client." Traditional object files amount to constant functions in the domain of code-producing functions; in the future, we will routinely employ the full domain of higher-order code values. In this paper, we argue that such a change in viewpoint can lead to much wider use of run-time code generation, by overcoming the bureaucratic barriers it usually encounters. Run-time code generation has numerous applications; when it comes to be used routinely, many more applications are likely to be discovered.