2022-08-16

On Visual Programming Languages

Logos of various visual programming languages

This post is intended as support material for another post of mine; see michael.gr - The Deployable Design Document.

The idea of creating software using visual tools has existed ever since the first aspiring programmer was bitterly disillusioned by discovering that programming almost exclusively entails writing lots of little text files containing nothing but boring and cryptic text.


Given the relative abundance of people who engage in programming, and the relative scarcity of people who engage in software design, it should come as no surprise that visual software development has largely been regarded as an issue of visual programming rather than an issue of visual software design. 

Thus, there has been a multitude of attempts to create so-called Visual Programming Languages (see Wikipedia) such as Snap!, Scratch, EduBlocks, Blockly, etc. where code is expressed not as boring text, but instead as colorful blocks on a canvas.

The following example is borrowed from Computer Science with Snap! by Eckart Modrow from University of Goettingen, 2018.

Unfortunately, the blocks used in these visual programming languages tend to faithfully mirror the structure and concepts of textual code, so even though at first glance the two might seem different, a closer examination reveals that they are actually equivalent: it is still all just variables, expressions, flow control statements, function invocations, and even word-wrapping when an expression is too long to fit in the page; there is no real paradigm shift.

The usefulness of these languages goes as far as teaching the basic principles of programming to kids, using elements that are colorful and can be manipulated with the mouse, but no further, because as it turns out, code expressed as text is far more expressive, terse, and malleable than blocks. 

(Not to mention, less distracting and less likely to cause epileptic seizures due to excessive application of color.)


No comments:

Post a Comment