SamGruber::Interactive::Sketch

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.

lambda_graphical

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.

This entry was posted in project-3 on by .

About Sam

Sam Gruber is a junior studying Computer Science and Architecture and the President of the CMU Computer Club. His interests include machine intelligence, realtime graphics demos, and interface design, and he has been sighted both playing in and running tabletop roleplaying games. Sam has experience working with PHP, HTML/CSS, Javascript/Node.js, SML, C/C++ and Linux. He also dabbles in Ruby, Processing, Cinder, Python, and pretty much anything that seems interesting.