12 ms·
I've some experience in visual programming languages (both professional and in my studies) and I advise against the graph-form where you connect nodes and edges
by zeptomu 9y ago
I've some experience in visual programming languages (both professional and in my studies) and I advise against the graph-form where you connect nodes and edges.
This does not mean that text is the only way to implement programs (and even if you connect nodes, you're still programming), but maybe a good local optimum is in-between, e.g. interactive shells like Jupyter's Notebook and the Mathematica interface. I know there is LabView, the Blender-Editor and AFAIK some Unreal-Engine tool that uses this model, but bigger programs seem really incomprehensible to me.
It's always easy to show-case 5 programs in these node-&-edge editors, but I do not think it is the best approach for visual languages, as one should not under-estimate the layout problems and how to represent information in boxes.
So, I am all for new ideas in visual programming, but I am not sure if the "free canvas" approach works.
- phreeza 9y agoI wonder if there is a way to get the best of both worlds? What do you make of Blockly for example? https://developers.google.com/blockly/ https://developers.google.com/blockly/
- zeptomu 9y ago> I wonder if there is a way to get the best of both worlds? [...] I believe so. Furthermore high-level languages with syntax-highlighting (think Haskell, Python, Elm, etc.) in state-of-the-art text editors are in a better position than the "free-canvas" node-edge editors to provide the base for such a widely used language. Blockly goes into the right direction, but has a childish touch and I do not think the keywords should have a background with padding.
- fiatjaf 9y agoBlockly (and all the similar visual programming languages) are so awful! They're basically writing, but much harder. "set", "repeat", "do"? What?
- phreeza 9y agoI think the advantage is that they make syntax errors impossible and are more discoverable, because the available blocks can be seen in the sidebar. Of course once you have mastered a language, it is more efficient to write text, but for a beginner it can make the entry less daunting.
- seanmcdirmid 9y ago"Patch and wire" can work in certain contexts, especially for data flow models. You are right they don't scale well (Burnett's scaling up problem), but if the programs are relatively small, they are completely manageable. And it does force you to keep your components relatively small and simple (using compounds to hide wiring for more complex designs).
- jldugger 9y agoIMO, the reason the wiring model doesn't scale up is that most don't provide a way to create submodules (compounds?). I expect that decomposing a problem into a chain of smaller subproblems is a fine way to manage a dataflow. Yahoo Pipes didn't really offer that, or any anyonymous stdin/stdout. So huge graphs were necessary for complex problems.
- onli 9y agoI agree that it is difficult to tackle bigger problems with this model, and everything that deviates from rss in -> manipulation -> rss out is maybe better served with textual programming. Though I did use pipes in a ruby program of mine basically as micro service for everything web related, shortly before it got turned off... But Yahoo Pipes did have submodules. You could have one of your pipes as a block in another pipe (I'm planning on supporting that at a later stage). And it had userinput that could get assigned as additional input to blocks in a pipe (for that I don't have a mental model yet).
- bayonetz 9y agoCheckout Rapidminer and Knime for great examples of box'n'arrows applied to machine learning pipelines. I've used Rapidminer a fair bit and they really have a great model including a dynamic number of inputs/outputs from a single box and ability to make boxes that encapsulate pipelines made from other boxes. I was able to do an order of magnitude more experimentation using this visual style than if I had tried to script it in code. I'm a software engineer who loves to program so the fact that I'd pick this tool for that job over programming I think says something.
- metachris 9y agoInteresting thoughts, I would be interested to read more aboute this. Can you recommend any good references to start?
- zeptomu 9y agoLiterature is very scattered as the domain "Visual Programming" is pretty broad. There are general-purpose languages on one hand that really try hard to provide all the tools to build complex systems and domain-specific languages for ... well specific domains. The general-purpose ones did pretty bad (at least I don't know of any complex system tools - say kernels - implemented in them), but there are some niches were some people seem to like them. - LabVIEW for control system prototyping - Shader-Languages for image processing (games via Unreal Engine and rendering pipelines like Blender) - Model-Editors for simulations and in engineering E.g. in the GIS domain people often process digital aerial imagery via pipelines that can be represented in a similar fashion than this Show HN proposes (for example the model editors in QGis and ArcGIS). Here is an image of a model builder to process some geo-information: http://3.bp.blogspot.com/-9iOyUC8RHXs/UrM2ML5Qe9I/AAAAAAAABxs/oFUFi17MfCk/s1600/model.PNG http://3.bp.blogspot.com/-9iOyUC8RHXs/UrM2ML5Qe9I/AAAAAAAABx... I am not sure if building this chain via this editor is actually simpler than learning some command line tools or basic Python to accomplish the same thing. It makes sense that domain-specific ones do better, as they don't have to provide tools for stuff, which is uncommon. It is also easier to implement fold-like structures (say function f: A -> B) that process data with clear input and output than programs that do more IO (say f: A -> IO B). If you do complex IO, you have to introduce some concept of order and time in your system and it is not clear how to do this via the graph approach (example: while-loop), or just can be misinterpreted (edges/connections may symbolize ordering on one hand and data-flow on the other hand). Assuming one should be able to program general-purpose systems (like all the tools we love: operating systems, databases, interpreters, web-servises, etc.), the solution might be not trivial, but I suppose it is more like the interactive notebooks than the graph approach. Furthermore I think it makes sense to always have a semantically identically text-based language, as this just makes tooling simpler.
- LoSboccacc 9y agoI don't think you remember how the yahoo pipes worked. It was a brilliant mix of graphs for flow control, premade boxes for all common data manipulation and scripting for that extra feature if needed I miss them a lot and appreciate the effort here, but don't forget the visual model for data manipulation wasn't invented here but was testsd refined and proved functional by previous existing services
- zeptomu 9y ago> I don't think you remember how the yahoo pipes worked. True, I learned about it when it was already dead, but thought the goal was similar to the stuff Zapier offers and I would really like to try it. Not to automate stuff, but to checkout the visual editor.
- fiatjaf 9y agoOh, Zapier is a programmer's nightmare.
- robbiemitchell 9y agoWhy/how so?
- jameskegel 9y agoThat's an odd response. Why do you feel that way?
- bryanh 9y agoFunny you say that -- engineers are one of Zapier's best customer personas. Quicker and easier to implement functionality than deploying code to the cloud. Plus, non-engineers can take over maintenance so engineers can work on more interesting things. We also have code/scripting steps -- https://zapier.com/help/code/ https://zapier.com/help/code/ or https://zapier.com/help/code-python/ https://zapier.com/help/code-python/.
- gsvclass 9y agoI work on Webmatr which is also for building integrations except its with Javascript code. The entire platform runs of API Specs (Swagger, Open API). I just posted it on Show HN https://news.ycombinator.com/item?id=14469734 https://news.ycombinator.com/item?id=14469734 or the direct link https://webmatr.com https://webmatr.com
- jacquesm 9y agoCompared to putting together the net list of even a mildly interesting digital circuit interactively this is actually really easy. Not as easy as doing it with a text editor and some programming language or scripting solution would be but I think that Y! pipes was never aimed at the developers, much more at ordinary users and those are much more comfortable with such visual solutions than they are with text.
- lobster_johnson 9y agoThere are some successful commercial products that use a visual graph model. MaxMSP [1] and Shake [2] (now discontinued) come to mind. You're right that it doesn't scale well as a UI, however. [1] https://cycling74.com/products/max/ https://cycling74.com/products/max/ [2] https://images-na.ssl-images-amazon.com/images/G/01/software/detail-page/shake4-1-lg-062506.jpg https://images-na.ssl-images-amazon.com/images/G/01/software...
- mastax 9y agoAlso: LabVIEW, Unreal Engine 4 Blueprints, and pretty much every Materials Editor I've seen.
- eriknstr 9y agoUnreal Engine 4 Blueprints are amazing from what I've seen, and show what a good visual editor can be capable of. LabVIEW is a PITA in my experience. That being said I have not invested very much time in LabVIEW but I have no motivation to either. I don't mean to flame, that's not the intention, but does anyone on HN actually think that LabVIEW is a comfortable and productive tool? If so, how and why?
- rubidium 9y agoI used it for 6 years controlling a complex experimental apparatus for some physics experiments. It's great at getting out of your way and letting you focus on the results. It's definitely not a typical programming language. It's great for integrating off the shelf stuff from any major test equipment company. Flow a couple lines and boxes and you've got a PID circuit. Add a few more and you've got a real time oscilloscope. Add a few more and you have data logging. At some point you need to sit down and restructure to get it maintainable, but people who are good with it design it well from the start. It fits the test bench and small/mid-size experiment system very well.
- JPKab 9y agoSee here for a modern product that leverages the visual graph model and is rapidly growing in adoption: https://www.alteryx.com/products/alteryx-designer https://www.alteryx.com/products/alteryx-designer
- Theodores 9y agoHave a look at the ideas SGI 'explored' with 'IRIS Explorer'. This was ahead of its time and ahead of even SGI hardware. However you could layer up lots of interesting datasets in ways that would otherwise require programming at some other level. http://www-sldnt.slac.stanford.edu/hepvis/Papers/Web/9/x1602x.htm http://www-sldnt.slac.stanford.edu/hepvis/Papers/Web/9/x1602...
- kls 9y agoIIRC this became the basis of Cosmo Worlds which a company I was with, at the time, used extensively to build computer based training. It was an interesting mix of visual programming and scriptiong. It was based on wiring inputs and outputs into scripts. I really enjoyed working in Cosmo Worlds.
- Theodores 9y agoCosmo Worlds was the tool I used to get my sister a job. I downloaded Cosmo Worlds and I paid for it. Around £450 pounds in 1998? We spent the weekend building a VRML version of her CV with all those things Cosmo Worlds was brilliant at, spatial sound, things that moved, lousy lighting that cried out for a GPU. My sister had rocked up fairly homeless the week before, we put a solid 36 hours on CosmoWorlds and my sister ended up in an awesome career thanks to what was on that one floppy disk - VRML. The ambition of Cosmo Worlds was something else, we ended up with a flat web instead. I thank you sir for Cosmo Worlds!!!
- kls 9y agoIt was a great technology fun bit of history my company was in a bidding war with Computer Associates for it when SGI decided to dump it, sad part was we where a profitable CBT company that had the extra development capacity to support it. Sadly we did not have the pockets that CA had and therefore where outbided, we knew it was the death of Cosmo Worlds and had to adjust course pretty rapidly, sad part was there really was no competitor for real time web based 3D at the time. VRML had a chance until Cosmo Worlds died. We ended up moving all of our CBT to the unreal engine and retreating back to the desktop. Back then I wrote a pretty popular collision detection library for VRML.
- shiven 9y agoPipeline Pilot (Biovia/Dassault) - Deeply entrenched, industry-grade visual (+textual(PLSQL)) programming system. Depending on who you ask, it is either the bees-knees or a f*ing cancer.
- supergreg 9y agoYahoo Pipes was brilliant. I never saw it as programming but as an advanced feed configuration.
- robinhowlett 9y agoI work for SnapLogic (an enterprise visual integration product) - the "free canvas" works great for us with live preview of results/data; here's an example linking a third-party code review tool's webhooks with JIRA: https://i.imgur.com/gNr1gGD.png https://i.imgur.com/gNr1gGD.png All of our integrations can be converted into a API with a click of a button too.
- dyeje 9y agoWhat kind of API? Generated code or a web endpoint or something else?
- robinhowlett 9y agoA web endpoint. So think of an HTTP endpoint where the request body gets turned into the input data and the query parameters become available to be used/mapped anywhere in the pipeline. It makes the integrations pretty dynamic.
- JPKab 9y agoI work at a sort-of-competitor to you guys (honestly not sure we cater to the same user bases or not) but I actually like your UX. It's quite sleek. At Alteryx, we have a more traditional Node/Edge model, which probably occupies less screen real estate than your UX does for the same pipeline. However, it would be interesting to study if it's easier for humans to cognitively process a given style. The line of products you and I work in have shown me just how much research we still need to do on human processing of visual charts. UX professionals are just way behind on this across the industry IMHO. We've got some great ones here, but it's not easy finding them.
- zeptomu 9y agoThe image shows some of the problems quite well. E.g. the following things are not clear to me: [0] I suppose Rhombi symbolize choice. But where are the branches? What if "Already Done" is true? Or does the else-branch enforce implicit fail-state somehow? [1] What's the difference between parallelograms and squares? [2] What's the scope of the "For Each Issue"? [3] Why is the second output of "Copy Webhook" named ("output1"), but not the others? Are they implicit default output (maybe "output0")? [4] What happens with longer pipelines? Do you wrap or have a scrollbar? Furthermore the size of the modules have same size, so one gets into rendering issues (e.g. the names of some nodes don't fit the "boxes"). Sorry, I didn't want to sound harsh, I just think that visual programming is not automatically simpler, just because it doesn't use text (at least directly - one has also to name "modules"). You also don't use the "free-canvas" in its extreme form I described (where you can rearrange everything), as you've e.g. implicit edges between nodes, which is a good idea probably, as users get a feeling about the complexity of pipelines by measuring their length (which would not work if there are different lengths for edges).
- sidegrid 9y ago"I've" is not normally used where it is spoken as "I have". This is similar to people using "an" in front of a word starting with "h" where the "h" is pronounced. Not sure why people do this.
- aaron-lebo 9y agoBecause language evolves?
- flukus 9y ago> "I've" is not normally used where it is spoken as "I have". Are you saying people don't use "I've" in spoken language? Because it see it regularly, "I've never" is even a drinking game.
- schoen 9y agoI think the distinction sidegrid was making is not actually about pronunciation but about the two uses of have as an auxiliary verb and as a verb indicating possession. https://en.wiktionary.org/wiki/have#Verb https://en.wiktionary.org/wiki/have#Verb My impression is that standard American English only contracts the auxiliary verb ("I've biked up Mount Tamalpais") and not the possession verb (?"I've a pair of prescription sunglasses"). Hence "I've been diagnosed with bronchitis" (auxiliary) but not ?"I've a case of bronchitis" (possession). However, I think this rule is different in Commonwealth English, so we might just be witnessing a difference in English varieties.
- phillc73 9y agoAs a Commonwealth English speaker, I am not aware of a rule preventing contraction of the possessive verb "to have." Maybe there is, and I'd be interested to learn about it. Having said that, commonly I wouldn't say, "I've a case of bronchitis," rather just "I've bronchitis." It feels more natural to say "I have a case of bronchitis." However, this may just be personal preference.
- 9y ago