Page 78 - DCAP310_INTRODUCTION_TO_ARTIFICIAL_INTELLIGENCE_AND_EXPERT_SYSTEMS
P. 78
Introduction to Artificial Intelligence & Expert Systems
Notes could be used for simulating human intelligence. Soon it turned out that programming with
symbols required a higher level of abstraction than was possible with those programming
languages which were designed especially for number processing, e.g., Fortran.
5.1 AI Programming Languages
In AI, the automation or programming of all aspects of human cognition is considered from its
foundations in cognitive science through approaches to symbolic and sub-symbolic AI, natural
language processing, computer vision, and evolutionary or adaptive systems. It is inherent to
this very complex problem domain that in the initial phase of programming a specific AI
problem, it can only be specified poorly. Only through interactive and incremental refinement
does more precise specification become possible. This is also due to the fact that typical AI
problems tend to be very domain specific; therefore heuristic strategies have to be developed
empirically through generate-and-test approaches (also known as rapid prototyping). In this
way, AI programming notably differs from standard software engineering approaches where
programming usually starts from a detailed formal specification. In AI programming, the
implementation effort is actually part of the problem specification process. Due to the “fuzzy”
nature of many AI problems, AI programming benefits considerably if the programming
language frees the AI programmer from the constraints of too many technical constructions
(e.g., low-level construction of new data types, manual allocation of memory).
Did u know? A declarative programming style is more convenient using built-in high-
level data structures (e.g., lists or trees) and operations (e.g., pattern matching) so that
symbolic computation is supported on a much more abstract level than would be possible
with standard imperative languages, such as Fortran, Pascal or C. Of course, this sort of
abstraction does not come for free, since compilation of AI programs on standard Von
Neumann computers cannot be done as efficiently as for imperative languages.
However, once a certain AI problem is understood (at least partially), it is possible to reformulate
it in form of detailed specifications as the basis for re-implementation using an imperative
language. From the requirements of symbolic computation and AI programming, two new
basic programming paradigms emerged as alternatives to the imperative style: the functional
and the logical programming style. Both are based on mathematical formalisms, namely recursive
function theory and formal logic. The first practical and still most widely used AI programming
language is the functional language Lisp developed by John McCarthy in the late 1950s. Lisp is
based on mathematical function theory and the lambda abstraction. A number of important and
influential AI applications have been written in Lisp so we will describe this programming
language in some detail in this article. During the early 1970s, a new programming paradigm
appeared, namely logic programming on the basis of predicate calculus. The first and still most
important logic programming language is Prolog, developed by Alain Colmerauer, Robert
Kowalski and Phillippe Roussel. Problems in Prolog are stated as facts, axioms and logical rules
for deducing new facts.
Notes Prolog is mathematically founded on predicate calculus and the theoretical results
obtained in the area of automatic theorem proving in the late 1960s.
72 LOVELY PROFESSIONAL UNIVERSITY