Nicht-Turing-vollständige Sprachen bieten einen großen Vorteil gegenüber Turing-vollständigen Sprachen, da sie viel besser analysierbar sind und daher viel breitere Optimierungsmöglichkeiten bieten. Sie werden jedoch kaum verwendet und die Turing-Vollständigkeit wird tatsächlich als gutes Feature verkauft.
Gibt es heute gängige nicht-Turing-vollständige Sprachen, die für die allgemeine Programmierung entwickelt wurden?
programming-languages
turing-completeness
MaiaVictor
quelle
quelle
Antworten:
Es gibt heute keine gängigen Mehrzweck-Nicht-Turing-Vollsprachen. Es gibt jedoch mehrere nicht Turing-vollständige domänenspezifische Sprachen. ANSI SQL, reguläre Ausdrücke, Datensprachen (HTML, CSS, JSON usw.) und S-Ausdrücke sind einige bemerkenswerte Beispiele.
Es gibt keinen wirklichen Vorteil für Mehrzweck-Nicht-Turing-Vollsprachen. Der "viel besser analysierbare" Aspekt, von dem ich annehme, dass er eine Anspielung auf den Satz von Rice ist, trifft zu, ist jedoch für Sprachen, die auf mehrere verschiedene Anwendungsbereiche abzielen, nicht sehr sinnvoll. Andere Anforderungen haben Vorrang. Die Flexibilität der Vollständigkeit von Turing ist viel wichtiger als ihre Komplexität. Bei Programmiersprachen geht es wie bei jeder anderen Software um Kompromisse.
Bei domänenspezifischen Sprachen ist dies möglicherweise umgekehrt. Wenn Sie nicht "eine Sprache erstellen, um alle zu beherrschen", können Sie nur die Funktionen implementieren, die für den spezifischen Zweck Ihrer Sprache sinnvoll sind. Und meistens gehört die Vollständigkeit von Turing nicht dazu.
quelle
Der Grund, warum unvollständige Sprachen nicht zum Mainstream gehören, ist, dass es einfach ist, eigene Sprachen zu implementieren, wann immer Sie sie benötigen und wie auch immer Sie sie benötigen. Ein interessantes Beispiel ist das Bitcoin-Skript: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp
quelle