[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Aug 24 11:23:32 2003 
Subject:Re: word completion (Was poplog interactive mode - PS -> Syntax editor) 
From:Aaron Sloman 
Volume-ID:1030824.01 


Jonathan L Cunningham writes:

> Date: Sat, 23 Aug 2003 21:17:38 GMT
>
>
 [JLC]
> >> I'd quite like a SPOO-Z too, but it might be harder to implement.
> >>
> >>     SPOO-Z     write the current procedure for me :-)
 [Chris Dollin]
> >
> >Oh, that's easy.
> >
> >    define theCurrentProcedure();
> >        mishap( 'oops, not implemented yet' );
> >    enddefine;
> >
> >Satisfies the spec :-)
 [JLC]
>
> And sometimes surprisingly useful during incremental
> development/debugging of a program with complicated control flow.
>
> Along the same lines, especially if you know the argument list, is
> something like
>
>     define cook(meat, veg1, veg2) -> dinner;
>        [cook called, args are ^meat ^veg1 ^veg2]=>
>        readline() --> [?dinner];
>     enddefine;

I first encountered this when I visited the AI lab at BBN (Bolt
Beranek & Newman) in 1975. They were working on the ARPA speech
project which required developing a very complex (by 1975 standards)
language understanding system, processing audio input, doing
phonetic, morphological, syntactic and semantic analysis in order
to get a machine to understand spoken sentences.

Bonnie Webber explained to me that in order to allow people working
on one part of the system to make progress before another part was
ready they would let humans simulate the not yet implemented parts,
using the technique Jonathan describes.

They called it 'incremental simulation'. They were using Interlisp,
one of the ancestors of Common Lisp. Like Pop-11, Lisp makes that
sort of technique easy to implement.

Moreover instead of just calling readline, the program could allow
the user to invoke the Pop-11 compiler (or interlisp interpreter) to
run arbitrary programs, interrogate data-structures, etc. Sometimes
you need to do that before you type in the result that the
'simulated' procedure should return.

This is what Jonathan was implying by saying that the user could
invoke popready(), since popready starts a new interactive episode
compiling text from the terminal. (When invoked in Ved/XVed instead
of compiling from the terminal it compiles from an 'immediate mode'
Ved buffer.)

[JLC]
> But not nearly as useful as it might look. Strange.

It depends on your software development strategy. If it is mostly
bottom up (build and test simpler things first, then use them in
programs that do more complex things) you will not normally need
incremental simulation mechanisms, expcept occasionally for
debugging.

A variant of the use of popready is allowed for in the poprulebase
system described here:

http://www.cs.bham.ac.uk/research/poplog/newkit/prb/help/poprulebase

Some of the modes of tracing/debugging allow the user to interact
with the current dabatase while the rule interpreter pauses. So you
can add or remove items and then let the program continue, to see
how the rest of the program deals with the new situation.

This could for instance simulate input arriving asynchronously from
a perception module, or a proprioceptive feedback module.

[JLC]
> Similarly, if I ran into the "oops, not implemented" I'd probably stop
> and implement (all of) it.

No doubt.

And thereby put your colleagues in the other software department out
of a job!

Cheers.

Aaron
===
====
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs/ )
School of Computer Science, The University of Birmingham, B15 2TT, UK
EMAIL A.Sloman AT cs.bham.ac.uk   (ReadATas@please !)
PAPERS: http://www.cs.bham.ac.uk/research/cogaff/ (And free book on Philosophy of AI)
FREE TOOLS: http://www.cs.bham.ac.uk/research/poplog/freepoplog.html