A revolutionary OS/Programming Idea

Lynn H. Maxson Lynn H. Maxson" <lmaxson@pacbell.net
Thu Oct 2 08:50:02 2003


Alaric B. Snell writes:
"... Very early on, languages were designed that had 'easy 
syntax'. At the time there were no GUIs per se, so they 
instead made it look like English, and you wrote it on special 
paper that had the columns labelled to make it easier. It was 
quick to learn.  It was called COBOL, Common Business 
Oriented Language, and it was couched in terms that 
managers and file clerks and so on would understand, so they 
could write their own database applications. SQL, likewise, 
was apparently designed as a simple 'non-technical' language 
for business types to query databases. Yet both COBOL and 
SQL, today, are things you hire an expensive person with a 
degree to do. ..."

I admired the tone of this response up until I got into this part.   
I have to protest mixing apples and oranges, COBOL and SQL.  
If COBOL programmers seem expensive, it's a matter of 
demand exceeding supply: sheer economics.  SQL is all over 
the place as probably the most use database languge in the 
world.

If you want simple syntax, you don't pick COBOL.  You pick 
PL/I where "every" program element is a statement and 
"every" statement ends in a semi-colon.   COBOL sytax, 
leading to the frequent search for the "missing period", while 
no means hard to learn does have some pitfalls.

In point of fact three pre-1970 imperative programming 
languages--PL/I, APL, and LISP--contain everything and more 
than all others combined.  PL/I for its variety of data types, 
APL for its operators, and LISP for its list data aggregate.  
Moreover PL/I and APL support use of data aggregates in 
expressions, e.g. the ability to perform arithmetic, logical, and 
string operations on arrays and structures.

If you do a synthesis of the three, the syntax and data types 
of PL/I, the operators (and symbol set) of APL, and the list 
aggregate, you have everything (and more) in all other 
imperative programming languages combined.  Now all you 
need to do is to upgrade it from imperative to declarative, i.e. 
to logic programming, with the addition of the assertion to the 
assignment statement, allowing both to appear concurrently in 
the source.

You end up with a single "universal" specification language, 
self-defining and self-extensible.  That means no need for 
any other language, including assembly language, which is 
included as machine-dependent specifications for any given 
platform.

You need only one software tool also written in the 
specification language:  one language and one tool.   
Supporting this you need to get off file systems and the use 
of "include" or "copy" statements to the use of a data 
repository/directory which the tool uses to automatically 
maintain source.  This allows automatic reuse down to the 
statement level as the software gives every statement a 
content-based name appended with an index to insure 
uniqueness.  This means that only a single copy of every 
statement exists.  Instances of its use occur as named 
references.  Thus "all" source is "included" source.

There's more much more.  But that's enough for now.