44 ms·
These issues are old. - Large programs / graphs? I can browse maps and photos of the entire planet from my web browser. ZUIs are well understood now. Also,
by ken 6y ago
These issues are old.
- Large programs / graphs? I can browse maps and photos of the entire planet from my web browser. ZUIs are well understood now. Also, computers got really big and fast. My graphics card has 8 GB (!) of RAM. Find a VPL that was designed for the era where graphics are cheap.
- Automatic layout is hard? Yes, an optimal solution to graph layout is NP-complete, but so is register allocation, and my compiler still works (and that isn't even its bottleneck). There's plenty of cheap approximations that are 99% as good.
- No formal spec? They sound desperate to come up with excuses why something can't work. How many (textual) programming languages had a formal spec before they got popular? I tried to look up when Ruby got a formal BNF grammar, for comparison, and it seems the answer in 2020 is still "nope, whatever parse.y does (13,000+ lines of C), that's Ruby".
- Difficulty to create editors? This is a legitimate concern, as it's true "there are no general purpose Visual Language editors", but that's an economic issue, not a technical one. Plain text is one of the very few formats where we have general-purpose editors. In most areas of computing, profitability has taken over, and companies refuse to cooperate. There's no one word processing or spreadsheet or database format, either.
- Lack of evidence? Again, they're holding VPLs to a higher standard. When a language like Ruby appeared, nobody asked for proof. Simply creating something that some programmers liked was sufficient.
- Poor representation? That's an issue with all kinds of programs! If I had a nickel for every horribly written program I've had to deal with in my life...
- Lack of portability? This is another symptom of the editor problem, above. Make a standard file format, and actually figure out how to get people to use it, and there's no problem.
These issues are from an article written in the 1980's. The same day as its publication, Apple released the Macintosh IIci, with a 40 or 80 MB hard disk, 1 or 4 MB of RAM, and a 640x480 pixel display. (For all that computing power, the starting price was $6269 -- only slightly less than the $6615 starting price for a Honda Civic that year.) Clearly, visual programming was a non-starter in that day and age. So were 90% of the other things I do on my computer every day. That doesn't mean they're bad ideas.
If you'd have asked me to write down a list of issues with C++ in 1989, I'd have a list that was similarly useless in 2020.
- sleepygardener 6y agoOne more general-purpose thing I miss very much is filesystem. Really what is a good option for a usb disk filesystem which you would like to use on Mac, Win and Linux? Seems to me that without using Paragon/Tuxera/etc. you're screwed.
- ken 6y agoAgreed. For sharing a filesystem, I assume the best you can do today is probably FAT32 (or whatever the latest of that family is), which is not great. Why can't we get people from major tech companies together and have them develop a good on-disk format which supports the features we all need, and then everybody can go back and write their own implementations? Like we do with Unicode, or IP. And like we should do for many other features. For all the talk about the importance of separation of interface and implementation, operating system designers really suck at it.
- fragmede 6y agoThe modern answer is exFAT. August last year Microsoft opened up the specifications, and pledged that it won't be patent encumbered[]. How well an operating systems has a separation of concerns between interface and implementation really has very little (unfortunately) to do with business incentives. Even if the Linux kernel had perfect separation of concerns, there's no way to force Microsoft or Apple to support it in their products. Not to mention the problem with standards: https://xkcd.com/927/ https://xkcd.com/927/ [1] https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/ https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat...
- ken 6y agoAmazingly, the web folks seem to be doing OK on this front. They often manage to miss the xkcd#927 trap. What I see (admittedly the simplified public version) is more like: - Here's a standard that kind of works and everybody is using it. - Hey, we invented this cool new thing that isn't part of that standard but people seem to like it! (XHR, Canvas, ...) - OK everybody let's put that into the standard as well so we can all agree on how it works. Thanks! There was no way to "force Microsoft or Apple" to make a web browser, either, and yet they both did, and made it part of their operating systems.
- deleted 6y ago[deleted]
- scoopertrooper 6y agoVisual programming languages are commonly used for the creation of chatbots in frameworks such as IBM Watson Assistant. They end up being an absolute complete mess. The reliance on global variables and go-to statements for control flow makes them extremely bug prone and unintelligible.
- keymone 6y agoBut who’s using them? From the symptoms you describe I would guess it’s people very far removed from software development.
- DonHopkins 6y agoThe Sims uses a visual programming language called "SimAntics" for scripting behaviors and "AI" of people and objects. The Sims, Pie Menus, Edith Editing, and SimAntics Visual Programming Demo. This is a demonstration of the pie menus, architectural editing tools, and Edith visual programming tools that I developed for The Sims with Will Wright at Maxis and Electronic Arts. https://www.youtube.com/watch?v=-exdu4ETscs https://www.youtube.com/watch?v=-exdu4ETscs https://medium.com/@donhopkins/the-sims-pie-menus-49ca02a74da3 https://medium.com/@donhopkins/the-sims-pie-menus-49ca02a74d... The Sims Steering Committee - June 4 1998. A demo of an early pre-release version of The Sims for The Sims Steering Committee at EA, developed June 4 1998. https://www.youtube.com/watch?v=zC52jE60KjY https://www.youtube.com/watch?v=zC52jE60KjY https://medium.com/@donhopkins/the-sims-pie-menus-49ca02a74da3 https://medium.com/@donhopkins/the-sims-pie-menus-49ca02a74d... Mod The Sims Wiki: SimAntics: https://modthesims.info/wiki.php?title=SimAntics https://modthesims.info/wiki.php?title=SimAntics Simantics Wiki: http://simantics.wikidot.com/ http://simantics.wikidot.com/ SimsTek Wiki: SimAntics https://simstek.fandom.com/wiki/SimAntics https://simstek.fandom.com/wiki/SimAntics From Ken Forbus's game design course: Under the hood of The Sims: http://www.cs.northwestern.edu/~forbus/c95-gd/lectures/ http://www.cs.northwestern.edu/~forbus/c95-gd/lectures/ Programming Objects in The Sims: http://www.qrg.northwestern.edu/papers/Files/Programming_Objects_in_The_Sims.pdf http://www.qrg.northwestern.edu/papers/Files/Programming_Obj...
- 6y ago
- tiffmeiss 6y agocolor tree seems to embody a lot of the things you’ve mentioned. it uses a zui to edit lisp code. i hope the author finishes it soon! http://colortree.app http://colortree.app
- lmm 6y ago> Lack of evidence? Again, they're holding VPLs to a higher standard. When a language like Ruby appeared, nobody asked for proof. Simply creating something that some programmers liked was sufficient. If there was a visual programming language with anywhere near the popularity of Ruby, I'd be willing to consider that maybe the idea has some merit.
- dkersten 6y agoI don’t know how many people use Ruby, its certainly not as popular as it was during the Rails hype, so its hard to day, and I don’t have numbers for the visual languages either, but Unreal Engine’s Blueprints has a lot of users. Max/MSP does too, and apparently a lot of artists use tools like Substance Designer to create visual materials and those tools have visual programming too. EDIT: Media Molecules’ Dreams has a lot of users using its visual language to implement game logic! It sold about 8.5 million copies. Obviously not all people who bought it are using its visual language, but I imagine a very large percentage have at least tinkered a bit. I doubt Dreams would be as popular if it required textual programming.
- DonHopkins 6y agoExcel. I could turn your argument around: If Ruby were anywhere near as popular, widely used, and successful as Excel, I'd be willing to consider that maybe the idea that Ruby is a viable programming language has some merit. But I won't, because whether or not something is a visual programming language isn't up to a popularity contest. Can you come up with a plausible definition of visual programming languages that excludes Excel, without being so hopelessly contrived and gerrymandered that it also arbitrarily excludes other visual programming languages?
- lmm 6y ago> I could turn your argument around: If Ruby were anywhere near as popular, widely used, and successful as Excel, I'd be willing to consider that maybe the idea that Ruby is a viable programming language has some merit. How is Excel, as widely used, a programming language? Excel sheets in their widely used form are not instructions or behaviour; you can't run them, only manually edit them. Perhaps there is a way to turn Excel sheets into programs, but I highly doubt such a way of using Excel would be more popular than Ruby. > Can you come up with a plausible definition of visual programming languages that excludes Excel, without being so hopelessly contrived and gerrymandered that it also arbitrarily excludes other visual programming languages? I'd say a visual programming language is a programming language for which the primary way of making changes to the program is visual. Even if we were to consider Excel a programming language, the primary way in which people make changes to Excel sheets - especially advanced users who are doing more programming-like things - is by editing textual formulae, IME.
- joreg 6y agoAgreed! Many of those claims completely disregard the research in visual programming that has happened in the past 30 years. Specifically the idea that it is about visual vs. textual seems utterly outdated now that more and more modern development environments find ways to combine the best of both worlds. If anyone finds the time to update these claims, please consider our vvvv in your research: - A visual programming environment for the .NET ecosystem - Compiles to C# using Roslyn - Can use code from any .NET library as visual code blocks - Its language VL augments dataflow with features from OOP and functional programming, supports generics and easy multithreading - Useful since 2002: https://vimeo.com/371511910 https://vimeo.com/371511910 Free for non-commercial use without restrictions (Windows only): http://visualprogramming.net http://visualprogramming.net vvvv definitely doesn't solve all known issues but we hope it raises the bar for visual programming and such discussions.
- kqr 6y agoI'll preface by saying that vvvv looks impressive and certainly seems like one of the more polished options in this space. We have a type of visual programming as part of an internal configuration tool, and I will definitely look into vvvv for how things can be done differently. That said, this screenshot from one of your tutorial videos highlights the type of thing I think people are worried about: https://i.xkqr.org/screenshot_2020-04-27T09:47:46.png https://i.xkqr.org/screenshot_2020-04-27T09:47:46.png I'm not saying it's bad – it might just be a question of habit whether or not graph edges are better than named identifiers in text, but it is hard to build away, even with best in class tooling.
- joreg 6y agoIt has it's advantages and disadvantages, same goes for text-programming though: Sometimes in text you store results in badly named variables because it is hard to make up a meaningful term for each step of a computation. In those cases visual code shines because instead of forcing you to come up with a name it allows you to directly connect things with the added benefit of visualizing dataflow, thus structuring your code. If you have an algorithm though where each interim result can be clearly named, then text code shines. So roughly we argue that the more high-level your code is, the better it works visually, the more low-level it is, the better it is expressed in text. And it is therefore about a combination of both worlds. We don't have this yet in vvvv gamma (but have it in vvvv beta) that you can at any point write text-code if you prefer and wrap this in a node for further use in your visual graph.
- DonHopkins 6y agoHere's another paper about visual programming that Brad Myers wrote a couple years after his 1989 paper. C32: CMU's Clever and Compelling Contribution to Computer Science in CommonLisp which is Customizable and Characterized by a Complete Coverage of Code and Contains a Cornucopia of Creative Constructs, because it Can Create Complex, Correct Constraints that are Constructed Clearly and Concretely, and Communicated using Columns of Cells, that are Constantly Calculated so they Change Continuously, and Cancel Confusion Spreadsheet-like system that allows constraints on objects to be specified by demonstration. Intelligent cut and paste. Implemented using Garnet. 1991 Brad A. Myers. "Graphical Techniques in a Spreadsheet for Specifying User Interfaces," Proceedings SIGCHI'91: Human Factors in Computing Systems. New Orleans, LA. April 28-May 2, 1991. pp. 243-249. https://www.researchgate.net/publication/221518856_Graphical_Techniques_in_a_Spreadsheet_for_Specifying_User_Interfaces https://www.researchgate.net/publication/221518856_Graphical... C 32 Spreadsheet 1991: https://www.youtube.com/watch?v=IsINJ8mlD5A https://www.youtube.com/watch?v=IsINJ8mlD5A If you enjoyed the full audacious name of C32, then you may also enjoy some of the other acronym names of projects by Brad and his students: http://www.cs.cmu.edu/~bam/acronyms.html http://www.cs.cmu.edu/~bam/acronyms.html (My meager contribution was "GLASS: Graphical Layer And Server Simplifier".)