Programming languages mimic human language facilit...
# thinking-together
v
Programming languages mimic human language facility. This is something very natural, which we learn from childhood: grammar, alphabet, syntax, etc. It is not a limitation of the text-terminal era - it is a natural way to express things. Some people even argue this is hardcoded in our brains (see Universal Grammar). So when thinking about visual programming, I wonder if there is an example of the successful sohphisticated visual environment for expressing complex ideas, comparable to human language. Technical drawing? Circuit schematics? Given a few decades of attempts to develop a visual programming environment I am yet to see the one which would impress me. Most of the attempts fall under the category "making simple things easy but complex things impossible". I do not want to discourage anybody from trying to work in this direction, but I want to make a point that "text" in languages is not a legacy limitation from mainframe times.
e
Didn't universal grammar get refuted? Did you see Bret Victor's work?
d
I think language != written language. Written language is a pretty recent human development while language has existed for longer. Even spread reading/writing has only been around for about a century. I would like to have programming languages that have more advantages from language and less disadvantages from written languages.
☝️ 1
🍰 1
o
Text programming languages are not as sophisticated as human language. As devoted to programming they must avoid ambiguity while human ones are very ambiguous. So I guess it is not easy to compare the two. And I don't find natural to express things in programming language as I feel easy to express things in human languages (at least for me more in French than English 😉 )
👍 1
And as a "visual language to express complex ideas", I can think of two of them, but not dedicated to programming. Math and music notations. What I want to point here, is that they express complex things and they are not text languages in the sense of streams of "ascii" characters as text programming languages are. I often find streams of characters poors at expressing some "complex" "programming" things. Examples: complex condition branching, dependencies hierarchies à la Makefile, microservice architectures driven by events, WebAudio nodes...
👍 1
n
I claim that feeling about naturality of text is only because it's interpreted by another human being. I could imagine that it would work with different medium but it has to be general enough to "speak freely" enough. And since compiler is not another human but stupid machine instead writing textual programs is actually very unnatural.
d
1. Human language facility != grid of fixed width ASCII characters. 2. There are many useful visual notations that aren't expressed as a linear sequence of alphabetic characters. Music notation. Benesh dance notation. Juggling notation. Venn diagrams. String diagrams from category theory. Knot diagrams from knot theory. Yes, these examples are mostly DSLs, but a programming language that supports embedded DSLs using the best available notation for the job can only be a visual programming language.
👍 3
k
Math notation like summing series. (Can we dispense with the "fixed-width" and "ASCII"? Feels like strawmanning; one of these is far more serious than the others.)
d
Nicolas said: "complex condition branching". How about decision tables, which are a 2D notation for complex conditionals.
The paper "Units: Cool Modules for HOT Languages" describes a novel abstraction mechanism for programming languages. It uses a 2D graphical notation to introduce the concept, before describing the textual notation, I think because non-hierarchical dependency graphs are easier to think about using 2D graph notation. A possible reason why the "unit" concept hasn't been more widely adopted: programming languages are expressed using a hierarchical text based notation, which creates an implicit conceptual bias against non-hierarchical dependency graphs.
o
@Kartik Agaram When I click on your link it ends on a "Document not found". Can you access it on your side?
d
b
See also Conal Elliot’s “Tangible Functional Programming” (ICFP 2007) http://conal.net/papers/Eros/
k
To answer @ogadaki’s question, it's not working for me either anymore. I think somebody noticed they had a stale paper up and took it down 😕