So, you are right that visual programming doesn't represent how a computer software works.. But it's exactly how computer hardware works.
There are physical and spatial constraints in efficient implementation on FPGA's. Although I don't use them, I saw plenty of examples in my research of people looking at them visually and changing representations to make them more compact or something. Modifying the physical layout outperformed whatever the initial synthesis was.
Yes, visual tools for manipulating physical aspects of the design are used, but there is little to no abstraction there like a language provides.
In fact, my sentiment extends to hardware design, which is why I've been toying (and building real stuff for work) with SKiDL lately, a Python extension that allows for text based schematic capture for printed circuit board design.
Of course, the actual routing of the traces still must be done by hand. However, during schematic capture, instead of drawing the same Zener diode input protection 100 times with a mouse, I just call the code that builds it in a loop.
But that's exactly the problem. Handling that complexity is the reason we invented textual programming languages.
The typical strongest point of visual languages is that you can represent relations by proximity. This way, you can directly indicate the connection between a caller and its calles with an anonymous connector line, whereas in text you would need to declare a variable name, pass it as a parameter and assign it to a local variable. This makes moving data between components much more verbose in text than in graphs.
Textual programs try to approximate this relations-by-proximity with indentation levels, but the expressive possibilities in a visual language are stronger. This makes them also more difficult to lay out and organize, though. But I foresee than in the future, better support in IDEs will make it easier to mix visual and textual languages.
Visual has some large advantages as well as drawbacks. It uses a different part of the brain for reading that works more in parallel, and can actually augment your short term memory. However, making visual work requires taking advantage of its concreteness, which textual language styles can't do very well.
Or the other way around: When you write a tangled mess of code you can still navigate it with /bin/grep, this gets much harder when your code is a picture (though, when stored in SVG, it should be trivial to write a /bin/svg-code-grep). BUT: If you follow pure functional design principles, you rarely have to keep more than one screenful of diagrams in your head.
I think we have to differentiate between "general purpose visual programming languages" and "visual programming languages actually used".
Drakon, respectively its visual aspect, for example was, afaik, developed initially to allow physicists and chemists to model their domain specific knowledge in a much more intuitive way and I think it overall succeeded there. The few snippets I saw were very convincing demos[1].
Of all the attempts at purely visual, general purpose programming languages I cannot remember one that did not fall into any of these 2 camps:
* academic exploration of visual programming languages - nobody expected tangible results but we got squeak, etoys and drakon
* attempts to make programming easier by people who know just enough of programming to understand it is hard[2] - they usually promise tangible results by yesterday but never deliver anything that could count as a practically usable language
[2] Excluding all environments created specifically to teach children to code - they might be turing complete but I'd not call them "general purpose".
I'd also add that line between a simple project which reasonable men might agree that was well suited for LabView and a large project which is destined to eventually become 'a complete and utter mess of tangled wires and hierarchical blocks' is not at all obvious or delineated... and that's when the suffering really begins.
What I mean is, if the devs had to dogfood their own product, if labview was self hosting, it could become a lot better. But in the background it's all just lowered to an intermediate programming language, the front-end is just grafted on.
It's a marketing tool, just look at the camel case name. I hate it with a passion every time it comes up.
Edit: I said "just" a lot, although, apparently it's quite good for it's intended purposes so take that with a spoon of salt.
Edit: This thread repeatedly features screenshots of visual demo tools, for scenegraph and asset creation, e.g. werkkzeug 3: http://www.pouet.net/topic.php?which=8787&page=127
I missed the point about the camel case name. In any case, it's marketed as LabVIEW (VIEW standing for Virtual Instrument Engineering Workbench), not LabView.
The name just strikes me as unprofessional, or at least not very serious, just like the programming environment that it is, and I guess that's not even a bad thing if that's intended, considering the target group (of technically inclined but uninitiated or at least slow with a key board kind of lab rats).
for labview, i feel large programs benefit tremendously from its dataflow nature. every labview project i have worked on has exceeded 1,000 VIs, and it's often very easy to componentize things such that local changes stay local.
labview works fine with source-code control. the diff and merge story could definitely be better, but they are at least usable, particularly the diff.
Anyhow agree. Large LabView constructions are extremely difficult to grasp, modify, and test.
Citation needed. A graphical language can "obviously" represent anything a text-based language can.
Text has been part of graphical representations for milennia.
The cool part is that you get to decide WHAT text you get to see -- you're not just left with seeing the lower level code.
It could be that, but it can also be boxes representing objects or functions, program modules, interacting programs, at any level of abstraction one likes.
By allowing arbitrary text in so-called graphical languages, you have turned your original statement into a vacuous truth - an empty tautology - as all text can be diagrammed.
They are not about that.
Movies are fundamentally photography too.
You can compile any lambda calculus expression down to S and K and "run" them as a graph.
Doing this on real calculation probably wins a prize for non clarity though...
The deal breaker for me (having worked on a large LabView program that controls machinery for a wind energy system) is the lack of reasonable source control systems and the fact that it is very hard to structure a large program in a comprehensive manner.