Product Design, Manufacturing & Innovation Resources
Maison » Complétude de Turing

Complétude de Turing

1936
  • Alan Turing
Laboratoire d'informatique présentant la complétude de Turing dans les langages de programmation.

(Image générée à titre d'illustration uniquement)

Un système de règles de manipulation de données, tel qu'un langage de programmationUn système est dit Turing-complet s'il peut simuler n'importe quelle machine de Turing à une seule bande. Cela signifie qu'il est universel du point de vue du calcul et qu'il peut être utilisé pour résoudre n'importe quel problème calculable, moyennant suffisamment de temps et de mémoire. La plupart des langages de programmation généralistes sont Turing-complets, ce qui constitue le fondement théorique de leur puissance d'expression.

La complétude de Turing est un concept de la théorie de la calculabilité qui définit la puissance d'un système de calcul. Elle trouve son origine dans l'article d'Alan Turing de 1936 décrivant un dispositif théorique appelé machine de Turing. Cette machine est constituée d'un ruban infiniment long, d'une tête de lecture/écriture capable de se déplacer le long du ruban, et d'un ensemble d'états et de règles de transition. Malgré sa simplicité, une machine de Turing peut effectuer tout calcul pouvant être décrit algorithmiquement. Un langage de programmation ou tout autre système formel est dit « Turing-complet » s'il est capable de simuler une machine de Turing universelle. Cela implique que le langage peut calculer tout ce qui est calculable.

Les conditions essentielles pour qu'un système soit Turing-complet sont la présence de branchements conditionnels (par exemple, les instructions si-alors-sinon) et la capacité de boucler indéfiniment ou récursivement (par exemple, les boucles tant que, pour). Ces constructions permettent au système de prendre des décisions et de répéter des opérations, ce qui est suffisant pour modéliser le comportement d'une machine de Turing, notamment ses transitions d'état et la manipulation de son ruban. La thèse de Church-Turing, un principe fondamental en informatique, postule que toute fonction naturellement considérée comme « calculable » peut être calculée par une machine de Turing. Par conséquent, un langage Turing-complet est, en théorie, capable d'exprimer n'importe quel algorithme.

Cependant, cette puissance théorique a une conséquence importante : le problème de l'arrêt. Turing a démontré l'impossibilité de créer un algorithme général capable de déterminer, pour toutes les entrées possibles, si un programme donné s'arrêtera ou se poursuivra indéfiniment. Cette indécidabilité est une propriété inhérente à tous les systèmes Turing-complets. C'est pourquoi certains langages spécifiques à un domaine sont intentionnellement conçus pour être non Turing-complets. Par exemple, SQL et HTML standard ne sont pas Turing-complets, ce qui garantit la fin de l'exécution de leurs scripts ou définitions et les empêche d'entrer accidentellement dans des boucles infinies, une propriété souhaitable pour les requêtes de bases de données et le rendu de documents.

UNESCO Nomenclature: 1202
- Informatique

Taper

Système abstrait

Perturbation

Incrémentale

Usage

Utilisation généralisée

Précurseurs

  • Kurt Gödel’s work on incompleteness theorems
  • Le développement du lambda-calcul par Alonzo Church
  • Le programme de David Hilbert pour formaliser les mathématiques
  • Le concept d'algorithme remonte à l'Antiquité

Applications

  • langages de programmation à usage général (python, c++, java)
  • systèmes de tableurs avec capacités macro (par exemple, Excel avec vba)
  • Circuits de redstone de Minecraft
  • cellular automata like conway’s game of life
  • quelques extensions SQL avancées avec des expressions de table communes récursives
  • le sous-système de métaprogrammation de modèles C++
  • css3 avec certaines combinaisons html

Brevets:

NA

Idées d'innovations potentielles

En raison du trafic généré par les robots de scraping, actuellement supérieur à 40 000 par jour, ce contenu est réservé aux membres de la communauté.
> Connexion < ou > Registre < (100% gratuit) pour y accéder, ainsi qu'à tous les autres contenus et outils à accès restreint.

En lien avec : la complétude de Turing, la machine de Turing, la théorie de la calculabilité, Alan Turing, la thèse de Church-Turing, le calcul universel, les algorithmes, les langages formels, la décidabilité, le problème de l’arrêt.

Contexte historique

Complétude de Turing

1925
1928
1930
1936
1940
1943
1950
1924
1925
1930
1931
1939
1940
1950
1950

(si la date est inconnue ou non pertinente, par exemple « mécanique des fluides », une estimation arrondie de son émergence notable est fournie)

Inventions, innovations et principes techniques connexes

Les images en pleine résolution et les téléchargements sont uniquement disponibles, et 100% gratuits, pour les membres inscrits.