Maniposynth: Bimodal Tangible Functional Programming

06/30/2022
by   Brian Hempel, et al.
0

Traditionally, writing code is a non-graphical, abstract, and linear process. Not everyone is comfortable with this way of thinking at all times. Can programming be transformed into a graphical, concrete, non-linear activity? While nodes-and-wires and blocks-based programming environments do leverage graphical direct manipulation, users perform their manipulations on abstract syntax tree elements, which are still abstract. Is it possible to be more concrete - could users instead directly manipulate live program values to create their program? We present a system, Maniposynth, that reimagines functional programming as a non-linear workflow where program expressions are spread on a 2D canvas. The live results of those expressions are continuously displayed and available for direct manipulation. The non-linear canvas liberates users to work out-of-order, and the live values can be interacted with via drag-and-drop. Incomplete programs are gracefully handled via hole expressions, which allow Maniposynth to offer program synthesis. Throughout the workflow, the program is valid OCaml code which the user may inspect and edit in their preferred text editor at any time. With Maniposynth's direct manipulation features, we created 38 programs drawn from a functional data structures course. We additionally hired two professional OCaml developers to implement a subset of these programs. We report on these experiences and discuss to what degree Maniposynth meets its goals of providing a non-linear, concrete, graphical programming workflow.

READ FULL TEXT

page 8

page 11

page 15

page 19

page 23

page 25

page 27

page 31

research
02/01/2019

Babylonian-style Programming: Design and Implementation of an Integration of Live Examples into General-purpose Source Code

When working on a program, developers traditionally have to simulate the...
research
05/01/2018

Live Functional Programming with Typed Holes

This paper develops a dynamic semantics for incomplete functional progra...
research
07/24/2019

Sketch-n-Sketch: Output-Directed Programming for SVG

For creative tasks, programmers face a choice: Use a GUI and sacrifice f...
research
08/09/2016

Semi-Automated SVG Programming via Direct Manipulation

Direct manipulation interfaces provide intuitive and interactive feature...
research
08/02/2019

Investigating Direct Manipulation of Graphical Encodings as a Method for User Interaction

We investigate direct manipulation of graphical encodings as a method fo...
research
05/16/2019

Direct Interpretation of Functional Programs for Debugging

We make another assault on the longstanding problem of debugging. After ...
research
04/27/2023

SeeHow: Workflow Extraction from Programming Screencasts through Action-Aware Video Analytics

Programming screencasts (e.g., video tutorials on Youtube or live coding...

Please sign up or login with your details

Forgot password? Click here to reset