I began thinking about this project with a question: why is code text? Almost all programming must be accomplished by writing out long stretches of symbols into a text box, with the only “graphical” component being (often incomplete) syntax highlighting. Back when all computers could display was text and the primary input device was a keyboard, this was perfectly reasonable.
But now even a high school calculator draws color graphics, and more and more we use phones and tablets which are meant to be touch-driven. And yet, programming remains chained to the clunky old keyboard. Producing programs on a tablet or phone is all but impossible. But there’s no reason it should be. Creating programs should be as easy as drawing a picture.
I draw from the computational framework of Lambda Calculus, in which all computation is represented through anonymous function-objects. Naturally, this mode of thinking about programs lends itself to a graphical interpretation.
Lambda Calculus needs only a few metaphors defined. A line charts the passage of a function-object through the space of the program. Helix squiggles denote passing the squiggled function-object to the other function-object. Double bars indicate an object which dead-ends inside of an abstraction. Large circles enclose “Lambda abstractions” which are ways to reference a set of operations as a unit with inputs and an output.
The goal of this project is to develop a drawing-based editor for Lambda Calculus programs that can be expressed in this manner, which automatically converts the user’s sketches into programs.