Proposals

Lynn H. Maxson lmaxson@pacbell.net
Wed, 12 Jul 2000 01:47:05 -0700 (PDT)


"I would like to know your opinion on Japan's Fifth 
Generation Computing Project (1982 to 1992). There 
don't seem to be many good references online, which 
is understandable given that it predated the web."

I will read the reference you gave.  I can, 
however, offer you an opinion.<g>  It was a great 
way for academics to waste taxpayers monies.  Not 
that it did not produce jewels here and there, but 
for the most part became no more than an academic 
"port barrel".  In my opinion they blew it, are 
blowing it, and will continue to do so.

The point is that there is no denying the value of 
logic programming nor the stability of existing 
logic programming systems be they AI expert, SQL, 
Prolog, or (stretching a point in terms of an 
implementation language of a higher level function) 
LISP.  It works.  It worked before they ever 
expended that amount of money.

The problem lies in the expense of writing and 
maintaining software.  The question is why is it so 
expensive, why so human labor intensive?  Why, 
given our technical knowledge on process 
improvement, haven't we automated more (or  all) of 
the clerical effort?

As we both understand logic programming and 
specification languages based on formal logic, we 
now have the ability to write specifications, to 
use them as input to CASE-like processes to produce 
accurate analysis and design documents, and then as 
in the example of Prolog generate standalone 
executable code.  The only writing involved is that 
of specifications, eliminating (by automating) 
programming (and programmers) entirely.

If we now accept our specifications from a common 
source repository and not separate source files and 
we eliminate the restriction of scope of 
compilation to a single external procedure, we can 
input all the specifications for an operating 
system or application system as a single unit of 
work producing multiple standalone executables.

So we change two current restrictions on 
compilation, one with respect to incorporating all 
the software development process--specification, 
analysis, design, construction, and 
testing--instead of only the construction stage 
currently, another in using a single specification 
language only, and one tool written in the language 
(as well as the language itself) and based on logic 
programming, and what do you have?  You have the 
means of a "50 times time reduction, 200 times cost 
reduction" at a minimum in software development and 
maintenance.

Once you grasp that, particularly of what gets 
incorporated within the single interactive tool, 
you can see what a horrible waste occurred not only 
in the fifth generation project but continued in 
our pursuit of the OO "dream".  No one who examines 
this, from the use of a specification language to 
the production of CASE results (analysis and 
design), to construction, finally to testing, using 
logic programming is going to come to any other 
conclusion.

As disasterous as the problem of spiraling software 
costs and time are, they are nothing compared to 
the disaster which will accompany this solution.  
It will devastate the current IT population and 
frankly every current software vendor.  You have to 
be careful what you ask for as you might get it.<g>

The fifth generation project began with a desire to 
revolutionize the production and maintenance of 
software.  That capability existed prior to its 
establishment.  Nowhere in any of its jewels do you 
find this solution, although every piece of it 
exists in some (accepted) working form.

Now the question really is why?  Why did they not 
produce a solution?  They pursued every other 
esoteric goal except the one relating to improving 
the software development/maintenance process.  
Offering it as a solution could have occurred 
immediately at the start of the project and saved 
them nearly 50 billion dollars.  Now who in 
academia would want to see that scenario?<g>

*******

I appreciate your remarks relative to SELF 
performance.  I disagree on what should occur once 
you slip under the covers: what occurs in software 
after you process the source input.  There is no 
other purpose in a language than its human use by 
human beings.  No computer, no software in this 
galaxy cares one whit about communicating with 
humans.  That's a human thing.  Therefore once you 
get by this shell you ought to let software do what 
it does best.  In fact what it only does: 
procedural logic.

You have all these constructs which you impose for 
"human" reasons in an environment in which they 
have no meaning and reflected in performance as 
unnecessary overhead.  I understand this is very 
difficult to accept, given that OO is in effect 
branded, inculcated into every unsuspecting victim.  
Though we may continue to infect humans in the name 
of some higher good, computers and software have 
never shown any threat to warrant such 
punishment.<g>  I say let's free them from our 
chains that bind us and let them give us the best 
assembly language performance possible.

You see it doesn't make any difference how many 
objects, how many classes, how much inheritance, or 
how much message passing you incorporate into 
writing in a language.  When it gets to the 
language of the computer it's pure procedural.  
More to the point imposing a human constraint on a 
computer is simply not necessary.  It has done 
nothing to deserve such contempt.  When you think 
of it, neither have we.<g>