[net.ai] AI Programming

DIETTERICH@SUMEX-AIM.ARPA (04/16/84)

From:  Tom Dietterich <DIETTERICH@SUMEX-AIM.ARPA>

I think a major difference between most AI programming and most non-AI
programming is that AI programming usually involves implementing
additional layers of interpretation on top of whatever programming
system is being employed.  Any system that needs to reason about its
own actions, its own assumptions, and so on, requires this extra layer
of interpretation. The kinds of programs that I work on--learning
programs--also need to modify themselves as they run.  This helps
explain why LISP is so popular--it provides very good support for
building your own interpreters: the ability to dynamically define new
symbols, the ability to construct arbitrary binding environments, and
the ability to invoke EVAL on arbitrary expressions.  Perhaps LISP
is best viewed as a interpreter language rather than a programming
language.

  --Tom

aaw@pyuxss.UUCP (Aaron Werman) (04/26/84)

(gensym)

I strongly agree that AI programming tends to be on several levels,
but rather than seeing AI programs as a controller or generator and
and a pragmatic level, I think many AI programs are three levels:
1. organizer, based on feedback from heuristic controller(2)
2. controller, based on results of algorithmic or applicative level(3)
3. worker, playing with real data
	The raison d' might be that most programs <5k statements are
pure applications, programs getting much larger tend to need a single
intelligent controller, while programs in the 20k-100k statement range
(the AI programming thesis level) are in the three level range. All AI
programs bigger than that tend to algorithmic refinements of previous
work, with refiners in terror of changing the basic structure.
			{harpo,houxm,ihnp4}!pyuxss!aaw
			Aaron Werman