Visual Programming Doesn’t Suck
You have two camps of people in data processing.<p>The first one is concerned about solving problems (domain experts). They don&#x27;t really know much about programming, they know how to solve problems though. Once in a while someone clever creates a visual tool for them and they become magically super productive relative to their peers. Be it business process automation (BPMN, workflow automation), signal processing, simulation programs, webscraping, even Excel. However as these people get proficient, in their top-down learning of programming, they start to hit limits of the tool. Then you can see the typical spaghetti code, because the visual tool lacks basic programming constructs like looping, functions and conditional which would nicely compose the mess away. Additionally it can&#x27;t scale beyond RAM and is hard to put into version control, because they are not in control of the text representation of objects they work with, even though the software uses it under the hood.<p>The second group of people are programmers. They start learning bottom-up, ie. from conditionals, loops, functions, threads, etc. to actual problem solving. They know all the stuff about proper branching, version control, how to structure the code, programming paradigms, etc. They don&#x27;t get stuck in spaghetti code, because they have super composable functional languages, where any pattern or duplication can be abstracted away as a function.<p>There is a huge gap between the problem-solvers and program-creators.<p>Anything which can be represented as a visual language can be also represented as a text. Unfortunately we don&#x27;t have textual programming languages powerful or intuitive enough to cater to top-down folks.<p>I would go as far to suggest that our current formalisms are insufficient for this task. Lambda calculus is very bad abstraction for working with time and asynchronous processes for example. Workflow automation, where 99% of cpu time you just wait for real world tasks, doesn&#x27;t map to lambda calculus well. Other formalisms like pi calculus or petri nets are much better suited for this and unsurprisingly the visual programming tools often resemble a petri network.