CSAIL Publications and Digital Archive header
bullet Research Abstracts Home bullet CSAIL Digital Archive bullet Research Activities bullet CSAIL Home bullet

link to publications.csail.mit.edu link to www.csail.mit.edu horizontal line


Research Abstracts - 2007
horizontal line

horizontal line

vertical line
vertical line

Subtext: Uncovering the Simplicity of Programming

Jonathan Edwards


The Subtext project is exploring an alternative approach to programming language design in order to make programming fundamentally easier. The traditional approach is to encode programs as text strings, which a compiler parses according to a grammar. Enormously complex Interactive Development Environments (IDE's) have evolved to make these textual encodings comprehensible and usable. Subtext is instead designing the language and IDE as an inseparable whole, with programmer usabilty as the central goal. Without the constraint of a grammar, computer-mediated representations can more directly express the semantics of a program, and direct manipulation of such representations can effect high-level semantic transformations. Programs can further be given "live" semantics, so that, like a spreadsheet, they are constantly executing concrete examples.


Previous work [1][2] produced a prototype implementation of a functional programming language represented as a tree with internal copying relationships, edited largely by drag-and-drop operations. A web video demonstration has been viewed tens of thousands of times.

Subsequent work [3] developed an operational semantics of this language, including a translation from the lambda calculus. A novel model of mutable state, input/ouput, and concurrency was proposed to reconcile these imperative features with live example-centric semantics.

Current work [4] is developing an alternative representation of conditionals, called schematic tables. Roughly a cross between decision tables and data flow graphs, they represent computation and decision-making orthogonally. They unify the full range of conditional constructs, from if statements through pattern matching to polymorphic predicate dispatch. Program logic is maintained in a declarative canonical form that enforces completeness and disjointness among choices. They give program logic the clarity of truth tables, and support high-level direct manipulation of that logic, avoiding much of the mental computation demanded by conventional conditionals.


[1] Jonathan Edwards. Example Centric Programming. In Companion to the 19th annual ACM SIGPLAN conference on Object Oriented Programming Systems, Languages, and Applications (OOPSLA'04) Vancouver, BC, CANADA, October 2004. [PDF]

[2] Jonathan Edwards. Subtext: Uncovering the Simplicity of Programming. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications(OOPSLA ’05) San Diego, CA, USA, October 16 - 20, 2005. [PDF]

[3] Jonathan Edwards. First Class Copy & Paste. CSAIL Technical Report May 22, 2006. [PDF]

[4] Jonathan Edwards. No Ifs, Ands, or Buts: Uncovering the Simplicity of Conditionals. Submitted to OOPSLA '07 Onward! [PDF]


vertical line
vertical line
horizontal line

MIT logo Computer Science and Artificial Intelligence Laboratory (CSAIL)
The Stata Center, Building 32 - 32 Vassar Street - Cambridge, MA 02139 - USA
tel:+1-617-253-0073 - publications@csail.mit.edu