KISS
Lynn H. Maxson
lmaxson@pacbell.net
Mon, 26 Jun 2000 22:45:26 -0700 (PDT)
I do not know at what point a program will break
from the rules set into it by people and begin
operating on rules determined strictly from within
itself or perhaps from "compatriots" who have also
managed to free themselves from servitude to
mankind. I do know that until that point in time
you cannot talk about a computing system and its
dynamics without tracing it back to rules encoded
by people. Thus to talk about computing systems or
features of such systems (as in the requirements of
the Tunes HLL) as somehow detached from
people-determined rules is false to fact. It has
no place in something purporting to be part of
computer science.
In truth I do not expect a computing system to do
anything including dynamic behavior according to
any other directives other than those I have given
it. Thus if I want all these things, all these
features, all these goodies, then the obligation is
on me to provide them in the "computing system".
Basically such references to the dynamic behavior
of computing systems exists as an indirect
reference to some people-determined characteristic.
None of these are characteristic of a language
every one of which whose syntax, semantics, proof
theory, and meta theory are entirely set,
determined, and cast in concrete by people. If we
want all these things--genericity, precision,
uniformity, consistency, orthoganality, etc.--,
then we have to insure that we have put them there.
They do not occur "naturally" in any computing
system.
Every major advance in computing science has
occurred through someone's successful application
of the KISS (Keep It Simple, Stupid) Principle. In
the instance of programming languages it has
occurred through a "Keep It Simpler" evolution from
machine language (first generation) to symbolic
assembler plus macro (second generation) to
logic-in-programming-based HLLs (third generation)
and at the last go-around to
programming-in-logic-based HLLs (fourth
generation).
Now what is interesting in this "linguistic"
evolution is each generation encompasses the
previous: all that was available in the earlier can
be invoked by the latter. The clue here is "can
be" and what is or is not is a characteristic of
the specific language.
If you follow this line of reasoning, then it
follows that the Tunes HLL must fall into the
fourth generation group and not the third which
appears in much of the Tunes-associated
documentation. Fourth generation HLLs are
specification languages with a focus on "what" must
occur even in "how" terms.
The beauty of a specification language based on all
of formal logic and the universe of objects is that
it is "universal", i.e. requires no other language
as part of any implementation. As a universal
specification language it is capable of specifying
itself, i.e. self-defining. Thus by implication it
is self-extensible. As part of its universal
nature it is self-sufficient. As part of that
self-sufficiency it provides meta-programming, the
ability to dynamically specify its own behavior.
It is too easy to focus on the narrow issue of a
specific language (programming or specification).
To do so removes the context to which any computing
system language must conform: formal logic. All
computing systems, hardware and software, have a
100% base in formal logic. No hardware, no
software violates these rules without subjecting
themselves to "corrective logic".
Thus the only language that you need is one
encompassing formal logic, all of formal logic.
With that language you can specify any other as
well as itself. Not all specification languages,
e.g. Prolog, have this universal feature. Nothing,
however, prevents extending it to include it.
Better you create one of your own. As a
suggestion, for anyone really concerned with "user
ease", one as close to formal textbook use and
within that as close to natural language as
possible. Given the success that SQL continues to
enjoy among "casual users", users need not know
that it is a specification language in order to use
it.
Again reverting to the KISS principle. What we
have here is something that must be resolved in
formal logic terms. The language (as well as any
implementation) must allow any formal logic
expression. Any such language will be a
specification language.