num_pages: 466
description: 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 Gdel 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 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
language: English
title: Computability and Complexity: From a Programming Perspective
publisher: The MIT Press