Some reflections on AI programming (coffee break history)

LISP and AI programming

Lisp was conceived of as a language for symbolic computation and became the main “AI” language, especially for expert systems, NLP and other types of Pattern Directed Inference Systems. AI, at the time when the first LISP was implemented (John McCarthy 1960), was very different from the AI that is in vogue today which is strongly numerical.

Because LISP was designed for symbolic computation it has a rich set of language features. For instance, LISP doesn’t differentiate between code and data. Just as in some modern languages where everything is an object, in LISP, everything is a list. This means that function calls, function definitions and whole programs are represented as lists and can be manipulated like data. In addition, LISP allows you to extend the language in a way that makes it easier to write code for solving real world problems. Eventually, LISP evolved into a language well suited to building applications requiring a mix of both symbolic and numeric AI but was never accepted as a main stream language.


Symbolic AI, relies heavily on pattern matching and the rich features of the LISP language. Numeric AI, is essentially linear algebra and requires sound scientific and mathematical libraries. Good numerical libraries are available today for many languages but pattern matching and the necessary language features are not. This means that not all the techniques used during the early days of AI are readily accessible today.

These days, LISP has lost ground to a number of programming languages such as R, MATLAB, and Python. Out of these languages, Python is rising in popularity because it comes with very strong numerical libraries to support modern approaches to AI even though it lacks the language features of LISP. Python is also easy to learn and ideal for building web, business and scientific applications. Not to forget multi-core computing.

Multi-language Programming Environments – 1980s

The need to combine both symbolic and numeric algorithms lead to the creation of POPLOG, a multi-language programming environment. POPLOP was used heavily during the ALVEY program which was the UK’s response to the Japanese 5th Generation Project. POPLOG allowed applications to be built with multiple programming languages. Some of the languages supported where:

The POPLOG environment essentially made it easy to call functions written in any of the above languages from within a single program. This made it easy to build applications without having to rewrite too much code.


While LISP and it’s modern day derivatives survive, there are no environments like POPLOG that make it easy to do mixed language programming and therefore exploit the code bases of all the above languages and their unique features. Such an environment would be advantageous and an excellent platform for building intelligent systems that can utilize the full breadth of programming knowledge amassed over the last half a century.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s