Programmatic and direct manipulation, together at last

@article{Chugh2016ProgrammaticAD,
  title={Programmatic and direct manipulation, together at last},
  author={Ravi Chugh and Brian Hempel and Mitchell Spradlin and Jacob Albers},
  journal={Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation},
  year={2016}
}
  • Ravi Chugh, Brian Hempel, Jacob Albers
  • Published 10 July 2015
  • Computer Science
  • Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation
Direct manipulation interfaces and programmatic systems have distinct and complementary strengths. The former provide intuitive, immediate visual feedback and enable rapid prototyping, whereas the latter enable complex, reusable abstractions. Unfortunately, existing systems typically force users into just one of these two interaction modes. We present a system called Sketch-n-Sketch that integrates programmatic and direct manipulation for the particular domain of Scalable Vector Graphics (SVG… 

Figures from this paper

Semi-Automated SVG Programming via Direct Manipulation
TLDR
New features for Sketch-n-Sketch that assist in the programming process itself are designed and implemented that allow the user to rapidly create high-level, reusable abstractions in the program while at the same time retaining direct manipulation capabilities.
Direct Manipulation Programming Systems ( A Brief Introduction )
TLDR
Sket-n-Sketch is a direct manipulation programming system equipped with (1) new direct manipulation techniques for manipulating the output of a program, and (2) newdirect manipulation techniquesfor manipulating the source code of a programs.
Sketch-n-Sketch: Output-Directed Programming for SVG
TLDR
A dozen new parametric designs in Sketch-n-Sketch are implemented, including the first demonstration of building a recursive function in an output-directed programming setting, and a domain-agnostic provenance tracing scheme is presented.
Prodirect Manipulation: Bidirectional Programming for the Masses
  • Ravi Chugh
  • Computer Science
    2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C)
  • 2016
TLDR
This extended abstract proposes two general strategies --- real-time program synthesis and domain-specific synthesis of general-purpose programs --- that may prove fruitful for overcoming the technical challenges.
Bidirectional evaluation with direct manipulation
TLDR
An evaluation update algorithm for a full-featured functional programming language, which synthesizes program changes based on output changes, and allows expert users to define custom lenses that augment the update algorithm with more advanced or domain-specific program updates.
Output-Directed Programming Programming with Direct Manipulation of Output
The programmer would like to make their logo design reusable—in other words, they would like to create a function that, given size and color arguments, generates a logo appropriately. With the logo
Maniposynth: Bimodal Tangible Functional Programming
TLDR
This work presents a system, Maniposynth, that reimagines functional programming as a non-linear workflow where program expressions are spread on a 2D canvas and the live results of those expressions are continuously displayed and available for direct manipulation.
Direct Manipulation for Imperative Programs
TLDR
This paper introduces direct state manipulation, which allows programmers to visualize the trace of a buggy program on an input, and modify variable values at a location, and proposes a synthesis technique based on program sketching and quantitative objectives to efficiently find the “closest” program to the original one that is consistent with the manipulated values.
Deuce: A Lightweight User Interface for Structured Editing
TLDR
A controlled user study with 21 participants demonstrates that structural selection is preferred to a more traditional text-selection interface and may be faster overall once users gain experience with the tool.
Programming with a read-eval-synth loop
TLDR
It is found that programmers using RESL solve problems with far less need to edit the code themselves and by browsing documentation far less, and are less likely to leave a task unfinished and more likely to be correct.
...
...

References

SHOWING 1-10 OF 47 REFERENCES
Prodirect Manipulation: Bidirectional Programming for the Masses
  • Ravi Chugh
  • Computer Science
    2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C)
  • 2016
TLDR
This extended abstract proposes two general strategies --- real-time program synthesis and domain-specific synthesis of general-purpose programs --- that may prove fruitful for overcoming the technical challenges.
Program synthesis by sketching
TLDR
Sketching is introduced, a new style of synthesis that offers a fresh approach to the synergy problem and shows that sketching is a viable approach to making synthesis practical in a general programming context.
Programming by manipulation for layout
TLDR
This work presents Programming by Manipulation, a new programming methodology for specifying the layout of data visualizations, targeted at non-programmers, and suggests that the tool is 5-times more productive than direct programming with constraints.
Implicit self-adjusting computation for purely functional programs
TLDR
It is proved that the translation outputs well-typed self-adjusting programs and preserves the source program's input-output behavior, guaranteeing that translated programs respond correctly to all changes to their data.
Automating string processing in spreadsheets using input-output examples
TLDR
The design of a string programming/expression language that supports restricted forms of regular expressions, conditionals and loops is described and an algorithm based on several novel concepts for synthesizing a desired program in this language is described from input-output examples.
From program verification to program synthesis
TLDR
The proposed technique synthesizes programs for complicated arithmetic algorithms including Strassen's matrix multiplication and Bresenham's line drawing; several sorting algorithms; and several dynamic programming algorithms using verification tools built in the VS3 project.
Spreadsheet table transformations from examples
TLDR
An automatic technique that takes from a user an example of how the user needs to transform a table of data, and provides to the user a program that implements the transformation described by the example, and presents a language of programs TableProg that can describe transformations that real users require.
User Interaction Models for Disambiguation in Programming by Example
TLDR
This work presents two novel user interaction models that communicate actionable information to the user to help resolve ambiguity in the examples of PBE systems.
Direct Manipulation: A Step Beyond Programming Languages
TLDR
As I talked with enthusiasts and examined the systems they used, I began to develop a model of the features that produced such delight, and the central ideas seemed to be visibility of the object of interest; rapid, reversible, incremental actions; and replacement of complex command language syntax by direct manipulation of the objects of interest.
Interactive parser synthesis by example
TLDR
A programming-by-example framework called Parsify is presented that is able to synthesize a parser from input/output examples and empirically demonstrates the viability of the approach by using Parsify to construct parsers for source code drawn from Verilog, SQL, Apache, and Tiger.
...
...