Est SQL ou même TSQL Turing?
Ce est venu au bureau aujourd'hui. J'ai pas l'intention de faire une telle chose, mais en théorie, pourriez-vous écrire un compilateur en SQL? À première vue, il me semble qu'elle est turing complet, bien que très lourd pour de nombreuses classes de problèmes.
Si elle n'est pas turing, ce qui exigerait-il le devenir?
Note: je n'ai aucune envie de faire quelque chose comme écrire un compilateur en SQL, je sais que ce serait une chose stupide à faire, donc si on peut éviter que la discussion, j'apprécierais.
Vous devez vous connecter pour publier un commentaire.
Il s'avère que SQL peut être Turing, même sans une véritable "script" extension comme le PL/SQL ou PSM (qui sont conçus pour être vrai langages de programmation, c'est un peu de la triche).
Dans cette série de diapositives Andrew Gierth prouve qu'avec de la CCE et le Fenêtrage SQL Turing, par la construction d'une cyclique système de tag, qui a été prouvé pour être Turing. Le CTE fonction est le plus important, néanmoins, il vous permet de créer nommé sous-expressions qui peuvent se référer à eux-mêmes, et de ce fait de manière récursive à résoudre les problèmes.
La chose intéressante à noter est que le CCE n'a pas vraiment été ajouté à tour de SQL dans un langage de programmation -- de mettre simplement déclaratif langage d'interrogation dans un plus puissant déclarative langage d'interrogation. Un peu comme en C++, dont le modèle s'est avéré être Turing même s'ils n'ont pas pour but de créer un méta-langage de programmation.
Oh, la Ensemble de Mandelbrot en SQL exemple est très impressionnant, aussi bien 🙂
Le TSQL Turing parce que nous pouvons faire un BrainFuck interprète en TSQL.
BrainFuck interprète dans SQL - GitHub
Le code fourni fonctionne en mémoire et de ne pas modifier une base de données.
http://channel9.msdn.com/forums/TechOff/431432-SQL-Turing-Completeness-question/
Est une discussion à ce sujet. Une citation:
PL/SQL et T-SQL certainement qualifier que les langages de programmation, si SQL92 lui-même qualifie le débat est ouvert. Certaines personnes prétendent que n'importe quel morceau de code qui indique à l'ordinateur que faire se qualifie comme un langage de programmation; par cette définition SQL92 est un, mais si, par exemple, est HTML. La définition est assez vague, et c'est de l'omi, une chose inutile d'argumenter.
À proprement parler, le SQL est maintenant une turing langue, parce que la dernière version de SQL standard inclut les "Persistante Stockées les Modules" (Mps). En bref, un PSM est la version standard de la PL/SQL Oracle (et d'autres incidents de procédure extensions de courant SGBD).
Avec l'inclusion de ces Mps, SQL est devenu turing
ANSI instruction select, comme défini à l'origine dans SQL-86, n'est pas turing, car il se termine toujours (sauf pour les expressions cte et seulement si l'application prend en charge de manière arbitraire profondeur de récursivité). Il n'est donc pas possible de simuler n'importe quelle autre machine de turing. Les procédures stockées sont turing, mais c'est de la triche 😉