[comp.lang.prolog] Balance between theory and implementation

vanroy@pisces.uucp (06/28/90)

  Theoreticians need feedback from experiments to see if their ideas are
practical.  Otherwise logic programming will become a branch of mathematical
logic, with no regard to computability or efficiency.
  For example, there has been much good theoretical work on dataflow analysis 
for Prolog, but few implementations.  Hence there is no data (except for a few
small trivial examples) to show whether any of the approaches is effective, or
whether they are a waste of time.  This area is still largely unexplored.
  There is a common notion that implementation is somehow lower than theory,
which is somehow nobler.  This notion is misguided.  Both theory and
implementation are human activities, requiring the full range of human
creativity.  Without implementation to guide it, theory is blind.
 
Sincerely,
  Peter Van Roy

jha@lfcs.ed.ac.uk (Jamie Andrews) (07/02/90)

In article <37305@ucbvax.BERKELEY.EDU> vanroy@pisces.uucp () writes:
>  Theoreticians need feedback from experiments to see if their ideas are
>practical.  Otherwise logic programming will become a branch of mathematical
>logic, with no regard to computability or efficiency.

     I agree.  Unfortunately, the life-cycle of an idea in logic
programming (and programming languages generally) seems to be
very long, at least in terms of work-years.

     To really test an idea, you need lots of people to program
in a language incorporating the idea.  They won't do so unless
the implementation is pretty good.  So you need people to work
on the language for quite a while before getting it into a state
where people will be able to test it on non-trivial problems.

     Masters' students probably can't be convinced to do this
kind of thing, and PhD students definitely can't.  The
researcher can't do it because no one would want to publish a
paper about "just another implementation", and the danger would
be that he or she would get behind in other research.

     So the only way to test ideas is to mount large research
projects to employ people to develop, test, and use the language
with the idea.  By the time all this is done, people are so
committed to the project that they are less likely to admit that
the idea actually did fail on testing.

     Maybe what we need is Languages Agencies which, like
astronomical and space research agencies, accept proposals for
little ideas to be incorporated into experimental languages, and
bigger proposals for larger projects.  The Agency would build
the language (= spaceship) incorporating all the little ideas
(= experiments), test them out on various problems (= run the
experiments), and tell people how each feature performed
(= distribute the data to the proposers).

>  There is a common notion that implementation is somehow lower than theory,
>which is somehow nobler.  This notion is misguided.  Both theory and
>implementation are human activities, requiring the full range of human
>creativity.  Without implementation to guide it, theory is blind.

     Indeed.  Computer science is ultimately about the human
activity of programming, and needs experiment to supplement
the theoretical activity.

--Jamie.		Original material copyright (c) 1990 by Jamie Andrews;
  jha@lfcs.ed.ac.uk	for distribution only on unmoderated USENET newsgroups.
   "The heat was hot and the ground was dry but the air was full of sound"