"Neil Jones is one of the precious few computer scientists with
great expertise and leadership roles in both formal methods and
complexity. This makes his book especially valuable."
-- Yuri Gurevich, Professor of Computer Science,
University of Michigan
Computability and complexity theory should be of central concern to
practitioners as well as theorists. Unfortunately, however, the field
is known for its impenetrability. Neil Jones's goal as an educator
and author is to build a bridge between computability and complexity
theory and other areas of computer science, especially programming.
In a shift away from the Turing machine- and Gödel
number-oriented classical approaches, Jones uses concepts familiar
from programming languages to make computability and complexity more
accessible to computer scientists and more applicable to practical
programming problems.
According to Jones, the fields of computability and complexity theory,
as well as programming languages and semantics, have a great deal to
offer each other. Computability and complexity theory have a breadth,
depth, and generality not often seen in programming languages. The
programming language community, meanwhile, has a firm grasp of
algorithm design, presentation, and implementation. In addition,
programming languages sometimes provide computational models that are
more realistic in certain crucial aspects than traditional models.
New results in the book include a proof that constant time factors do
matter for its programming-oriented model of computation. (In
contrast, Turing machines have a counterintuitive "constant speedup"
property: that almost any program can be made to run faster, by any
amount. Its proof involves techniques irrelevant to practice.)
Further results include simple characterizations in programming terms
of the central complexity classes PTIME and LOGSPACE, and a new
approach to complete problems for NLOGSPACE, PTIME, NPTIME, and
PSPACE, uniformly based on Boolean programs.
Foundations of Computing series
|