Patrick Dubroy
@dubroy
Most visual programming languages make limited use of the visual channel — the program structure is represented visually, but not much else. Usually the shapes and colors they use have an abstract (symbolic) meaning, not a concrete one.

What are some different approaches?
Feb 21, 2022 · 115 · 18

One approach is graphical rewrite rules, or "visual before-after rules". It's a more concrete notion of visual programming: the program actually looks like the output.

Examples —

👉 AgentSheets: researchgate.net/profile/Alexan…
👉 KidSim / Stagecast Creator: acypher.com/Publications/C…
Tweet image Tweet image
Feb 21, 2022 · 16 · 1

Mikael Kindborg's work on "comic strip programs" addresses some of the limitations of graphical rewrite rules.

This uses more symbolic representation, based on the visual language of comics.

📄 Comic Strip Programs: Beyond Graphical Rewrite Rules citeseerx.ist.psu.edu/viewdoc/downlo…

Squeak eToys has primitives for acting on visual conditions, e.g., "square overlaps line" or "car's 🟦 sees ⬜️".

This gives directness: the group of shapes isn't just a representation of the object, it *is* the object.

🎥 Squeak racetrack tutorial: youtube.com/watch?v=34cWCn…
Tweet image Tweet image

There are also some visually-oriented esolangs.

Piet is probably the most well-known: dangermouse.net/esoteric/piet/…

Orca by @hundredrabbits is a 2D language where spatial relationships are semantically meaningful: metasyn.github.io/learn-orca/
Tweet image Tweet image
Feb 21, 2022 · 12

What are some other approaches to visual programming? I'd love to see more examples of using visual channel in interesting ways…beyond what you usually see in blocks-based languages (e.g. Scratch) or flowcharts / nodes-and-wires (e.g. Quartz Composer).

I should also mention @mandy3284's work!

Recursive drawing: recursivedrawing.com
Shadershop: tobyschachman.com/Shadershop/
Apparatus: aprt.us

All domain-specific tools that are excellent examples of truly leveraging the visual aspects in a fundamental way.

Can't believe I forgot to mention ToonTalk! (thx @abecedarius)

• Drag numbers on top of each other to add them (and a mouse comes to smash them together!)
• Use a (literal) scale to compare numbers
• Store values in nests
etc.

toontalk.github.io/ToonTalk/
Feb 22, 2022 · 8 · 1

Spreadsheets for Images directly addresses the limitations of node-based VPLs:

"Flow charts spend their screen real estate on operators and their interconnections, which becomes uninteresting once the flow chart has been specified"

twitter.com/disconcision/s…
Mar 8, 2022 · 6 · 2

https://twitter.com/dubroy/status/1495766614377058305 ∙ Archived on 2025-03-28.

← Twitter Archive: 2022