All Programming Languages are Based on Cells


All current PLs are all based on the notions of:


Breaking Free


Diagrammatic syntax can break free of this arrangement, e.g.,


SVG


Using SVG as a concrete example…


SVG elements can take the place of characters in PLs.


SVG implies that text is not special.  Text is but one of the possible shapes that can be used in a PL.


Relations might include:


SVG has "too much" syntactic noise, for use in a language.  It is possible to strip the noise from SVG, leaving only enough for the above relationships.




Literate Programming


Are SVG diagrams a model for  literate diagrammatic programming?


Concurrency Language


A suggestion for a language of concurrency:


Image



https://guitarvydas.github.io/2021/03/16/component-diagrams.html

https://guitarvydas.github.io/2021/03/06/Components-(again).html


Hierarchical State Machine Language


A suggestion for a Hierarchical State Machine[2]  PL:


Image


https://guitarvydas.github.io/2021/02/26/State-Machines-to-JavaScript.html

https://www.youtube.com/watch?v=j_bN4ZXbCHU





Hybrid Diagrams+Text


Diagrams may contain text.  


Text can express some relationships "better" than diagrams, e.g. mathematical one-in-one-out relationships.[4]


Diagrams can express some relationships "better" than text, e.g. network diagrams.


So-called "visual programming" is often based on the notion of pixels.


Diagrams are based on shapes.[5]



Composition


Current PLs encourage thinking in only 2 directions: X & Y.


Tabs[6] are borne of X/Y thinking — tabs go across but not in.


HTML hyper-links provide access to the Z (in) dimension, but this hasn't been fully exploited in PLs.


Bash allows composition of concurrent components, but only in a linear manner.[7]


Diagrams encourage thinking in 3 dimensions X/Y/Z.  One can view a page of diagrams and mouse-over any component.  Double-clicking on a component should open a new editor showing the composition of the selected component.  


For example, 




Old-Fashioned Concepts


The notion of Line/Offset (maybe with footnotes) is borne out of the contraints of using pen and paper.


We, now, have computers that can represent expression (writing, drawing) in 3 dimension X/Y/Z.


Our use of computers is limited by old-fashioned 2D notions, such as desktops, filing cabinets, etc.


[IMO, the way to break free from such old-fashioned concepts is to use isolated components that are concurrent.]


3D


Note that the concept of 3D is, here, taken to be in a simple form.  Adding a Z axis does not imply that we need to show diagrams in the Y/Z plane, but only allows us to push into (out out of) components.


We already use 3D in things like tree widgets and hierarchical file systems (especially icon-view) and HTML browsers (links).


Writing of prose is constrained to a mostly-2D paradigm.  One can write character cells in Line/Offset space and one can only go 1-level deep in Z using footnotes.


See Also


Isolation:


https://guitarvydas.github.io/2020/12/09/Isolation.html



Concurrency:


https://guitarvydas.github.io/2020/12/17/concurrency-bare-bones.html


https://guitarvydas.github.io/2020/12/09/Concurrency-is-not-Parallelism.html


https://guitarvydas.github.io/2020/12/09/Concurrency-is-a-Paradigm.html


https://guitarvydas.github.io/2020/12/09/CALL-RETURN-Spaghetti.html


https://guitarvydas.github.io/2020/12/09/Box-and-Arrow-DSL-For-Concurrency.html


New Breed HLLs

https://guitarvydas.github.io/2020/12/09/New-Breed-HLLs.html


Drakon

http://drakon-editor.sourceforge.net/

IMO, the 3 PDFs are well worth reading

https://drakonhub.com/files/drakon_part1_eng.pdf

https://drakonhub.com/files/drakon_part2_eng.pdf

https://drakonhub.com/files/drakon_part3_eng.pdf



[1] (line,offset) instead of (x,y) in pixel space

[2] HSMs are StateCharts without orthogonal states.  Orthogonal states can be represented in the above concurrency PL.

[3] In Drakon, such entry text is used to declare local variables.

[4] Aka filters.

[5] shapes at pixel coordinates

[6] Tabbed views.  Tabbed dialogs.

[7] Bash may provide other dimensions, but does not encourage their use.  Bash pipelines are restricted by character-based thinking.

[8] Hierarchical State Machine (StateCharts sans orthogonal states)