Proposals
Lynn H. Maxson
lmaxson@pacbell.net
Wed, 28 Jun 2000 15:12:56 -0700 (PDT)
David Hilvert wrote:"I must say that I am somewhat
skeptical of the practicality of generating all
possible implementations of a specification.
Perhaps you could clarify what you mean or go into
more detail. I may have misread what you wrote."
Apparently skeptics abound.<g> While I think I
have addressed this in another response, let me
restate it here. The only time that this occurs is
when translating from the lowest (raw material)
level of the machine-independent specifications
into their machine-dependent ones: machine code
generation.
In truth that's what occurs in every compiler and
interpreter today except that their generated code
comes from a discovery process outside the system.
While in that discovery process they may find more
than one way to do something, they will look at
their choices and select one for use by the
compiler or interpreter.
The point is that their discovery process is not
exhaustive (even though for some in the profession
it has evolved over quite a period of years). What
they discover then is more related to chance, to
art, than to science. That means the consumers of
those products become "innocent" victims.
IBM, for example, has its compilers (C/C++, Cobol,
PL/I) translate the source into a common
"intermediate", machine-independent code. This
code in turn becomes the source for optimization on
a given target machine. Its language developers
are responsible for accuracy only to the level of
the intermediate code. Its optimizer developers
assume responsibility for translating the
intermediate code to target machine/operating
system code.
That they don't have an exhaustive true/false
process accounts for changes that do occur in their
optimizing choices over time. The question I would
raise is "Why does the current system which is so
expensive in terms of money and time regarded as
"practical?". If I can on the one hand
automatically generate all the logically equivalent
possible translations from a primitive operator
plus operands to machine code, in the manner (and
cost) in seconds, automatically test them in terms
of performance and address space, and select the
one in that contextual instance which is optimum,
why is that not considered practical?
I have not invented anything. That's how AI (both
rule-based and neural nets) expert systems work.
That's how Prolog works. That's how SQL works.
The key, of course, lies in writing the
specifications for the logic engine to do the
translation. In the system I propose the machine
code (the instruction) exists as a specification as
any other. The machine-dependent versus
-independent does not exist within the context of
the specification: they look and act alike.
I subscribe to a number of trade journals like the
C/C++ User Journal, Software Development, and
others. It would seem almost monthly an article
appears as a "warning" to express something in this
way instead of that. If you have followed another
response I received from Kyle Lahnadoski, then you
know that he has discovered this in his experience
with Oracle SQL.
I would suspect that every one of these is
traceable to a decision made by an implementer on
"behalf" of a user. In my mind with logic
programming we can end getting different runtime
results from logically equivalent source. If you
want to minimize what a user has to write as close
to his own way of thinking as possible and not be
"punished" for implementation nuances, then how
better than in a specification language.
In it he need not be concerned with the order of
his writing. He can meander to his hearts content
as "thoughts, conditions, relations, goals" occur
to him. He only has to have a "complete set" of
them.
I don't belittle the programmer due to his comfort
zone with declaratives nor the user whose comfort
zone excludes them. To me both are users. I'm not
in the business of dictating their tastes. I'm in
the business of "understanding" their expressions
and with minimal input on their part attempt to
produce an executable.
If I could do it with natural language, I would.
Otherwise I will select something as close to it as
possible, hoping at some time in the future I will
be able to cross that barrier and thus serve them
better. As much as you admire Slate and no matter
how often I read and re-read the referenced
material, I don't make a connection between it and
a user's comfort zone.
I appreciate the tone of your response. This is
the only forum in which I have been flamed upon,
called "uneducated", and dismissed as not worthy of
the time involved. I don't have ideas that are
better than anyone else's. That judgment rests
upon how well they meet the tests against others.
Having long promoted an egoless discussion
environment, I was unprepared for the delicate egos
and in combination with my heavy footsteps.<g> I
do apologize for not having tread more carefully.
I keep trying to do better, but it still takes two
to tango and only one to tangle. In truth I do
prefer the former to the latter.
It will take science a while to accept that the
world is made of objects and not processes. They
have the mistaken assumption that processes
dominate and that objects are formed from their
activity. I just toss this in as it seems that
this is not one of those issues open for complete
rethinking.<g>