one thing i’d like to see in visual programming pa...
# thinking-together
g
one thing i’d like to see in visual programming paradigms is using an object-oriented heuristic: if you have a bunch of identifiers that start or end with the same word (eg xReducer, yReducer or ICommand, IUser), in OOP it should probably be a type. in visual programming it should probably be an affordance, like a color, shape, symbol, or some combination
r
Reminds me of zachtronics games http://www.zachtronics.com/opus-magnum/ There's also something interesting about being able to see your code move and execute. It makes it really easy to spot failures in logic.
💖 1
o
Hm I think this is a good idea but I worry it would get out of hand quickly. Another example of an affordance would be that if it’s a commutative operation the symbol has to be symmetric etc. There are probably more rules like this - also similar to linting rules where class names are capitalised. Functions are lowercase etc
👍 2
s
I really like that @Ryan King. being able to see the code move and execute is also the core idea behind Philip Guo's Python Tutor (link for those who are unfamiliar with it)
🍰 3
💯 1
g
@opeispo i think you’re right about it getting out of hand if the system isn’t carefully designed. there are a few ways to combine things that might make such a system more robust to change. For example, in the case of a data structure, if you have visual primitives that match your data primitives, you could potentially combine those visual primitives in the same way you combine the semantic primitives. i think it’d also be important to start with something smaller than, say, java. At a minimum, we’re doing our best to keep all this complexity in our heads using naming things for our existing systems, which work ok (for a sufficiently cynical definition of “ok”) On the other hand, we track a lot of visual primitives in everyday life. In the common case with languages like english that are made up of letters, cognitive studies show that we tend to read words sort of like individual gylphs (wihch is why you can raed wrods werhe the ltetrs are jmuebld according to Many Memes). and with experts using systems, like airline pilots, mathematicians, and carpenters, people seem to have a facility for remembering thousands of things provided that they have a context where theyre using them often. Or even in games—for example, most hearthstone players have all of the cards and their effects memorized by picture just as a side effect of playing the game. more so for magic the gathering, where the smallest set of allowed cards for tournament play is usually around 2,700
💯 1
o
@Garth Goldwater Yup, totally. I think that’s why text is so powerful. Each word becomes a unit - has an associated sound, conceptually a thing. Like the example you just so elegantly described - it means there is redundancy and we can error correct to get the information back out even when it has been distorted.
And about visual primitives it’s interesting that memory systems use things like a memory palace. I think the key trick is making information more interesting and redundant - can’t just be a bunch of unrelated symbols on a screen. So maybe text isn’t that powerful 😄
g
now im thinking that… if data has a “default” visual display, and you start with example data, and things like “user profile” are displayed visually somewhere… you may just be able to get away with reusing the visual design from the interface you want to display as the default symbol for that data structure…? and the buttons or dials or whatever for the actions
seems like a big stretch, but the type you could train your system to make
o
Not sure I understand you but there are things that are better edited visually and others that text is more suited for. Data structures are static and can easily be visualised, actions less so. I suspect that’s a key part of the problem
g
hm. but most actions can be visualized as a transformation from one piece of data to another is what im saying (i think)
👍 1
k
Throwing in a weird idea: has anyone looked at the coding equivalent of different types of writing systems? For example, is there a useful analog of Chinese writing, i.e. a mixture of visual and symbolic clues for expressing computations?
g
sparklines, explorable explanations/nicky case’s work immediately occur to me. also calca.io
k
Sparklines are a great example! Explorable explanations are more in the realm of visualization for me: all visual, very little symbolic. As for calca... never seen this before, looks like a pragmatic adaptation of the idea of LightTable. Makes me consider much of mathematics notation as a visual/symbolic hybrid.
g
you might also be pleased to see (if you haven’t) the inspiration for sparklines: https://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=00004p
roughly “if you look at saturn with a really great lens on your telescope, it looks like <this>. if you look at it with a really crappy lens, it looks like <this>—galileo
❤️ 1