Turing-complet

Un article de Wikipédia, l'encyclopédie libre.
Aller à : Navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Turing (homonymie).

L'adjectif Turing-complet[1] s'applique en informatique et en logique à un système formel ou formalisable ayant la force de calcul des machines de Turing, c'est-à-dire un système dans lequel on peut coder les machines de Turing. Si de plus, ce système peut être codé par celui des machines de Turing, on dit qu'il est équivalent aux machines de Turing.

Ainsi un langage informatique est dit Turing-complet et nommé langage de programmation[2],[3], s'il permet de représenter toutes les fonctions calculables au sens de Turing et Church (nonobstant la finitude de la mémoire des ordinateurs). Tous les langages usuels de programmation (C, C++, Java, ...) sont Turing-complets. En revanche, ce n'est pas le cas pour certains langages dédiés au traitement de problèmes spécifiques, comme le langage SQL qui n'est devenu complet qu'à partir de 1999 quand il a été possible d'écrire des requêtes récursives. Le langage TeX, dédié à la composition de documents, est également Turing-complet.

[modifier] Voir aussi

[modifier] Note

  1. En toute rigueur on devrait dire complet au sens de Turing, mais c'est la traduction littérale (et le calque syntaxique aussi) de l'expression anglo-saxonne Turing complete qui a prévalu.
  2. (en) John C. Mitchell ,Concepts in programming languages, Cambridge University Press, 2003, p.14 [1] «The fact that all standard programming languages express precisely the class of partial recursive functions is often summarized by the statement that all programming languages are Turing complete.»
  3. (en) Bruce J.MacLennan, Principles of Programming Languages, Introduction : What is a programming language?, Oxford University Press, 1999. «A programming language is a language that is intended for the expression of computer programs and that is capable of expressing any computer program. This is not a vague notion. There is a precice theorical way of determining whether a computer language can be used to express any program, namely, by showing that is equivalent to a universal Turing machine.»
Outils personnels
Espaces de noms
Variantes
Actions
Navigation
Contribuer
Imprimer / exporter
Boîte à outils
Autres langues