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} }
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…
63 Citations
Semi-Automated SVG Programming via Direct Manipulation
- Computer ScienceUIST
- 2016
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 )
- Computer Science
- 2017
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
- Computer ScienceUIST
- 2019
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
- Computer Science2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C)
- 2016
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
- Computer ScienceProc. ACM Program. Lang.
- 2018
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
- Art
- 2020
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…
Direct Manipulation for Imperative Programs
- Computer ScienceSAS
- 2019
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
- Computer Science2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)
- 2018
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
- Computer ScienceProc. ACM Program. Lang.
- 2020
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.
Program Synthesis with Live Bidirectional Evaluation
- Computer ScienceArXiv
- 2019
We present an algorithm for completing program sketches (partial programs, with holes), in which evaluation and example-based synthesis are interleaved until the program is complete and produces a…
References
SHOWING 1-10 OF 46 REFERENCES
Prodirect Manipulation: Bidirectional Programming for the Masses
- Computer Science2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C)
- 2016
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
- Computer Science
- 2008
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
- Computer ScienceUIST
- 2014
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
- Computer ScienceJ. Funct. Program.
- 2014
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
- Computer SciencePOPL '11
- 2011
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
- Computer SciencePOPL '10
- 2010
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
- Computer SciencePLDI '11
- 2011
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
- Computer ScienceUIST
- 2015
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
- Computer ScienceComputer
- 1983
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
- Computer SciencePLDI 2015
- 2015
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.