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>