Abstract
Many programming problems call for turning geometrical thoughts into code: tables, hierarchical structures, nests of objects, trees, forests, graphs, and so on. Linear text does not do justice to such thoughts. But, it has been the dominant programming medium for the past and will remain so for the foreseeable future.
This paper proposes a novel mechanism for conveniently extending textual programming languages with problem-specific visual syntax. It argues the necessity of this language feature, demonstrates the feasibility with a robust prototype, and sketches a design plan for adapting the idea to other languages.
Supplemental Material
- Adobe. Adobe Dreamweaver CC Help. Retrieved May, 2020, 2019. https://helpx.adobe.com/pdf/dreamweaver_reference.pdfGoogle Scholar
- Leif Andersen, Stephen Chang, and Matthias Felleisen. Super 8 Languages for Making Movies (Functional Pearl). Proceedings of the ACM on Programming Languages 1(International Conference on Functional Programming), pp. 30-1-30-29, 2017. https://doi.org/10.1145/3110274 Google Scholar
Digital Library
- Jeremy Ashkenas. Observable: The User Manual. Retrieved February, 2020, 2019. https://observablehq.com/ @observablehq/user-manualGoogle Scholar
- Rudolf Bayer. Symmetric Binary B-Trees : Data Structure and Maintenance Algorithms. Acta Informatica 1 ( 4 ), pp. 290-306, 1972. https://doi.org/10.1007/BF00289509 Google Scholar
Digital Library
- Alexandre Bergel, Damien Cassou, Stéphane Ducasse, and Jannik Laval. Deep into Pharo. Square Bracket Associates, 2013.Google Scholar
- L. Bernardin, P. Chin, P. DeMarco, K. O. Geddes, D. E. G. Hare, K. M. Heal, G. Labahn, J. P. May, J. McCarron, M. B. Monagan, D. Ohashi, and S. M. Vorkoetter. Maple Programming Guide. Maplesoft, 2012.Google Scholar
- Marat Boshernitsan and Michael S. Downes. Visual Programming Languages: a Survey. EECS Department, University of California, Berkeley, UCB/CSD-04-1368, 2004. http://www2.eecs.berkeley.edu/Pubs/TechRpts/ 2004/6201.htmlGoogle Scholar
- Ravi Chugh, Brian Hempel, Mitchell Spradlin, and Jacob Albers. Programmatic and Direct Manipulation, Together at Last. In Proc. Programming Languages Design and Implementation, pp. 341-354, 2016. https: //doi.org/10.1145/2980983.2908103 Google Scholar
Digital Library
- Hubert Comon, Max Dauchet, Remi Gilleron, Florent Jacquemard, Denis Lugiez, Christof Löding, Sophie Tison, and Marc Tommasi. Tree Automata Techniques and Applications. 2007. http://tata.gforge.inria.fr/Google Scholar
- Gregory Cooper and Shriram Krishnamurthi. Embedding Dynamic Dataflow in a Call-by-Value Language. In Proc. European Symposium on Programming, pp. 294-308, 2004. https://doi.org/10.1007/11693024_20 Google Scholar
Digital Library
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliford Stein. Introduction to Algorithms, Third Edition. MIT Press, 2009.Google Scholar
Digital Library
- Andrea A. diSessa and Harold Abelson. Boxer: A Reconstructible Computational Medium. Communications of the ACM 29 ( 9 ), pp. 859-868, 1986. https://doi.org/10.1145/6592.6595 Google Scholar
Digital Library
- R. Kent Dybvig. The Development of Chez Scheme. In Proc. International Conference on Functional Programming, pp. 1-12, 2006. https://doi.org/10.1145/1160074.1159805 Google Scholar
Digital Library
- Andrew D. Eisenberg and Gregor Kiczales. Expressive Programs Through Presentation Extension. In Proc. International Conference on Aspect-Oriented Software Development, pp. 73-84, 2007. https://doi.org/10. 1145/1218563.1218573 Google Scholar
Digital Library
- T. O. Ellis, J. F. Heafner, and W. L. Sibley. The GRAIL Language and Operations. RAND Corporation, RM-6001-ARPA, 1969a. https://doi.org/10.7249/RM6001 Google Scholar
Cross Ref
- T. O. Ellis, J. F. Heafner, and W. L. Sibley. The Grail Project: An Experiment in Man-Machine Communications. RAND Corporation, RM-5999-ARPA, 1969b. https://www.rand.org/pubs/research_memoranda/RM5999. htmlGoogle Scholar
- Sebastian Erdweg, Lennart C. L. Kats, Tillmann Rendel, Christian Kästner, Klaus Ostermann, and Eelco Visser. Growing a Language Environment with Editor Libraries. In Proc. Generative Programming and Component Engineering, pp. 167-176, 2011. https://doi.org/10.1145/2189751.2047891 Google Scholar
Digital Library
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. A Programmable Programming Language. Communications of the ACM 61 ( 3 ), pp. 62-71, 2018. https://doi.org/10.1145/3127323 Google Scholar
Digital Library
- Robert Bruce Findler, John Clements, Cormac Flanagan, Matthew Flatt, Shriram Krishnamurthi, Paul Steckler, and Matthias Felleisen. DrScheme: A Programming Environment for Scheme. Journal of Functional Programming 12 ( 2 ), pp. 159-182, 2002. https://doi.org/10.1017/S0956796801004208 Google Scholar
Digital Library
- Robert Bruce Findler and PLT. DrRacket: Programming Environment. PLT Design Inc., PLT-TR-2010-2, 2010. https://racket-lang. org/tr2/Google Scholar
- Matthew Flatt. Composable and Compilable Macros, You Want It When? In Proc. International Conference on Functional Programming, pp. 72-83, 2002.Google Scholar
- Matthew Flatt. Submodules in Racket, You Want it When, Again? In Proc. Generative Programming: Concepts & Experiences, pp. 13-22, 2013. https://doi.org/10.1145/2517208.2517211 Google Scholar
Digital Library
- Matthew Flatt, Robert Bruce Findler, and John Clements. GUI : Racket Graphics Toolkit. PLT Design Inc., PLT-TR-2010-3, 2010. https://racket-lang. org/tr3/Google Scholar
- Matthew Flatt, Robert Bruce Findler, and Matthias Felleisen. Scheme with Classes, Mixins, and Traits. In Proc. Asian Symposium Programming Languages and Systems, pp. 270-289, 2006.Google Scholar
Digital Library
- Matthew Flatt and PLT. Reference: Racket. PLT Design Inc., PLT-TR-2010-1, 2010. https://racket-lang. org/tr1/Google Scholar
- Robert Fourer, David M. Gay, and Brian W. Kernighan. AMPL: A Modeling Language for Mathematical Programming. 2nd edition. Cengage Learning, 2002. https://ampl.com/resources/the-ampl-book/Google Scholar
- G. W. French, J. R. Kennaway, and A. M. Day. Programs as Visual, Interactive Documents. Journal of Software: Practice and Experience 44 ( 8 ), pp. 911-930, 2014. https://doi.org/10.1002/spe.2182 Google Scholar
Digital Library
- Adele Goldberg and David Robson. Smalltalk-80 : The Language and Its Implementation. Addison-Wesley Longman Publishing Co, 1983.Google Scholar
Digital Library
- Brian Harvey and Jens Mönig. Bringing "No Ceiling" to Scratch: Can One Language Serve Kids and Computer Scientists? In Proc. Constructionism, pp. 1-10, 2010.Google Scholar
- Brian Hempel, Justin Lubin, Grace Lu, and Ravi Chugh. Deuce: A Lightweight User Interface for Structured Editing. In Proc. International Conference on Software Engineering, pp. 654-664, 2018. https://doi.org/10. 1145/3180155.3180165 Google Scholar
Digital Library
- Daniel Ingalls, Krzysztof Palacz, Stephen Uhler, Antero Taivalsaari, and Tommi Mikkonen. The Lively Kernel A Self-supporting System on a Web Page. In Proc. Self-Sustaining Systems, pp. 31-50, 2008. https://doi. org/10.1007/978-3-540-89275-5_2 Google Scholar
Digital Library
- Lennart C. L. Kats and Eelco Visser. The Spoofax Language Workbench. In Proc. Object-Oriented Programming, Systems, Languages & Applications, pp. 444-463, 2010. https://doi.org/10.1145/1932682.1869497 Google Scholar
Digital Library
- Clemens N. Klokmose, James R. Eagan, Siemen Baader, Wendy Mackay, and Michel Beaudouin-Lafon. Webstrates: Shareable Dynamic Media. In Proc. ACM Symposium on User Interface Software and Technology, pp. 280-290, 2015. https://doi.org/10.1145/2807442.2807446 Google Scholar
Digital Library
- Amy Ko and Brad A. Myers. Barista: An Implementation Framework for Enabling New Tools, Interaction Techniques and Views in Code Editors. In Proc. Conference on Human Factors in Computing Systems, pp. 387-396, 2006. https://doi.org/10.1145/1124772.1124831 Google Scholar
Digital Library
- John Maloney, Kimberly M. Rose, and Walt Disney Imagineering. An Introduction to Morphic: The Squeak User Interface Framework. In Squeak: Open Personal Computing and Multimedia, pp. 39-77 Pearson, 2001.Google Scholar
- Microsoft. Ofice and SharePoint Development in Visual Studio. Retrieved January, 2019, 2019. https://docs.microsoft.com/en-us/visualstudio/vsto/ofice-and-sharepoint-development-in-visualstudio?view=vs-2017Google Scholar
- Chris Okasaki. Red-black Trees in a Functional Setting. Journal of Functional Programming 9 ( 4 ), pp. 471-477, 1999. https://doi.org/10.1017/S0956796899003494 Google Scholar
Digital Library
- Cyrus Omar, Nick Collins, David Moon, Ian Voysey, and Ravi Chugh. Livelits: Filling Typed Holes with Live GUIs (Extended Abstract). In Proc. Workshop on Type-driven Development, 2019.Google Scholar
- Cyrus Omar, YoungSeok Yoon, Thomas D. LaToza, and Brad A. Myers. Active Code Completion. In Proc. International Conference on Software Engineering, pp. 859-869, 2012.Google Scholar
Cross Ref
- Mark Overmars. Teaching Computer Science Through Game Design. Computer 37 ( 4 ), pp. 81-83, 2004. https: //doi.org/10.1109/ MC. 2004.1297314 Google Scholar
Digital Library
- Vaclav Pech, Alex Shatalin, and Markus Voelter. JetBrains MPS as a Tool for Extending Java. In Proc. Principles and Practice of Programming in Java, pp. 165-168, 2013. https://doi.org/10.1145/2500828.2500846 Google Scholar
Digital Library
- Fernando Perez and Brian E. Granger. IPython: A System for Interactive Scientific Computing. Computing in Science and Engineering 9 ( 3 ), pp. 21-29, 2007. https://doi.org/10.1109/ MCSE. 2007.53 Google Scholar
Digital Library
- Jon Postel. Transmission Control Protocol. Internet Engineering Task Force, RFC 793, 1981. https://tools.ietf. org/html/rfc793Google Scholar
- Mitchel Resnick, John Maloney, Andrés Monroy-Hernández, Natalie Rusk, Evelyn Eastmond, Karen Brennan, Amon Millner, Eric Rosenbaum, Jay Silver, Brian Silverman, and Yasmin Kafai. Scratch: Programming for All. Communications of the ACM 52 ( 11 ), pp. 60-67, 2009. https://doi.org/10.1145/1592761.1592779 Google Scholar
Digital Library
- Roman Rädle, Midas Nouwens, Kristian Antonsen, James R. Eagan, and Clemens N. Klokmose. Codestrates: Literate Computing with Webstrates. In Proc. ACM Symposium on User Interface Software and Technology, pp. 715-725, 2017. https://doi.org/10.1145/3126594.3126642 Google Scholar
Digital Library
- Charles Simonyi, Magnus Christerson, and Shane Cliford. Intentional Software. ACM SIGPLAN Notices 41 ( 10 ), pp. 451-464, 2006. https://doi.org/10.1145/1167515.1167511 Google Scholar
Digital Library
- Markus Voelter and Sascha Lisson. Supporting Diverse Notations in MPS' Projectional Editor. In Proc. International Workshop on The Globalization of Modeling Languages, 2014.Google Scholar
- Markus Voelter, Daniel Ratiu, Bernhard Schaetz, and Bernd Kolb. mbeddr: an Extensible C-based Programming Language and IDE for Embedded Systems. In Proc. Conference on Systems, Programming, and Applications: Software for Humanity, pp. 121-140, 2012. https://doi.org/10.1145/2384716.2384767 Google Scholar
Digital Library
- Holger Vogt, Marcel Hendrix, and Paolo Nenzi. Ngspice Users Manual. NGSPICE, 30, 2019. http://ngspice. sourceforge.net/docs/ngspice-30-manual.pdfGoogle Scholar
Index Terms
Adding interactive visual syntax to textual code
Recommendations
Compiling Embedded Programs to Byte Code
PADL '02: Proceedings of the 4th International Symposium on Practical Aspects of Declarative LanguagesFunctional languages have proven substantially useful for hosting embedded domain-specific languages. They provide an infrastructure rich enough to define both a convenient syntax for the embedded language, a type system for embedded programs, and an ...
The Domain-Specific Language Monaco and its Visual Interactive Programming Environment
VLHCC '07: Proceedings of the IEEE Symposium on Visual Languages and Human-Centric ComputingMonaco is a domain-specific language for machine automation programming. It has been developed with the objective to empower domain experts with limited programming capabilities. Its main language features are an imperative notation for reactive systems,...






Comments