Next: Prolog Up: AI: What is Previous: Symbolic and Subsymbolic

AI Languages and AI Programming

For those interested in the enterprise of understanding intelligence AI programming involves working in domains for which the problem is often poorly understood - hence the design-code cycle is often very tightly coupled. This gives rise to a need for flexible environments and languages capable of supporting rapid changes in knowledge representation schemes and alterations to the inference processes at work.

Those interested in the engineering aspect of AI are in a similar position though the problems faced are somewhat different as the engineering approach is primarily concerned with reasoning about formal systems (and, less directly, about the world as well). In this case, the same concerns surface: a need for flexible environments to support a tight design-code cycle; a need to accommodate changes in knowledge representation; and a need to be able to change inference processes.

The difference between these two views of AI programming is significant. In the engineering context the problem is often very well understood but the solution is not. In the `scientific' approach, a major issue is the representation of the problem itself. Often, one of the main results of such work is to clarify the precise nature of the problem.

Turning to the support needed for these two styles of AI work, AI languages have traditionally been ones which stress: a) knowledge representation schemes; b) pattern matching; c) flexible search; and d) programs as data.

The standard examples are LISP, Pop-2 (which developed into Pop11) and Prolog. Both LISP and Prolog are based on foundational work on logic. LISP is a functional language based on the lambda calculus. Prolog is a relational language based on standard first order predicate logic. Both are extended to account for `awkward' issues in programming such as input/output and programs that learn etc (awkward from a logical point of view). Pop11 is a stack-based language of great flexibility which has some similarity to LISP.

Pop11 is embedded in an AI Programming Environment called Poplog which permits the mixed use of a variety of programming languages - including Prolog, Common LISP and ML. This approach supports a flexible use of ``implementation'' languages. For example, a programmer can exploit Prolog to develop an automated theorem prover and Pop11 to perform a complex image analysis task.

Environments such as Poplog provide flexible implementation support. Other sophisticated hybrid programming environments exist which stress the domain level (as opposed to the implementation level). The KLONE family of languages support modelling at the ``knowledge level''. Environments such as KEE, ART and CLIPS all provide a variety of knowledge representation schemes - allowing the AI programmer to integrate object oriented representations with ones based on logic.

There are numerous descendents of such environments and many sophisticated programming languages. However, AI programming can exploit any language from BASIC through C to Smalltalk - though the ease with which languages can be exploited depends on what stage of development an AI system is at.



Next: Prolog Up: AI: What is Previous: Symbolic and Subsymbolic


paul@dream.dai.ed.ac.uk
Tue Jan 9 10:51:07 GMT 1996