5 ms·
In what circumstances, generally speaking, do you think visual programming is more desirable than textual programming? Amateur programmers? Media production?
by mgummelt 6y ago
In what circumstances, generally speaking, do you think visual programming is more desirable than textual programming? Amateur programmers? Media production? Something else?
- brandonmenc 6y agoWhen you're building a data or signal flow. It's easier to reason about when you can see the branching, merging, and direction of flow.
- zozbot234 6y agoPart of the problem with visual programming in the "flow" style is the very fact that "branching" and "merging" has two internally-consistent, equally worthwhile but totally incompatible interpretations. Namely, parallel flow of data (known from "dataflow" diagrams; with parallel juxtaposition representing a product, the empty product standing for a unit flow, and a natural branching operation standing for "copy" or "clone") vs. divergent choice (known from "flowchart" diagrams; with parallel juxtaposition representing an alternative, the empty case standing for a zero flow, and a natural merging operation standing for a processing step that can be reached in multiple ways). This ambiguity clearly does not exist with a pipeline-like, single-source/single-sink "flow", but it does arise as soon as one has multiple juxtaposed 'flows' in a single diagram or section of a diagram. I'm not aware of visual programming methodologies that try to handle both semantics with equal clarity, and without introducing significant confusion between them.
- dkersten 6y agoPerhaps a step in the right direction would be to use different shapes of components for flowchart-like flows (like how in flowcharts diamonds are used for conditionals) and for parallel dataflow (rectangles in flowcharts). Perhaps not perfect, but at least you can visually see “this is a branch” vs “this is a parallel split”.
- mgummelt 6y agoThey aren't incompatible. Conditionals can be modeled as data flows. See circuit design.
- mgummelt 6y ago> When you're building a data or signal flow. All code, or at the very least functional code, can be directly mapped to a DFG. Should all functional programming be done visually?
- brandonmenc 6y agoIf a visual interface makes it easier, yes. If it makes it more difficult, no. That depends on what is being built, and who is building it. Like most things, it isn't one size fits all. And you're going to have to actually try it out to discover what works best.
- mgummelt 6y agoWell, of course. That's a tautology.
- jcelerier 6y agoOf course not, because if you write say a sorting algorithm the standard tool for that is structured programming primitives. It would be explained as text in a textbook, with ifs, whiles and variables assignations, not CFG / DFG prilitives. In contrast for instance in music, patchs were already the main interaction and creation mean even before computers existed - see e.g. music studio patchbays, modular synths or even guitarist pedalboards. So people in that field already have the mental model of a signal flow and bricks connected together. Both models can mix - a lot of people use small snippets of code in Max/MSP for instance. In the software I develop, https://ossia.io https://ossia.io it's super common that people will rely on a JS script embedded in a timeline for one small part of their score. Etc etc..
- Optimal_Persona 6y agoWow, Ossia looks very cool - I've wondered if there was something like a "visual OSC-aware API tool" and there definitely is. The linked article for this thread would be much more meaningful if it mentioned a) specific visual programming languages found to be lacking and b) domains where the visual models map directly to the underlying processes being modeled. As you note, electronic music processes/devices like modular synths, recording studios, and electric guitar rigs are ripe for modeling with boxes/wires in node-based systems.
- blihp 6y agoWhen you're working on a touch screen device without a keyboard.
- dkersten 6y agoVery true! I’ve often wished there was a good visual language I could use to program on my iPad.