Linked tree
We shell change a program’s representation from a plain text to a linked tree of nodes, where each node represents a semantic meaning.
This will allow us to
-
easily extend a programming language to reflect a high-level design of a program.
-
such language extensions will not force us to change IDEs (editors, parsers, compilers, code analyzers, debuggers and others tools), if the IDE is able to edit nodes, not text.
-
we can render the program in different ways – as text (compressed or verbose), as a graphic diagram (like UML), as a documentation on itself.
-
we will be able to use in the same code different ‘languages’ and paradigms, like combining compiled code, scripts, SQL statements, business logic language, GUI forms and dialogs, HTML view.
-
we can design a DSL (domain-specific language) or just to extend a given language and so on.