Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3563836.3568722acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Interleaved 2D Notation for Concatenative Programming

Published: 01 December 2022 Publication History

Abstract

Concatenative languages use implicit argument passing to provide a concise expression of programs comprising many composed transformation functions. However, they are sometimes regarded as "write-only" languages because understanding code requires mentally simulating the manipulations of the argument stack to identify where values are produced and consumed. All of this difficulty can be avoided with a notation that presents both the functions and their operands simultaneously, which can also ease editing by making available values and functions directly apparent. This paper presents a two-dimensional notation for these programs, comprising alternating rows of functions and operands with arguments and return values indicated by physical layout, and a tool for interactive live editing of programs in this notation.

References

[1]
Bryan W. C. Chung. 2013. Multimedia Programming with Pure Data. Packt Publishing. isbn:1782164642
[2]
Jonathan Edwards. 2004. Example Centric Programming. In Companion to the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’04). Association for Computing Machinery, New York, NY, USA. 124. isbn:1581138334 https://doi.org/10.1145/1028664.1028713
[3]
Jason Erb. 2021. Om website. https://www.om-language.org/
[4]
Riley Evans, Samantha Frohlich, and Meng Wang. 2022. CircuitFlow: A Domain Specific Language for Dataflow Programming. In Practical Aspects of Declarative Languages: 24th International Symposium, PADL 2022, Philadelphia, PA, USA, January 17–18, 2022, Proceedings. Springer-Verlag, Berlin, Heidelberg. 79–98. isbn:978-3-030-94478-0 https://doi.org/10.1007/978-3-030-94479-7_6
[5]
Keith Hanna. 2002. Interactive Visual Functional Programming. In Proceedings of the Seventh ACM SIGPLAN International Conference on Functional Programming (ICFP ’02). Association for Computing Machinery, New York, NY, USA. 145–156. isbn:1581134878 https://doi.org/10.1145/581478.581493
[6]
Dominikus Herzberg and Tim Reichert. 2009. Concatenative programming-an overlooked paradigm in functional programming. In International Conference on Software and Data Technologies. 1, 257–262.
[7]
Ulrich Hoffmann. 2019. Forth Projectional Editing. In EuroForth 2019.
[8]
Kenneth Holladay, Lee Spector, and Maarten Keijzer. 2013. Session Details: Stack-Based Genetic Programming Workshops. In Proceedings of the 15th Annual Conference Companion on Genetic and Evolutionary Computation (GECCO ’13 Companion). Association for Computing Machinery, New York, NY, USA. isbn:9781450319645 https://doi.org/10.1145/3253595
[9]
Michael Homer. 2022. Swipe-and-Tap Functional Programming. In ACM Interactive Surfaces and Spaces Conference (ISS).
[10]
Michael Homer and James Noble. 2013. A tile-based editor for a textual programming language. In Proceedings of IEEE Working Conference on Software Visualization (VISSOFT’13). 1–4. https://doi.org/10.1109/VISSOFT.2013.6650546
[11]
Wesley M. Johnston, J. R. Paul Hanna, and Richard J. Millar. 2004. Advances in Dataflow Programming Languages. ACM Comput. Surv., 36, 1 (2004), mar, 1–34. issn:0360-0300 https://doi.org/10.1145/1013208.1013209
[12]
Timothy Jones and Michael Homer. 2018. The Practice of a Compositional Functional Programming Language. In Asian Symposium on Programming Languages and Systems. https://doi.org/10.1007/978-3-030-02768-1_10
[13]
Maarten Keijzer. 2013. Push-Forth: A Light-Weight, Strongly-Typed, Stack-Based Genetic Programming Language. In Proceedings of the 15th Annual Conference Companion on Genetic and Evolutionary Computation (GECCO ’13 Companion). Association for Computing Machinery, New York, NY, USA. 1635–1640. isbn:9781450319645 https://doi.org/10.1145/2464576.2482742
[14]
Mary Beth Kery and Brad A Myers. 2017. Exploring exploratory programming. In 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). 25–29.
[15]
Amy J. Ko, Robin Abraham, Laura Beckwith, Alan Blackwell, Margaret Burnett, Martin Erwig, Chris Scaffidi, Joseph Lawrance, Henry Lieberman, Brad Myers, Mary Beth Rosson, Gregg Rothermel, Mary Shaw, and Susan Wiedenbeck. 2011. The State of the Art in End-user Software Engineering. ACM Comput. Surv., 43, 3 (2011), Article 21, April, 44 pages. issn:0360-0300 https://doi.org/10.1145/1922649.1922658
[16]
Charles H. Moore. 2009. Chuck Moore’s Wonderful colorForth Programming Language and OS. https://colorforth.github.io/
[17]
Hisham H. Muhammad. 2019. Userland. http://www.userland.org/
[18]
James Noble and Robert Biddle. 2002. Program Visualisation for Visual Programs. In Proceedings of the Third Australasian Conference on User Interfaces - Volume 7 (AUIC ’02). Australian Computer Society, Inc., AUS. 29–38. isbn:0909925852
[19]
Alexander Obenauer. 2021. The Future of the Operating System. https://alexanderobenauer.com/os/
[20]
Cyrus Omar, David Moon, Andrew Blinn, Ian Voysey, Nick Collins, and Ravi Chugh. 2021. Filling Typed Holes with Live GUIs. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2021). Association for Computing Machinery, New York, NY, USA. 511–525. isbn:9781450383912 https://doi.org/10.1145/3453483.3454059
[21]
Cyrus Omar, Ian Voysey, Ravi Chugh, and Matthew A. Hammer. 2019. Live Functional Programming with Typed Holes. Proc. ACM Program. Lang., 3, POPL (2019), Article 14, jan, https://doi.org/10.1145/3290327
[22]
T. Perkis. 1994. Stack-based genetic programming. In Proceedings of the First IEEE Conference on Evolutionary Computation. IEEE World Congress on Computational Intelligence. 148–153 vol.1. https://doi.org/10.1109/ICEC.1994.350025
[23]
Sviatoslav Pestov, Daniel Ehrenberg, and Joe Groff. 2010. Factor: A Dynamic Stack-Based Programming Language. In Proceedings of the 6th Symposium on Dynamic Languages (DLS ’10). Association for Computing Machinery, New York, NY, USA. 43–58. isbn:9781450304054 https://doi.org/10.1145/1869631.1869637
[24]
Matthew Poole. 2019. A block design for introductory functional programming in Haskell. In Proceedings of the 2019 IEEE Blocks and Beyond Workshop (B&B), Mark Sherman and Franklyn Turbak (Eds.). Institute of Electrical and Electronics Engineers, 31–35. isbn:978-1-7281-4850-2 https://doi.org/10.1109/BB48857.2019.8941214
[25]
David Rauch, Patrick Rein, Stefan Ramson, Jens Lincke, and Robert Hirschfeld. 2019. Babylonian-style Programming. The Art, Science, and Engineering of Programming, 3, 3 (2019), 9–1.
[26]
Patrick Rein, Stefan Ramson, Jens Lincke, Robert Hirschfeld, and Tobias Pape. 2018. Exploratory and live, programming and coding. The Art, Science, and Engineering of Programming, 3, 1 (2018), 1–1.
[27]
Marc Schmidt. 2021. Patterns for Visual Programming: With a Focus on Flow-Based Programming Inspired Systems. In 26th European Conference on Pattern Languages of Programs (EuroPLoP’21). Association for Computing Machinery, New York, NY, USA. Article 6, 7 pages. isbn:9781450389976 https://doi.org/10.1145/3489449.3489977
[28]
Ben Selwyn-Smith, Craig Anslow, Michael Homer, and James R. Wallace. 2019. Co-located Collaborative Block-Based Programming. In IEEE Symposium on Visual Languages and Human-Centric Computing. https://doi.org/10.1109/VLHCC.2019.8818895
[29]
Paul Shen. 2021. natto website. https://natto.dev/
[30]
William R. Sutherland. 1966. The on-line graphical specification of computer procedures. Ph. D. Dissertation. Massachussetts Institute of Technology.
[31]
Manfred von Thun and Reuben Thomas. 2001. Joy: Forth’s Functional Cousin. In Proceedings of the 17th EuroForth Conference.

