Ich frage mich, ist Notationssprache Turing-Complete ?
Mein erster Gedanke ist, dass es Loops in der Notenschrift gibt, aber es gibt keine Möglichkeit, bedingte Zweige zu schreiben, oder?
Ich bin kein Musiker, also kann vielleicht jemand helfen, die Lücken zu füllen?
turing-completeness
Klaim
quelle
quelle
Antworten:
Ja, wenn Sie ein paar Anweisungen zur Umsetzung zugeben - ungewöhnlich, aber nicht unbekannt.
Sie können ein Stück dann als Choon interpretieren , was Turing-complete ist. Der Interpret ist die Erinnerung: Er muss sich die Anzahl der Noten merken, um die das Stück gerade transponiert ist, und alle Noten, die er bisher gespielt hat. Offensichtlich ist es nur für einen Computer oder vielleicht einen Gelehrten machbar.
Aus dem Choon-Handbuch:
Ein John Cage ist nur eine Pause , eine Stimmgabel ist (ungefähr) ein Segno und ein Marker ist ein Segno. Ich nehme an, die Stimmgabel könnte von einem zusätzlichen Interpreten gespielt werden, auf den der Hauptinterprete reagiert, aber das Prinzip ist dasselbe.
quelle
Um die Vollständigkeit zu gewährleisten, sind mindestens drei Dinge erforderlich: eine Endlosschleife, ein bedingter Sprung (if-then) und eine Möglichkeit, die Ergebnisse von Berechnungen irgendwo im Speicher abzulegen. Selbst wenn die Notenschrift bedingte Sprünge hatte, hat sie keinen Zustand, also nein, sie ist nicht Turing-vollständig.
quelle
Der Standardnachweis für die Vollständigkeit einer Sprache in Turing besteht darin, eine Turing-Maschine in dieser Sprache zu schreiben. Dies beweist, dass es eine Äquivalenz zwischen der Sprache (normalerweise eine Teilmenge der Sprache) und der Turing-Maschine gibt.
Der Begriff "Musikalische Notation" ist etwas rutschig. Es wird viel standardisierte Gravur verwendet. Jedoch. Es gibt umschlagdrückende Komponisten, die alle möglichen verrückten Sachen auf Papier schreiben.
Nehmen wir an, Sie möchten sich auf die Teilmenge der Musiknotation konzentrieren, die als Standard für Finale, Sibelius oder andere gängige Gravurwerkzeuge gilt.
Damit.
Für Python (oder C oder was auch immer) definieren Sie die Symbole, das Band, die Übergangsregeln und die verschiedenen Aktionen, mit denen das Band aktualisiert wird, um Statusänderungen und Bandbewegungen widerzuspiegeln. Sie lesen und schreiben Symbole auf das Band.
Mit "Musiknotation" müssen wir Symbole und das zustandsbehaftete Band, die Übergangsregeln und die verschiedenen Aktionen definieren, die das Band aktualisieren.
Was uns fehlt, sind ein statusbehaftetes Band und Regeln, die den Musikern mitteilen, wie sie auf Symbole auf dem Band reagieren und wie sie dieses Band aktualisieren.
In gewissem Sinne könnten die Geräusche, die in der Luft herumfließen, das zustandsbehaftete Band sein. Aber. Es gibt keine einfache Möglichkeit, das Band zurückzuspulen. Dieser Mangel an Zurückspulen bedeutet, dass der Darsteller eine Art privates "Band" aufbewahren müsste.
Dies gelangt außerhalb der Notenschrift und in einige andere außermusikalische Anweisungen an den Interpreten.
quelle
Ein Großteil der Notation ist offen für Interpretationen, und Anweisungen in natürlicher Sprache sind ein anerkannter Aspekt der Musiknotation - und waren in den meisten, wenn nicht in der gesamten Geschichte der westlichen notierten Musik zu finden.
Fermaten hängen per definitionem vom Ermessen des Interpreten ab, was bedeutet, dass es von seinem eigenen Zustand abhängt, der fast immer durch die Musik in Verbindung mit externen Faktoren verändert wird - dies wirft also einige Fragen zur Staatenlosigkeit der Musiknotation auf.
Canon a 2 per Tonus aus Bachs musikalischem Angebot ist ein Stück in einer Endlosschleife, dessen Tonalität sich jedes Mal um einen Schritt erhöht, solange das Stück aufgeführt wird.
In jüngerer Zeit ist es üblich, Anweisungen wie "Wiederholung für jeden Solisten" in notierten Versionen von Jazzstücken wie Dave Brubecks Take Five zu sehen .
Abgesehen von inhärent willkürlichen Aspekten wie den Fermaten, wie die anderen Antworten besagen, ist die Musiknotation mit nichts als den allgemeinen Symbolen wahrscheinlich nicht vollständig.
quelle
Es hat nichts mit Turing complete languages zu tun, da es sich um eine beschreibende Sprache handelt. Es gibt keine Befehle zum Berechnen oder Ändern von Daten, keine Zustände, keine Eingaben, keine Ausgaben außer dem Ergebnis der Beschreibung.
Abhängig vom Eingang gibt es auch keine bedingten Sprünge. Wenn Sie alle Sprünge auflösen, erhalten Sie eine lineare Struktur, keinen Baum. Alle "Programme", die mit dieser Sprache modelliert werden können, sind also linear ohne irgendwelche Schleifen oder Sprünge.
quelle