Complétude de Turing
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
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
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.