Design of a visual environment for programming by direct data manipulation
Michel Adam, Patrice Frison, Moncef Daoud, Sabine Letellier Zarshenas
TL;DR
The paper addresses making programming more accessible by enabling Turing-complete code to be built entirely through direct manipulation of data in a visual environment. It presents AlgoTouch, a Von Neumann-inspired notional machine and AGT-based language, where users manipulate variables, arrays, and indices to generate code across AGT, Python, C, C++, and Java, including loops and conditionals via a non-linear macro framework. Key contributions include a detailed memory-model, a comprehensive visual interface, data-aware construction of Loop Macros, and a bimodal workflow that balances direct data manipulation with textual editing, plus extensive educational evaluation. The approach aims to improve learnability, offer immediate feedback, and support flexible, modular program development with broad pedagogical implications for introductory programming education.
Abstract
The use of applications on computers, smartphones, and tablets has been considerably simplied thanks to interactive and dynamic graphical interfaces coupled with the mouse and touch screens. It is no longer necessary to be a computer specialist to use them. Paradoxically, the development of computer programs generally requires writing lines of code in a programming language whose syntax is particularly strict. This process poses many diculties for programmers. We propose an original tool in which arbitrary programs (Turing-complete) can be developed in a completely visual manner by direct manipulation of the data, without writing a line of code. The user can thus develop an algorithm by directly visualizing the result of actions taken on the data. A method for constructing iterations is associated with the tool. It proposes to create each part, including the loop body, in a non-linear manner under visual control of the state of the data. In addition, the tool supports the production of code that corresponds to the actions performed, where the language can be Python, C, or Java. In this article, we present the tool, the design choices, the problems solved, and the limits and contributions of the direct-data-manipulation approach.
