http://www.ee.buffalo.edu/faculty/paololiu/edtech/roaldi/tut...
"Wires" that carry values are color-coded according to their contents (integers are blue, floating point values are orange, booleans are green, etc.). Loops like FOR and WHILE are actual "loops" that encircle the repeated code. The flow of information along the wires determines the order of execution for the code, and you can debug your code by turning on a special mode that actually shows the information moving down the wires.
(Caveat, EE turned software engineer ranting)
Your "rabbit hole" analogy is spot-on and I'm not sure how NI can address some of those problems. Some things like Ctags that are so valuable in text-based languages just seem to have no obvious analogy in a graphical programming language... it's fun to imagine though.
(Caveat, chemist talking about programming)
I'm using LV 2009, I'm not sure what version this was added.
I guess this is analogous to algorithmically reformatting code in a normal text-based programming language...
-National Instruments employee
Looking at a program from the scope of functions, it looks pretty unremarkable, but when you scope out to view the scale of functions you can start to make out the flow of control, etc. Even farther out, you can visually see separations of concerns that the student has implicitly created by the arrangement of the code. It was really remarkable viewing the architecture from 10,000 feet like that.
It redefined how I viewed liberal arts students.
vvvv does it for video (similar to Max's Jitter, or pd's GEM, except better), for windows, for kinda free! http://vvvv.org
a) comments. What is never run?
b) literals. What is just plain data?
c) punctuation -- mostly so it can be deemphasized.
Sample of my minimalist 'scheme': http://imgur.com/NrrS9.png
Coincidentally, native speakers of tonal languages (Chinese being one of them) also seem to have a higher chance of being pitch-perfect [2].
[1] Man-Ying Wang, Bo-Cheng Kuo, Shih-Kuen Cheng (2011). "Chinese characters elicit face-like N170 inversion effects". Brain and Cognition 77 (2011) 419–431.
[2] Deutsch, D., Henthorn, T., Marvin, E., & Xu H-S (2006). "Absolute pitch among American and Chinese conservatory students: Prevalence differences, and evidence for a speech-related critical period". Journal of the Acoustical Society of America 119 (2): 719–722.
Video gamers can supposedly differentiate between tones more similar to one another than non-gamers. Perhaps, if you made a theme of very similar colors, you could achieve the same benefit from programming. Although I suspect it might not work because the difference in the colors has to have significance for your brain to really start paying attention to it. So you could have a color-sensitive language. Or maybe color could be the only significant thing, then you could just bind each character to a color in your text editor and use a normal language.
While walking in the wood today and looking at the detail on the ground and searching for ripe fruit in the trees I was thinking about how our brains are really good at picking out specific visual things from noise and how more complex visual things are sometimes easier to recognize than simpler things. Also its possible to get really good at picking out subtle clues from very complex input: think about a native American Indian’s ability to track moving animals over long distances.
So I think what would be really cool is to have a way of representing each function of a program as a visual form, ideally a 3-dimensional one. You could then look at these form and over time you would start to be able to see certain things about the function just by looking at the forms. I wonder if that might be a much faster way of searching for specific things within a large body of code such as you might do in a security audit than actually reading through all the code because it taps into the innate concurrency of the right-hemisphere.
There would be some difficulty would be in generating appropriate visual forms. The form has to be meaningful. The ideal would be if it were meaningful to the point where somebody well used to them could write the code a form represented just by looking at the form or, at least, infer the gist of it. Of course you don’t have to limit yourself to one form per function, you could have 10 different forms per function, each representing different properties, or forms generated from by dividing the code in lots of different ways (not just functions). Or maybe you could simplify everything I’m saying here and just have a lot more statistical static analysis of code then displayed with charts and infographics.