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.