Page 200 - DCAP506_ARTIFICIAL_INTELLIGENCE
P. 200
Artificial Intelligence
Notes Objectives
After studying this unit, you will be able to:
Understand the concerting English to prolog facts
Discuss the goals execution and prolog terminology
Illustrate the variables, control structures and arithmetic operators
Understand the concept of matching, backtracking and lists
Discuss the input/output and streams
Introduction
Programming Languages in Artificial Intelligence (AI) are the major tool for exploring and
building computer programs that can be used to simulate intelligent processes such as learning,
reasoning and understanding symbolic information in context. Although in the early days of
computer language design the primarily use of computers was for performing calculations with
numbers, it was also found out quite soon that strings of bits could represent not only numbers
but also features of arbitrary objects. Operations on such features or symbols could be used to
represent rules for creating, relating or manipulating symbols. This led to the notion of symbolic
computation as an appropriate means for defining algorithms that processed information of
any type, and thus 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.
14.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 subsymbolic 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 proto-typing). 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).
Rather, 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
194 LOVELY PROFESSIONAL UNIVERSITY