It was tried countless times: Visual programming languages. It never worked outside some specific application domains.
Keep in mind that text is a visual representation. It is a visual representation optimized to express our thoughts, trivial or complex, in a precise, efficient, and succint way. We went from making artistic cave paintings and wood carvings to writing simple, standardized characters.
Programming is about expressing how to do something in an extremely precise way, so precise that it can be understood by a machine with little or no intelligence.
Non-textual media might provide an aid when communicating between intelligent humans, and even there it is often used for superficial communication (e.g. advertising). When you need precision, text is probably the most effective choice.
I agree with you in that text is a visual representation of ‘units’ of ideas, if I were to be not very precise about this, that we string together to convey more complex ideas. And I agree with you that in the kind of complex scaffolding of little ideas into big ones ad. infinitum, that happens in computer science, that the kind of ‘coding’ medium I was suggesting, would be inefficient. But still the idea has a novelty for us humans who are more at home with spatially manipulating objects and stringing them together as opposed to doing all of this in abstract space.
OTOH, flowcharts and such are still in widespread use.
Flowcharts and other types of diagrams are indeed in widespread use, but as design documents to be understood by humans, not as executable specifications. Being made to describe the high-level design of a system to humans, these diagrams are highly abstract and omit most of the details that would be required for an executable specification.
You can define executable graphical languages, as listed in the link I provided, but once you try to use them for anything but a toy example, your diagrams become excedingly large and complicated, essentially unusable.
And that a graph (mathematical sense) can be as precise as you like.
You can define executable graphical languages, as listed in the link I provided, but once you try to use them for anything but a toy example, your diagrams become excedingly large and complicated, essentially unusable.
There are entire management chains of my acquaintance on whose eyelids I could wish that sentence engraved.
There is research being done in improving abstractions for graphical languages. For instance, this applies to graphical representations of monoidal categories (so-called “string diagrams”), which can be used to represent functional programming, monad-based programs (at least to some extent), data-flow, control flow and the like.
It is still the case that textual syntax has a higher information density, though.
By the way, natural language generation could also be used to make programming closer to the cognitive style of humans, and thus more stimulating. I’m not talking about primitive efforts like COBOL here: we could take inspiration from linguistically-inspired formalisms such as Montague grammar to map commonly used calculi and programming languages to natural language in a fairly straightforward way.
It was tried countless times: Visual programming languages. It never worked outside some specific application domains.
Keep in mind that text is a visual representation. It is a visual representation optimized to express our thoughts, trivial or complex, in a precise, efficient, and succint way. We went from making artistic cave paintings and wood carvings to writing simple, standardized characters.
Programming is about expressing how to do something in an extremely precise way, so precise that it can be understood by a machine with little or no intelligence.
Non-textual media might provide an aid when communicating between intelligent humans, and even there it is often used for superficial communication (e.g. advertising). When you need precision, text is probably the most effective choice.
I agree with you in that text is a visual representation of ‘units’ of ideas, if I were to be not very precise about this, that we string together to convey more complex ideas. And I agree with you that in the kind of complex scaffolding of little ideas into big ones ad. infinitum, that happens in computer science, that the kind of ‘coding’ medium I was suggesting, would be inefficient. But still the idea has a novelty for us humans who are more at home with spatially manipulating objects and stringing them together as opposed to doing all of this in abstract space.
OTOH, flowcharts and such are still in widespread use. And that a graph (mathematical sense) can be as precise as you like.
Flowcharts and other types of diagrams are indeed in widespread use, but as design documents to be understood by humans, not as executable specifications. Being made to describe the high-level design of a system to humans, these diagrams are highly abstract and omit most of the details that would be required for an executable specification.
You can define executable graphical languages, as listed in the link I provided, but once you try to use them for anything but a toy example, your diagrams become excedingly large and complicated, essentially unusable.
Irrelevant.
There are entire management chains of my acquaintance on whose eyelids I could wish that sentence engraved.
There is research being done in improving abstractions for graphical languages. For instance, this applies to graphical representations of monoidal categories (so-called “string diagrams”), which can be used to represent functional programming, monad-based programs (at least to some extent), data-flow, control flow and the like.
It is still the case that textual syntax has a higher information density, though.
By the way, natural language generation could also be used to make programming closer to the cognitive style of humans, and thus more stimulating. I’m not talking about primitive efforts like COBOL here: we could take inspiration from linguistically-inspired formalisms such as Montague grammar to map commonly used calculi and programming languages to natural language in a fairly straightforward way.