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.