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>