Cited By

View all
  • (2024)Reclaiming the Unexplored in Hybrid Visual ProgrammingProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690045(13-25)Online publication date: 17-Oct-2024
  • (2024)In-Line Compositional Visual ProgrammingCompanion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming10.1145/3660829.3660841(73-79)Online publication date: 11-Mar-2024
  • (2023)Branching Compositional Data Transformations in jq, VisuallyProceedings of the 2nd ACM SIGPLAN International Workshop on Programming Abstractions and Interactive Notations, Tools, and Environments10.1145/3623504.3623567(11-16)Online publication date: 18-Oct-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PAINT 2022: Proceedings of the 1st ACM SIGPLAN International Workshop on Programming Abstractions and Interactive Notations, Tools, and Environments
November 2022
62 pages
ISBN:9781450399104
DOI:10.1145/3563836
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 December 2022

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. concatenative programming
  2. dataflow programming
  3. visual programming

Qualifiers

  • Research-article

Conference

PAINT '22
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)17
  • Downloads (Last 6 weeks)0
Reflects downloads up to 20 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Reclaiming the Unexplored in Hybrid Visual ProgrammingProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690045(13-25)Online publication date: 17-Oct-2024
  • (2024)In-Line Compositional Visual ProgrammingCompanion Proceedings of the 8th International Conference on the Art, Science, and Engineering of Programming10.1145/3660829.3660841(73-79)Online publication date: 11-Mar-2024
  • (2023)Branching Compositional Data Transformations in jq, VisuallyProceedings of the 2nd ACM SIGPLAN International Workshop on Programming Abstractions and Interactive Notations, Tools, and Environments10.1145/3623504.3623567(11-16)Online publication date: 18-Oct-2023
  • (2023)Multiple-Representation Visual Compositional Dataflow ProgrammingCompanion Proceedings of the 7th International Conference on the Art, Science, and Engineering of Programming10.1145/3594671.3594681(39-47)Online publication date: 13-Mar-2023
  • (2022)Swipe-and-Tap Functional ProgrammingCompanion Proceedings of the 2022 Conference on Interactive Surfaces and Spaces10.1145/3532104.3571459(18-21)Online publication date: 20-Nov-2022

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media