[Next]
[Up]
[Previous]
[Contents]
Next: Background
Up: Introduction
Previous: Introduction
  Contents
Names, binding, and scope are
perennial problems in many programming tasks, including
implementing compilers and
interpreters as well as symbolic mathematical tools and theorem proving
systems. Few languages provide any assistance for programming with names,
so programmers must reinvent the wheel every time a new system which makes
use of names is built. This is often a tedious and error-prone process; also,
the resulting programs tend to be more difficult to read and analyze.
Programming language support for key data structures is crucial to
writing clear, optimizable code in traditional
domains such as matrix computations (via arrays), databases (via
records), large-scale interactive systems (via objects), and
algebraic symbolic computation (via ML-style algebraic
datatypes or Prolog-style terms): these features have been standard in
high-level programming languages for decades. The purpose of Prolog is
to provide the same kind of built-in support for names in a practical
logic programming language.
James Cheney
2003-10-23