Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Visual programming systems I’ve used seem to have problems that are still present in traditional text based languages. Most of the value seems to be entirely built around helping non-programmers provide value to programming related output

- Modularity / reuse is tough

- Tracing is difficult to do as a system increases in complexity.

- Distributed systems including primitives like locking semaphores are difficult to express visually and are thus still difficult to author. How would you demonstrate to anyone that you don’t have deadlocks and race conditions across modules?

Data flow and perhaps control systems (AI scripts and GUIs built around something declarative and event-driven come to mind) indeed seem to be the only commercially successful examples of visual programming thus far.

If these visual programming environments serialize to normal languages then the tooling to validate them is pretty straightforward. Instead, most visual programming systems seem to be entirely domain-specific and are made custom for a specific set of needs so formats tend to be proprietary and not applicable across different domains. It’d be cool to see a visual programming language based upon something like Squeak but this approach seems to have not caught on.



> Data flow and perhaps control systems (AI scripts and GUIs built around something declarative and event-driven come to mind) indeed seem to be the only commercially successful examples of visual programming thus far.

I strongly disagree. Here's an incomplete list of commercial software in VFX for visual "programming" for artists:

Houdini by SideFX

Katana and Nuke by The Foundry

Massive http://www.massivesoftware.com/massiveprime.html

Gaffer https://github.com/GafferHQ/gaffer


IMO "GUIs built around something declarative and event-driven" covers systems like Houdini and Massive - they're "declarative" in the sense that the scene graph is defined beforehand, and "event-driven" in that they react to external inputs with everything from behaviors in Massive to demand-driven lazy calculation in Katana.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: