<https://blog.metaobject.com/2020/04/maybe-visual-...
# thinking-together
i
We don’t want to program visually, we want to think visually, observe the state, and interact with large parts of the program. UI should give us clues and hints or help where it can, but not be the main interaction point as long as we operate it with a mouse.
🤔 2
m
s
HN discussion is pretty good
m
I think that visually programming can be a solution for programming on "application level". The deeper stuff can be coded inside plugins. The underlaying format can be a graph stored in json format which can be read and processed in a lot of languages. An advantage of a visual programming environment is also that it can serve as part of the documentation needed for a project
e
It doesn't really matter what grizzled veterans think about text vs. visual programming; the newbies have spoken, and for a generation brought up on video games, they insist that a more graphical way of programming be offered. So we gotta build it, because that is what the customers (i.e. new programmers) demand. There are about 100 million people learning to program now. Enormous competition going on to build the tools acceptable to this new generation.
🍰 4
k
I have always wondered if visual vs textual programming is a fashion, a matter of personal preference, or a domain-dependent result of satisficing. Did anyone explore this question? I see mainly people for who visual programming is evidently the way to go, and people who don't care much about it (myself included).
m
I don't see how visual studio code with all the popups, squiggly lines, annotations on the line number, code overview on the right and autocomplete is just "plain text" programming. there's a spectrum between 70's text and visual, and we haven't explored much of it.
💯 6
m
Visual studio code is offcourse a great tool for programming (I love it and use it daily) but not "visual programming" I think. Although it has lots of visual helpers. For me visually programming is visually connecting nodes that represent plugins/variables or can call a "sub-flow" (a function in normal programming), but you still need code to wire it up and provide additional functionality depending on the application (if you write a webapp server flow this could be the connection with the webserver to handle http endpoints in the visual environment for example)
k
c
Visual programming for visual components. Find appropriate metaphors for other types of components.
Observable’s visual dataflows is the best hint at the future of metaphors for non-visual logic https://twitter.com/observablehq/status/1250122115778519046
e
A great discussion on on visual programming is found on one of Harel's statecharts papers. He introduces the idea of topology being more fundamental than geometry
When it comes to visuality, encapsulation and sideby-side adjacency are topological notions, just like edge connectivity, and are therefore worthy companions to edges in hierarchical extensions of graphs. Indeed, I believe that topology should be used first when designing a graphical language and only then one should move on to geometry. Topological features are a lot more fundamental than geometric ones, in that topology is a more basic branch of mathematics than geometry in terms of symmetries and mappings. One thing being inside another is more basic than it being smaller or larger than the other, or than one being a rectangle and the other a circle. Being connected to something is more basic than being green or yellow or being drawn with a thick line or with a thin line. I think the brain understands topological features given visually much better than it grasps geometrical ones. The mind can see easily and immediately whether things are connected or not, whether one thing encompasses another, or intersects it, etc
e
I think it best to avoid using vague terms like topology and geometry. The nested expression f(g(h(j(k)))) can be represented in some notations as a sequence of chained operations like j(k) | h | g | f, so what was inside becomes a linear flow. Conceptually you are taking the output of a subprocedure and sending onwards to another subprocedure. Is this topology or geometry? in the classic sense of the words neither. And if some of these processes operate in parallel, then how do you notate that? Mathematics which is thousands of years old evolved from single values and calculations, and a notation that matched that, and there is very little in math history to help us when we encounter synchronized parallel processes. Really its a new offshoot of discrete math we are exploring here, and a new notation needs to be invented, because all the unicode symbols that we already have are fairly useless! I know i sifted through the 1000 of them, hoping to find some good stuff, but they mostly render poorly because typographically the graphic artists not knowing any math, designed them to be the same EM width as regular letters, making them mostly useless. Don't get me started on the problems with TeX. The inability of the regular structures of the past, most notably the n-tuple and the matrix, were insufficiently general for my needs, hence the graph database inside Beads language, which subsumes n-tuples, matrices, and also eliminates the relational database, which i loathe.
e
Topology and Geometry are pretty well defined terms... when talking about visual programming the questions on the geometry of the objects presented on screen are front and center, and I think the main objection of ppl is that the resulting programs are hard to follow and understand because they become a tangle of nodes and arcs between them
I refrain from trying to "defend" or elaborate on Harel quote since my topology knowledge is so weak at the moment... it just makes sense to me intuitively that visual representations are not always the best way to attack every problem. Math has many examples of things that are very treatable on textual form but almost impossible to represent visually
does not mean I'm not excited about visual programming advances, feels like there's a lot of room for exploration in the area and innovation to come. Also I feel like the answer will be a heavy mixture of textual representation sprinkled with a few diagrams here and there, much like when you open the Topology wikipedia page 🙂
👍 1
e
My point was that much of math, especially topology, is extremely abstract, and super high abstraction is actually the opposite of what visual programming is trying to do, which is make things easier to understand. State transition diagrams as shown in the Harel notes are actually much harder to understand than some purely textual finite state transition syntaxes. The more wires you have the worse the graphical form evolves into a hairball. That's why dependency charts of programs are often useless; above a certain crosslink percentage you get a hairball again, which provides near zero insights beyond the fact that you have made a mess of your program. I studied many abstract mathematics branches hoping to find some great unused branch, and unfortunately what i found is that Mathematicians in general are so unconcerned with practical things that they go off into outer space, and often spend their time proving that all X is Y, or that there are only 3 solutions to Z, or that if A is true then B cannot be true, or that there are an infinite number of solutions to things. Existence, counting, classifying are their main preoccupations, and in computer programming we know what we want to do exists, and the count is based on the user input data, and classifying things gets us not much, so the intersection with pure mathematics is surprisingly weak.