I once worked on a project that did exactly that - you drew a flow chart by dragging flowchart elements into a grid, and then connecting arrows between them to indicate flow. A rounded start bar was required to indicate the beginning of the program, and after that it could go through any number of rectangular or diamond blocks. You can give each block a name, then double click it to "zoom in" to that block and develop the code within it. Once drilled in a new blank grid would appear, and you could drag in different operations -- read a value, write a value, add, subtract, etc. So for example you could read a counter value, send that the a plus operation along with a constant of 1, and send the output of that to a write counter value. The contents of a diamond block used a special return operation that would set the true/false direction of the program. You could even do parallel programming, after a fashion, by using a double horizontal line to spawn multiple "threads" that would execute simultaneously (actually cooperatively). It was actually a fully featured language, and except for setting labels you didn't even need to use the keyboard at all to code. The target of this was embedded controllers like PLC's, and this was back in. And this was back in the early 90s.
I once worked on a project that did exactly that - you drew a flow chart by dragging flowchart elements into a grid, and then connecting arrows between them to indicate flow. A rounded start bar was required to indicate the beginning of the program, and after that it could go through any number of rectangular or diamond blocks. You can give each block a name, then double click it to "zoom in" to that block and develop the code within it. Once drilled in a new blank grid would appear, and you could drag in different operations -- read a value, write a value, add, subtract, etc. So for example you could read a counter value, send that the a plus operation along with a constant of 1, and send the output of that to a write counter value. The contents of a diamond block used a special return operation that would set the true/false direction of the program. You could even do parallel programming, after a fashion, by using a double horizontal line to spawn multiple "threads" that would execute simultaneously (actually cooperatively). It was actually a fully featured language, and except for setting labels you didn't even need to use the keyboard at all to code. The target of this was embedded controllers like PLC's, and this was back in. And this was back in the early 90s.