<@UCGAK10LS> Looking forward to it. I had no idea ...
# thinking-together
k
@Nick Smith Looking forward to it. I had no idea you were one of us with experience teaching kids. Here’s what I did for two years, and it worked great in a 1-on-1 setting: http://akkartik.name/post/mu (Spoiler: it’s absolutely text-based). I saw no problems with (a small number of) keywords. I did see value in minimizing punctuation. One implication: don’t start kids on one of the Lisps. (Even though I love Lisp in general.) I don’t understand your “It’s 90% boxes-and-arrows, 8% Scratch clones, and 2% of unique stuff” comment. Why chase novelty for its own sake? Similarly, I don’t think boxes and arrows or blocks have been given nearly enough rope in the last 5 decades. You’ll need to elaborate on why you think they’re “objectively bad”. It’s not at all obvious that we need to try something different. One could equally make the case that we need to persist with and incrementally improve already-attempted ideas. (I say this as someone pro-text for the most part.)
👍 1
n
Nobody here ever said novelty was worth chasing for its own sake. However, I disagree that boxes and arrows haven't been given enough rope. They've been given an excessive amount of rope: there are hundreds of boxes-and-arrows editors out there. They seem to have proven useful in niche scenarios, typically where only small structures are required. As discussed though, when using arrows for dataflow you inevitably end up with an arrow soup as you get larger; the visualisation just doesn't scale. I worked briefly with the world leaders in graph layout research and even they are still struggling with ways to make large graphs readable. But either way, it's not up to a disbeliever to prove the absence of something; it's up to a believer to prove its existence. If you'd like to argue for the merits of boxes-and-arrows, I'm open to discussing them with you.
👍 2
Scratch blocks have merit in that they can be used to present a limited, browsable palette of building blocks with which programs can be constructed. But this is no different from having an ordinary list of options in a sidebar or tooltip. They also prevent syntax errors, but so do structure editors, so this is not a merit of the block representation itself. The only other merit they have is their ability to visually represent basic program structures such as loops. But they do so haphazardly: look at an "if" block in Scratch and you'll see that it's pretty much a Python if-statement in a gaudy yellow box. The structure it communicates is minimal.
(Also for the record, I don't teach children, I teach undergrads)
o
I agree: block programming à la Scratch, show the same program structure as text. Take a Scratch script, erase all colors to keep only text, you end in something very close to an imperative language. In fact there is one tool that is showing that. I thought it was GP (https://gpblocks.org/) but I can't find pointer ti this feature. Anyway, this (unknown) tool has a slider that progressivly erases blocks to keep only text. Then one can edit text as usual text language.
👍 1
But in my opinion, the big plus of block programming à la Scratch, is that it is pleasant to read (but maybe it depends on people) and you have to manage far less syntax errors. Two advantages that are good for non specialist coders in particular. Another advantage is the drag and drop of blocks from a library that show all blocks, which make less intimidate to begin a program I guess. Of course, as you said, most of these advantages can also nearly be implemented in a structure editor.
w
I agree that Scratch is great for good old fashioned structured imperative programming – with most of of the disadvantages though its broadcasting coroutine/concurrency bits are pretty inspired.
n
What is abstraction story of box & arrow world? It comes to my mind that you will get huge graph it's equal to huge function.
i
@Niko Autio Many node-based (aka box-and-arrow) VPLs use some sort of grouping / nesting feature to turn chunks of an existing graph into a new kind of node. Some of them only let you collapse things in place, but the nicer ones let you create a reusable node that you can treat like a function.
Some of these systems let you use these user-defined "function" nodes recursively, some don't. It depends on the execution model.
Most of the VPLs that have limitations like "must collapse in place" or "can't do recursion" were either made to have those limits intentionally to avoid (presumed) novice users shooting themselves in the foot, or they were done to better guarantee rapid and consistent execution performance, back in the era when computing power wasn't quite as awesome as it is today.
k
Hmm, not sure why I got no notifications about this thread.. @Nick Smith you’re right that there’s a scaling problem with graph visualization. Traditional approaches like Labview certainly feel like a dead end. But there’s newer ideas that are worth exploring, like Pane by @Joshua Horowitz, which has been discussed here before: http://joshuahhh.com/projects/pane. I also brought up Boxer.