Les langages complets non Turing offrent un grand avantage par rapport aux langages complets Turing car ils sont beaucoup plus analysables et offrent ainsi des possibilités d'optimisation beaucoup plus larges. Pourtant, ils sont à peine utilisés et l'exhaustivité de Turing est en fait vendue comme une bonne fonctionnalité.
Existe-t-il aujourd'hui des langages traditionnels non complets de Turing destinés à la programmation à usage général?
programming-languages
turing-completeness
MaiaVictor
la source
la source
Réponses:
Il n'y a pas aujourd'hui de langues complètes polyvalentes non Turing. Il existe cependant plusieurs langues spécifiques au domaine complet non Turing. ANSI SQL, les expressions régulières, les langages de données (HTML, CSS, JSON, etc.) et les expressions s sont quelques exemples notables.
Il n'y a pas vraiment d'avantage pour les langages complets non Turing polyvalents. L'aspect "beaucoup plus analysable", qui je suppose est un clin d'œil au théorème de Rice, s'applique mais cela n'a pas beaucoup de sens pour les langages qui ciblent plusieurs domaines d'application différents, d'autres exigences ont priorité. La flexibilité de l'exhaustivité de Turing est beaucoup plus importante que sa complexité. Les langages de programmation, comme tous les autres logiciels, sont tous des compromis.
En revanche, pour les langues spécifiques à un domaine, ce pourrait être l'inverse. Si vous ne construisez pas "une seule langue pour les gouverner tous", vous êtes libre d'implémenter uniquement les fonctionnalités qui ont du sens pour le but très spécifique de votre langue. Et le plus souvent, l'intégralité de Turing n'en fait pas partie.
la source
La raison pour laquelle les langues incomplètes de Turing ne sont pas courantes est qu'il est facile d'implémenter la vôtre chaque fois que vous en avez besoin et quelle que soit la façon dont vous en avez besoin. Un exemple intéressant est le script bitcoin: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp
la source