skip to main content

Adding interactive visual syntax to textual code

Published:13 November 2020Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

Auxiliary Presentation Video

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.

References

  1. Adobe. Adobe Dreamweaver CC Help. Retrieved May, 2020, 2019. https://helpx.adobe.com/pdf/dreamweaver_reference.pdfGoogle ScholarGoogle Scholar
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. Jeremy Ashkenas. Observable: The User Manual. Retrieved February, 2020, 2019. https://observablehq.com/ @observablehq/user-manualGoogle ScholarGoogle Scholar
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. Alexandre Bergel, Damien Cassou, Stéphane Ducasse, and Jannik Laval. Deep into Pharo. Square Bracket Associates, 2013.Google ScholarGoogle Scholar
  6. 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 ScholarGoogle Scholar
  7. 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 ScholarGoogle Scholar
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliford Stein. Introduction to Algorithms, Third Edition. MIT Press, 2009.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarCross RefCross Ref
  16. 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 ScholarGoogle Scholar
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. Robert Bruce Findler and PLT. DrRacket: Programming Environment. PLT Design Inc., PLT-TR-2010-2, 2010. https://racket-lang. org/tr2/Google ScholarGoogle Scholar
  21. Matthew Flatt. Composable and Compilable Macros, You Want It When? In Proc. International Conference on Functional Programming, pp. 72-83, 2002.Google ScholarGoogle Scholar
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle Scholar
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. Matthew Flatt and PLT. Reference: Racket. PLT Design Inc., PLT-TR-2010-1, 2010. https://racket-lang. org/tr1/Google ScholarGoogle Scholar
  26. 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 ScholarGoogle Scholar
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. Adele Goldberg and David Robson. Smalltalk-80 : The Language and Its Implementation. Addison-Wesley Longman Publishing Co, 1983.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle Scholar
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle Scholar
  36. 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 ScholarGoogle Scholar
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle Scholar
  39. 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 ScholarGoogle ScholarCross RefCross Ref
  40. Mark Overmars. Teaching Computer Science Through Game Design. Computer 37 ( 4 ), pp. 81-83, 2004. https: //doi.org/10.1109/ MC. 2004.1297314 Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. Jon Postel. Transmission Control Protocol. Internet Engineering Task Force, RFC 793, 1981. https://tools.ietf. org/html/rfc793Google ScholarGoogle Scholar
  44. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. Markus Voelter and Sascha Lisson. Supporting Diverse Notations in MPS' Projectional Editor. In Proc. International Workshop on The Globalization of Modeling Languages, 2014.Google ScholarGoogle Scholar
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. Holger Vogt, Marcel Hendrix, and Paolo Nenzi. Ngspice Users Manual. NGSPICE, 30, 2019. http://ngspice. sourceforge.net/docs/ngspice-30-manual.pdfGoogle ScholarGoogle Scholar

Index Terms

  1. Adding interactive visual syntax to textual code

                Recommendations

                Comments

                Login options

                Check if you have access through your login credentials or your institution to get full access on this article.

                Sign in

                Full Access

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader
                About Cookies On This Site

                We use cookies to ensure that we give you the best experience on our website.

                Learn more

                Got it!