Pure Research in software means creating the envelope / environment / context in which practical languages can be built.
A university degree in Applied Research is called a BASc.
Applied research is also known as Engineering.
Structured Programming gave us nesting of GOTOs.
Scoping gave us nesting of global variables.
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 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
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.
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].
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 (…) (…) (…))
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]
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.