Zastanawiam się, czy język notacji muzycznej Turing-Complete ?
Moją pierwszą myślą jest to, że w notacji muzycznej występują pętle, ale nie ma sposobu na napisanie gałęzi warunkowych, prawda?
Nie jestem muzykiem, więc może ktoś może pomóc wypełnić luki?
turing-completeness
Klaim
źródło
źródło
Odpowiedzi:
Tak, jeśli przyznasz się do kilku instrukcji dotyczących transpozycji - niezbyt często, ale nie jest to nieznane.
Następnie możesz zinterpretować utwór jako Choon , który jest kompletny w Turinga. Wykonawca jest pamięcią: muszą pamiętać liczbę nut, o które dany utwór jest obecnie transponowany, i wszystkie nuty, które do tej pory grały. Oczywiście jest to wykonalne tylko dla komputera, a może i uczonego.
Z podręcznika Choon:
John Cage jest tylko odpoczynek , o Kamerton jest (w przybliżeniu) dal segno, a znacznik jest segno. Przypuszczam, że kamerton może być odtwarzany przez dodatkowego wykonawcę, na który główny wykonawca odpowiada, ale zasada jest taka sama.
źródło
Kompletność Turinga wymaga co najmniej trzech rzeczy: nieskończonej pętli, skoku warunkowego (jeśli-to) i sposobu przechowywania wyników obliczeń w pamięci. Nawet jeśli notacja muzyczna zawierała skoki warunkowe, nie ma stanu, więc nie, nie jest kompletna w Turingu.
źródło
Standardowym dowodem kompletności języka jest napisanie maszyny Turinga w tym języku. Dowodzi to, że istnieje równoważność między językiem (zwykle podzbiorem języka) a maszyną Turinga.
Pojęcie „notacji muzycznej” jest nieco śliskie. Stosuje się wiele znormalizowanego grawerowania. Jednak. Są kompozytorzy pchający koperty, którzy piszą na papierze wszelkiego rodzaju szalone rzeczy.
Udawajmy, że chcesz się skoncentrować na podzbiorze notacji muzycznej, który jest uważany za wystarczająco standardowy, aby być częścią Finale lub Sibeliusa lub jakiegoś zestawu narzędzi do grawerowania głównego strumienia.
Więc.
W Pythonie (lub C lub cokolwiek) definiujesz symbole, taśmę, reguły przejścia i różne akcje, które aktualizują taśmę, aby odzwierciedlić zmianę stanu i ruch taśmy, odczytywanie i zapisywanie symboli na taśmie.
Za pomocą „notacji muzycznej” musimy zdefiniować symbole i stanową taśmę, reguły przejścia i różne działania, które aktualizują taśmę.
Brakuje nam stanowej taśmy i zasad, które mówią muzykom, jak reagować na symbole na taśmie i jak ją aktualizować.
W pewnym sensie odgłosy płynące w powietrzu mogą być stanową taśmą. Ale. Nie ma łatwego sposobu przewinięcia taśmy do tyłu. Ten brak przewijania oznacza, że wykonawca musiałby zachować jakąś prywatną „taśmę”.
To wychodzi poza notację muzyczną i inne instrukcje pozamuzyczne dla wykonawcy.
źródło
Znaczna część notacji jest otwarta na interpretację, a instrukcje w języku naturalnym są akceptowanym aspektem notacji muzycznej - i były obecne w większości, jeśli nie w całej historii zachodniej muzyki notowanej.
Fermaty z definicji zależą od dyskrecji wykonawcy, co oznacza, że zależałoby to od ich własnego stanu, który prawie zawsze zmienia muzyka w powiązaniu z czynnikami zewnętrznymi - rodzi to więc pewne pytania dotyczące bezpaństwowości zapisu muzycznego.
Kanon 2 na Tonus z Muzycznej Oferty Bacha to utwór o nieskończonej pętli, którego tonacja wzrasta za każdym razem o krok, o ile utwór jest wykonywany.
Ostatnio często zdarza się, że instrukcje, takie jak „powtórz dla każdego solisty”, na przykład w notowanych wersjach utworów jazzowych, takich jak Take Five Dave'a Brubecka .
To powiedziawszy, oprócz z natury arbitralnych aspektów, takich jak fermata, jak twierdzą inne odpowiedzi, notacja muzyczna zawierająca tylko ogólne symbole prawdopodobnie nie jest kompletna.
źródło
Nie jest związany z kompletnymi językami Turinga, ponieważ jest językiem opisowym. Nie ma żadnych poleceń w zakresie obliczania lub modyfikacji danych, żadnych stanów, żadnych danych wejściowych, danych wyjściowych, z wyjątkiem wyniku samego opisu.
Ponadto nie ma żadnych skoków warunkowych w zależności od danych wejściowych. Po wykonaniu wszystkich skoków otrzymujesz strukturę liniową, a nie drzewo. Zatem wszystkie „programy”, które można modelować za pomocą tego języka, są liniowe bez żadnych pętli ani skoków.
źródło