Gibt es eine vollständige Turing-Programmiersprache, so dass für ein festes Alphabet (z. B. ASCII) jede mögliche Permutation dieser Zeichen ein semantisch gültiges Programm ist, das ausgeführt werden kann?
Wir betrachten Endlosschleifen auch als semantisch gültig.
Ich weiß, dass einige Datenformate wie Markdown eine universelle semantische Gültigkeit besitzen (jede Eingabe ist gültig), aber ich kann mir keine Programmiersprache mit dieser Eigenschaft vorstellen.
Antworten:
Jede Oktettsequenz kann als gültiger Z80-Code interpretiert werden, da keine ungültigen Opcodes oder Argumente vorhanden sind. Ich kann mir vorstellen, dass dies auch für verschiedene andere Prozessoren gilt. Ich persönlich kenne Z80 nur.
Bei solchen Dingen auf niedriger Ebene stoßen Sie möglicherweise auf Fragen, was es bedeutet, "ein Programm auszuführen":
quelle
Solche Fragen zu Programmiersprachen werden fast überall mit Ja beantwortet. Wenn es derzeit keine Sprache gibt, die die angeforderte Eigenschaft hat, können Sie darauf wetten, dass jemand es als Herausforderung ansieht, eine (Spielzeug-) Sprache zu erstellen, die die Eigenschaft hat.
Als Beispiel für eine Sprache, in der jede Permutation der Zeichen des Alphabets syntaktisch gültig ist, ist die Leerzeichen-Sprache , in der das Alphabet der Sprache selbst aus Leerzeichen, Tabulatoren und Zeilenvorschub besteht.
quelle
Warum sich mit Zeichenfolgen (von Zeichen) zufrieden geben? Sie sollten diese Frage in "eine beliebige Reihe von Token" umformulieren. Nicht Bits, Bits sind so computerisch des 20. Jahrhunderts.
Endlosschleifen sind also in Ordnung, sagen Sie. Was ist mit der Division durch Null? Wenn Sie mit Ihrer Definition von gültig nachsichtig genug sind, erhalten Sie möglicherweise ein Ja, aber die meisten Kombinationen wären immer noch bedeutungslos. Ich würde also sagen, dass Sie möglicherweise immer ein technisch gültiges Programm erhalten, aber kaum ein semantisch gültiges Programm.
quelle