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?

Examples

GOTOs - Structured Programming

Structured Programming gave us nesting of GOTOs.


Global Variables - Scoping

Scoping gave us nesting of global variables.


Denotation Semantics - Phases

Denotational Semantics is tamed using passes/phases.  


Aka nesting.


https://www.amazon.ca/Realistic-Compiler-Generation-Peter-Lee/dp/0262121417


Peter Lee and Uwe Pleban


Docker

Docker nests environments.


S/SL

Syntax Semantic Language (not Secure Sockets Layer).


S/SL report 

https://archive.org/details/technicalreportc118univ


source code:

https://research.cs.queensu.ca/home/cordy/pub/downloads/ssl/


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

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].



Bash

Software Tools

Diagrams


For example Fig. 1


Image

Fig. 1 Nested Diagram


is more expressive than

{

  {

    …

  }

}


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

Trees

Lisp

Syntax

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


if…then…else… can be expressed as

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

or

if (…) then

  …

else

  …

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]


Footnotes

HTML

Callbacks

Callbacks are textual nestings.

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

Functions

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.