PWCT2: A Self-Hosting Visual Programming Language Based on Ring with Interactive Textual-to-Visual Code Conversion
Source abstract
Abstract
Visual programming languages (VPLs) play a significant role in simplifying the process of learning to program and reducing development time. Most VPLs are developed for use in education or specific domains. Recently, some projects have aimed to provide general-purpose VPLs. Among these projects is the Programming Without Coding Technology (PWCT) project, which has been used for several years to develop and maintain the compiler and virtual machine for the Ring programming language. However, PWCT faces several issues related to code generation performance and the operating systems it supports. Additionally, its visual editor lacks many features, such as rich comments, auto-run, and the ability to import textual code, which are highly important in the era of using large language models for generating textual code. In this research, we present the PWCT2 visual programming language, which is distributed on the Steam platform. On Steam, 1772 users have launched the software, and the total usage time recorded exceeds 17,000 h. This generation provides approximately 36 times faster code generation and 20 times lower storage requirements for visual source files. It also allows for the conversion of Ring code into visual code, enabling the creation of a self-hosting VPL. It consists of approximately 92,000 lines of Ring code and comes with 394 visual components. Moreover, using Ring in this project demonstrates the feasibility of utilizing the language for projects of this scale. Ring compiles PWCT2 in less than one second, and the generated bytecode consists of approximately 724,000 instructions.
Source: crossref · Quality: baseline
Research context
OpenAlex topics: Teaching and Learning Programming · Software Engineering Research · Logic, programming, and type systems
SciVX discovery tags are terminology-based. OpenAlex topics are source-provided classifications.
Affiliations
Computer Science Department, College of Computer and Information Sciences, King Saud University, Riyadh 11451, Saudi Arabia
References (85)
Show source-provided references
1. Visual and textual programming languages: A systematic review of the literature10.1007/s40692-018-0101-5 ↗
2. Mitchell, J.C. (2003). Concepts in Programming Languages, Cambridge University Press.10.1017/CBO9780511804175 ↗
3. Penev, A., and Vassilev, M. (2020, January 1–3). Visual differential debugging in the domain-specific visual programming languages. Proceedings of the 2020 International Conference Automatics and Informatics (ICAI), Varna, Bulgaria.10.1109/ICAI50593.2020.9311308 ↗
4. Visual programming10.1109/2.366157 ↗
5. Sutherland, W.R. (1966). The On-Line Graphical Specification of Computer Procedures. [Ph.D. Thesis, Massachusetts Institute of Technology].
6. Smith, D.C. (1975). Pygmalion: A Creative Programming Environment, Stanford University.10.21236/ADA016811 ↗
7. Cox, P.T., Giles, F.R., and Pietrzykowski, T. (1989, January 4–6). Prograph: A step towards liberating programming from textual conditioning. Proceedings of the 1989 IEEE Workshop on Visual Languages, Rome, Italy.
8. Singh, D., Singh, M., Hakimjon, Z., Singh, D., Singh, M., and Hakimjon, Z. (2019). Requirements of MATLAB/Simulink for signals. Signal Processing Applications Using Multidimensional Polynomial Splines, Springer.10.1007/978-981-13-2239-6 ↗
9. LabVIEW10.1145/3386328 ↗
10. Kalemkuş, J., and Kalemkuş, F. (2024). The Effects of Designing Scientific Experiments with Visual Programming Language on Learning Outcomes. Sci. Educ., 1–22.10.1007/s11191-024-00546-8 ↗
11. Asenov, D., and Muller, P. (August, January 28). Envision: A fast and flexible visual code editor with fluid interactions (overview). Proceedings of the 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), Melbourne, Australia.10.1109/VLHCC.2014.6883014 ↗
12. Hagino, T. (2021). Practical Node-RED Programming: Learn Powerful Visual Programming Techniques and Best Practices for the Web and IoT, Packt Publishing Ltd.
13. Torres, D., Dias, J.P., Restivo, A., and Ferreira, H.S. (2020, January 14–16). Real-time feedback in node-red for iot development: An empirical study. Proceedings of the 2020 IEEE/ACM 24th International Symposium on Distributed Simulation and Real Time Applications (DS-RT), Prague, Czech Republic.10.1109/DS-RT50469.2020.9213544 ↗
14. Exploring alternatives with unreal engine’s blueprints visual scripting system10.1016/j.entcom.2020.100388 ↗
15. Turchi, T. (2024, January 2–6). FlowPilot: A Generative AI-Driven Visual Language for Computational Thinking Education. Proceedings of the 2024 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), Liverpool, UK.10.1109/VL/HCC60511.2024.00046 ↗
16. Fayed, M.S., Al-Qurishi, M., Alamri, A., and Al-Daraiseh, A.A. (2023, January 22–24). PWCT: Visual language for IoT and cloud computing applications and systems. Proceedings of the Second International Conference on Internet of things, Data and Cloud Computing, Xuzhou, China.
17. PWCT: A novel general-purpose visual programming language in support of pervasive application development10.1007/s42486-020-00038-y ↗
18. Usability analysis of visual programming environments: A ‘cognitive dimensions’ framework10.1006/jvlc.1996.0009 ↗
19. Cognitive dimensions of information artefacts: A tutorial
20. Cognitive dimensions: Achievements, new directions, and open questions10.1016/j.jvlc.2006.04.004 ↗
21. Fayed, M.S. (2017). General-purpose visual language and information system with case-studies in developing business applications. arXiv.
22. Granor, T.E., Hennig, D., Roche, T., and Martin, D. (2002). Hacker’s Guide to Visual FoxPro 7.0, Hentzenwerke.
23. Fayed, M.S., and Alohali, Y.A. (2024). Ring: A Lightweight and Versatile Cross-Platform Dynamic Programming Language Developed Using Visual Programming. Electronics, 13.10.3390/electronics13234627 ↗
24. Żyła, K., Chwaleba, K., and Choma, D. (2024). Evaluating Usability and Accessibility of Visual Programming Tools for Novice Programmers—The Case of App Inventor, Scratch, and StarLogo. Appl. Sci., 14.10.3390/app14219887 ↗
25. Marji, M. (2014). Learn to Program with Scratch: A Visual Introduction to Programming with Games, Art, Science, and Math, No Starch Press.
26. The scratch programming language and environment10.1145/1868358.1868363 ↗
27. Asenov, D. (2017). Envision: Reinventing the Integrated Development Environment. [Ph.D. Thesis, ETH Zurich].
28. Lüthi, P. (2015). Self-Hosting the Envision Visual Programming Environment. [Ph.D. Thesis, ETH Zurich].
29. McNeish, K. (2002). NET for Visual FoxPro Developers, Hentzenwerke.
30. Ayouni, M. (2020). Beginning Ring Programming, Apress. No. 1.10.1007/978-1-4842-5833-0_1 ↗
31. Green, T.R.G. (1995). Noddy’s Guide to… Visual Programming. Interfaces, The British Computer Society, Human-Computer Interaction Group.
32. A classification system for visual programming languages10.1006/jvlc.1994.1015 ↗
33. Characterizing visual programming approaches for end-user developers: A systematic review10.1109/ACCESS.2021.3051043 ↗
34. Meerbaum-Salant, O., Armoni, M., and Ben-Ari, M. (2011, January 27–29). Habits of programming in scratch. Proceedings of the 16th Annual Joint Conference on Innovation and Technology in Computer Science Education, New York, NY, USA.10.1145/1999747.1999796 ↗
35. Parallel programming with pictures is a Snap!10.1016/j.jpdc.2017.01.018 ↗
36. Kahn, K., Megasari, R., Piantari, E., and Junaeti, E. (2018). AI programming by children using snap! Block programming in a developing country. Thirteenth European Conference on Technology Enhanced Learning, Springe.
37. Brandes, O. (2011, January 18–22). Tersus visual programming platform. Proceedings of the 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), Pittsburgh, PA, USA.10.1109/VLHCC.2011.6070414 ↗
38. Dieng, N. (2010). A Proposed Unified Visual Programming Language, Oklahoma State University.
39. RAPTOR: A visual programming environment for teaching algorithmic problem solving10.1145/1047124.1047411 ↗
40. Raptor: A visual programming environment for teaching object-oriented programming
41. An iconic programming system, HI-VISUAL10.1109/32.60297 ↗
42. McIntyre, D.W., and Glinert, E.P. (1992, January 15–18). Visual tools for generating iconic programming environments. Proceedings of the IEEE Workshop on Visual Languages, Seattle, DC, USA.
43. MacLaurin, M.B. (2011, January 26–28). The design of Kodu: A tiny visual programming language for children on the Xbox 360. Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Austin, TX, USA.10.1145/1926385.1926413 ↗
44. MacLaurin, M. (2009, January 26–30). Kodu: End-user programming and design for games. Proceedings of the 4th International Conference on Foundations of Digital Games, Orlando, FL, USA.10.1145/1536513.1536516 ↗
45. Forms/3: A first-order visual language to explore the boundaries of the spreadsheet paradigm10.1017/S0956796800003828 ↗
46. van Zee, P.J. (1995). Exception Handling in the Visual Programming Language Forms/3. [Master’s Thesis]. Available online: https://ir.library.oregonstate.edu/concern/graduate_projects/mw22vd90v.
47. Burnett, M., Chekka, S.K., and Pandey, R. (2001, January 28–31). FAR: An end-user language to support cottage e-services. Proceedings of the IEEE Symposia on Human-Centric Computing Languages and Environments (Cat. No. 01TH8587), Auckland, New Zealand.
48. Romero, M., and Sewell, B. (2022). Blueprints Visual Scripting for Unreal Engine 5: Unleash the True Power of Blueprints to Create Impressive Games and Applications in UE5, Packt Publishing Ltd.
49. Islam, A., Eng, K., and Hindle, A. (2024, January 15–16). Opening the Valve on Pure-Data: Usage Patterns and Programming Practices of a Data-Flow Based Visual Programming Language. Proceedings of the 2024 IEEE/ACM 21st International Conference on Mining Software Repositories (MSR), Lisbon, Portugal.10.1145/3643991.3644865 ↗
50. PWCT Team (2024, December 24). PWCT Software. Available online: https://doublesvsoop.sourceforge.net.
51. Asenov, D., and Müller, P. (2013, January 15–19). Customizing the visualization and interaction for embedded domain-specific languages in a structured editor. Proceedings of the 2013 IEEE Symposium on Visual Languages and Human Centric Computing, San Jose, CA, USA.10.1109/VLHCC.2013.6645255 ↗
52. Visual programming languages integrated across the curriculum in elementary school: A two year case study using “Scratch” in five schools10.1016/j.compedu.2016.03.003 ↗
53. End-user programming of time as an ‘ordinary’dimension in grid-oriented visual programming languages10.1006/jvlc.2002.0241 ↗
54. Asenov, D., Hilliges, O., and Müller, P. (2016, January 7–12). The effect of richer visualizations on code comprehension. Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems, San Jose, CA, USA.10.1145/2858036.2858372 ↗
55. Günther, K.D., and Günther, I. (2001). Lava–An Object-Oriented RAD Language Designed for Ease of Learning, Use, and Program Comprehension, Institut fur Informatik und Praktische Mathematik.
56. A String Search Marketing Application Using Visual Programming
57. Automatic generation of intelligent diagram editors10.1145/937549.937553 ↗
58. Building syntax-aware editors for visual languages10.1016/j.jvlc.2005.06.001 ↗
59. Pasternak, E., Fenichel, R., and Marshall, A.N. (2017, January 9–10). Tips for creating a block language with blockly. Proceedings of the 2017 IEEE Blocks and Beyond Workshop (B&B), Raleigh, NC, USA.10.1109/BLOCKS.2017.8120404 ↗
60. Trower, J., and Gray, J. (2015, January 4–7). Blockly language creation and applications: Visual programming for media computation and bluetooth robotics control. Proceedings of the 46th ACM Technical Symposium on Computer Science Education, Kansas City, MO, USA.10.1145/2676723.2691871 ↗
61. Low-Code, No-Code, What’s Under the Hood?
62. Rokis, K., and Kirikova, M. (2022). Challenges of low-code/no-code software development: A literature review. International Conference on Business Informatics Research, Springer International Publishing.10.1007/978-3-031-16947-2_1 ↗
63. Rabuske, T. (2020, January 10–21). Polymath: A platform for rapid application development of modular EDA tools. Proceedings of the 2020 IEEE International Symposium on Circuits and Systems (ISCAS), Virtual.10.1109/ISCAS45731.2020.9180601 ↗
64. Heisen, B., Boukhelef, D., Esenov, S., Hauf, S., Kozlova, I., Maia, L., Parenti, A., Weger, K., Wrona, K., and Youngman, C. (2013, January 6–11). Karabo: An integrated software framework combining control, data management, and scientific computing tasks. Proceedings of the 14th International Conference on Accelerator & Large Experimental Physics Control Systems, ICALEPCS2013, San Francisco, CA, USA.
65. PWCT Team (2024, December 24). PWCT Features—Framework and Extension. Available online: https://doublesvsoop.sourceforge.net/pwcthelp/features/frameworkandextension.htm.
66. Scratch: Multimedia programming environment for young gifted learners10.1177/107621751103400208 ↗
67. Ritchie, P. (2016). Practical Microsoft Visual Studio 2015, Apress.10.1007/978-1-4842-2313-0 ↗
68. Boudreau, T., Glick, J., Greene, S., Spurlin, V., and Woehr, J.J. (2002). NetBeans: The Definitive Guide: Developing, Debugging, and Deploying Java Code, O’Reilly Media, Inc.
69. Steamplatform (2024, December 24). GoldMagic800 Game. Available online: https://store.steampowered.com/app/939200/Gold_Magic_800/.
70. Smith, S., and Smith, S. (2022). How to Connect Pico to IoT. RP2040 Assembly Language Programming: ARM Cortex-M0+ on the Raspberry PiPico, Apress.10.1007/978-1-4842-7753-9 ↗
71. PWCT Team (2024, December 24). PWCT Features—Visual Programming. Available online: https://doublesvsoop.sourceforge.net/pwcthelp/features/visualprogramming.htm.
72. Model-view-controller pattern10.1007/978-1-4302-2370-2_20 ↗
73. Leff, A., and Rayfield, J.T. (2001, January 4–7). Web-application development using the model/view/controller design pattern. Proceedings of the Fifth IEEE International Enterprise Distributed Object Computing Conference, Seattle, WA, USA.
74. Bragge, M. (2013). Model-View-Controller Architectural Pattern and Its Evolution in Graphical User Interface Frameworks. [Bachelor’s Thesis, Lappeenranta University of Technology].
75. Ahmed, Z., Kinjol, F.J., and Ananya, I.J. (2021, January 18–20). Comparative analysis of six programming languages based on readability, writability, and reliability. Proceedings of the 2021 24th International Conference on Computer and Information Technology (ICCIT), Dhaka, Bangladesh.10.1109/ICCIT54785.2021.9689813 ↗
76. Readability and writability in Euclid10.1145/954373.954378 ↗
77. Vaithilingam, P., Zhang, T., and Glassman, E.L. (May, January 29). Expectation vs. experience: Evaluating the usability of code generation tools powered by large language models. Proceedings of the Chi Conference on Human Factors in Computing Systems Extended Abstracts, New Orleans, LA, USA.
78. Nystrom, R. (2021). Crafting Interpreters, Genever Benning.
79. Wilhelm, R., and Seidl, H. (2010). Compiler Design: Virtual Machines, Springer.10.1007/978-3-642-14909-2 ↗
80. Source-to-source translation and software engineering10.4236/jsea.2013.64A005 ↗
81. Lazar, G., and Penea, R. (2018). Mastering Qt 5: Create Stunning Cross-Platform Applications Using C++ with Qt Widgets and QML with Qt Quick, Packt Publishing, Ltd.
82. leClercq, A., and Almroth, K. (2019). Comparison of Rendering Performance Between Multimedia Libraries Allegro, SDL and SFML, KTH Royal Institute of Technology, School of Electrical Engineering and Computer Science.
83. Steamplatform (2024, December 24). PWCT2 Software. Available online: https://store.steampowered.com/app/1953110/Programming_Without_Coding_Technology_20/.
84. Alohali, Y.A., Fayed, M.S., Mesallam, T., Abdelsamad, Y., Almuhawas, F., and Hagr, A. (2022). A Machine Learning Model to Predict Citation Counts of Scientific Papers in Otology Field. BioMed Res. Int., 2022.10.1155/2022/2239152 ↗
85. Fayed, M. (2024, December 24). Over 30 Videos to Learn PWCT. Available online: https://www.youtube.com/watch?v=zd2jUEIlr8Y&list=PLpQiqjcu7CuFFulJW0IdG8xmAXaDC2oC7.