Me pregunto, ¿el lenguaje de notación musical es Turing-Complete ?
Mi primer pensamiento es que hay bucles en la notación musical, pero no hay forma de escribir ramas condicionales, ¿verdad?
No soy músico, ¿entonces tal vez alguien pueda ayudar a llenar los vacíos?
turing-completeness
Klaim
fuente
fuente
Respuestas:
Sí, si admite algunas instrucciones para la transposición, poco común pero no desconocido.
Luego puede interpretar una pieza como Choon , que es completa de Turing. El intérprete es la memoria: deben recordar la cantidad de notas por las cuales la pieza se transpone actualmente y todas las notas que han tocado hasta ahora. Obviamente, es factible solo para una computadora, o tal vez un sabio.
Del manual de Choon:
Un John Cage es solo un descanso , un diapasón es (aproximadamente) dal segno, y un marcador es un segno. Supongo que el diapasón podría ser jugado por un intérprete adicional al que responde el intérprete principal, pero el principio es el mismo.
fuente
La integridad de Turing requiere, como mínimo, tres cosas: un bucle infinito, un salto condicional (si-entonces) y una forma de almacenar los resultados de los cálculos en algún lugar de la memoria. Incluso si la notación musical tuviera saltos condicionales, no tiene estado, así que no, no es completa de Turing.
fuente
La prueba estándar para que un idioma sea completo de Turing es escribir una máquina de Turing en ese idioma. Esto demuestra que existe una equivalencia entre el idioma (generalmente un subconjunto del idioma) y la máquina de Turing.
La noción de "notación musical" es un poco resbaladiza. Hay muchos grabados estandarizados que se utilizan. Sin embargo. Hay compositores que empujan sobres y escriben todo tipo de cosas locas en papel.
Supongamos que desea centrarse en el subconjunto de notación musical que se considera lo suficientemente estándar como para ser parte de Finale o Sibelius o algún conjunto de herramientas de grabado de la corriente principal.
Entonces.
Para Python (o C o lo que sea), usted define los símbolos, la cinta, las reglas de transición y las diversas acciones que actualizan la cinta para reflejar el cambio de estado y el movimiento de la cinta, leer y escribir símbolos en la cinta.
Usando "Notación musical", tenemos que definir símbolos y la cinta con estado, las reglas de transición y las diversas acciones que actualizan la cinta.
Lo que nos falta es una cinta con estado y reglas que les digan a los músicos cómo responder a los símbolos en la cinta y cómo actualizar esa cinta.
En cierto sentido, los ruidos que circulan en el aire podrían ser la cinta con estado. Pero. No hay una manera fácil de rebobinar la cinta. Esta falta de rebobinado significa que el artista tendría que mantener una "cinta" privada de algún tipo.
Esto sale de la notación musical y entra en otras instrucciones extra-musicales para el intérprete.
fuente
Gran parte de la notación está abierta a la interpretación, y las instrucciones en lenguaje natural son un aspecto aceptado de la notación musical, y han estado presentes en la mayor parte de la historia de la música occidental.
Las fermatas, por definición, dependen de la discreción del intérprete, lo que significa que dependerá de su propio estado, que casi siempre se ve alterado por la música junto con factores externos, por lo que esto plantea algunas preguntas sobre la naturaleza apátrida de la notación musical.
Canon a 2 por Tonus de Bach's Musical Offering es una pieza en bucle infinito cuya tonalidad aumenta un paso cada vez que se ejecuta la pieza.
Más recientemente, es común ver instrucciones como "repetir para cada solista" en, por ejemplo, versiones anotadas de piezas de Jazz como Take Five de Dave Brubeck .
Dicho esto, aparte de aspectos intrínsecamente arbitrarios como los fermata, como dicen las otras respuestas, la notación musical con nada más que los símbolos generales probablemente no esté completa.
fuente
No está relacionado con los idiomas completos de Turing, ya que es un lenguaje descriptivo. No hay comandos en términos de cálculo o modificación de datos, ni estados, ni entradas, ni salidas, excepto el resultado de la descripción misma.
Además, no hay saltos condicionales según la entrada. Cuando resuelve todos los saltos, obtiene una estructura lineal, no un árbol. Por lo tanto, todos los "programas" que puede modelar este lenguaje son lineales sin ningún bucle o salto.
fuente