Pure Research

Pure Research in software means creating the envelope / environment / context in which practical languages can be built.

Applied Research

A university degree in Applied Research is called a BASc.

Applied research is also known as Engineering.

Pure Research Is Not Programming

What is Programming?


GOTOs - Structured Programming

Structured Programming gave us nesting of GOTOs.

Global Variables - Scoping

Scoping gave us nesting of global variables.

Denotational Semantics - Phases

Denotational Semantics is tamed using passes/phases.  

Aka nesting.


Peter Lee and Uwe Pleban


Docker nests environments.

Docker provides isolation. [https://guitarvydas.github.io/2020/12/09/Isolation.html]


Syntax Semantic Language (not Secure Sockets Layer).

SL is the gem.

S/SL report 


source code:


S/xL is the syntax portion.  A little language for parsing.  About 14 operations.

x/SL is the semantics portion.  A little language for expressing operations on data. 

x/SL is the real gem. 

UNIX® Pipes


Rust provides UNIX® like isolation of data.

Data ownership was explored and implemented in FBP[1] and variants of Visual Frameworks[2] and, probably, other technologies.

UNIX® pipes don't need data ownership, because data is transfered by-value via pipes.

Ownership is just an optimization that allows memory sharing[3].


Software Tools


For example Fig. 1


Fig. 1 Nested Diagram

is more expressive than






(especially when deep nesting occurs, and when problems are "complex").




PL[4] Syntax is a way to wrap nesting, to make it "prettier".

if…then…else… can be expressed as

(if (…) (…) (…)) 


if (…) then




end if

Syntax can be used to enable syntax checking.

E.g. Pascal-like languages can be syntax checked, while Lisp cannot.[5]

Syntax checking is only good for simple error checks, e.g. typos.  After such initial checking, syntax checking is no longer needed.[6]




Callbacks are textual nestings.

Callbacks are a good example of where text-only fails.[7]


Functions are one-in-one-out nestings of code.

Javascript FileReader () is an example of where more nesting needs to be expressed and where text-only fails to express such concepts in a simple way.

[1] https://jpaulm.github.io/fbp/

[2] An OEM product, now defunct.

[3] Note that the concept of memory sharing makes no sense if one tries to design a language for distributed computing.

[4] PL means Programming Language

[5] Lisp tends to use kludges added to the editor to provide syntax checking.

[6] Except for checking syntax of newly added code.

[7] Exceptions are another text-only kludge.