Syntax is Frivolous, Paradigms are Essential
Functional thinking leads us to the conclusion that names are meaningless.
I conclude that not only names, but that all syntax is meaningless.
Syntax is frivolous, paradigms are essential.
Toolbox Languages
Knowing that I can build any syntax in an afternoon makes me think differently about what I want in a language.
I want a toolbox of paradigms, not someone else’s syntax.
What makes a good toolbox language?
- machine-readable and machine-writable anti-syntax, I eschew human-readability until the very last moment ; I want to write code that writes code for me
- snippets that are not tied to a single paradigm.
I want an expression language of triples.
Assembler code consists of triples and allows many paradigms to be use.
What else comes to mind?
Lisp is a good first approximation. Lisp is an expression language, has almost no syntax and allows many paradigms to be used.
The drawback of Lisp is that you are allowed to use functions that take more than 2 arguments. Self-discipline is necessary.
Relational programming languages, like PROLOG, can be used, but,
- relational programming languages tend to favour exactly one paradigm (relations)
- self-discipline is necessary to avoid facts (functors) that larger than triples
- relational programming makes simple things - like formatting a string for output - more difficult than it needs to be.
Relational languages are most useful when you want to query a factbase of triples
Language Design Is Backwards
We continue to use mid-1900 biases when designing languages, e.g. we tend to build languages that are tied to grids of non-overlapping bitmaps.
Today, computers allow us to use something better than “characters” to express languages.
We can use Diagrams1.
We can use SVG.
SVG To Save The Day
SVG is commonly used to create massive works of 2D art, yet, stripped-down SVG contains the few things we need to replace only-text-characters in programming languages, i.e.
- rectangles
- ellipses
- lines
- text.
11th Rule2
Programming languages are IDE wannabes.
See Also
(Brainstorming - I believe in brainstorming, the articles below are in that ilk).
Factbases (aka Triples)
Factbases 101
Triples 2
Triples in PROLOG
Toolbox Languages 2
Toolbox Languages
DaS II
Diagrams as Syntax Is Not Visual Programming
On Diagram Notation
(See table of contents, “Diagrams” and “DaS”)