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