Gostaria de saber, é a linguagem de notação musical Turing-Complete ?
Meu primeiro pensamento é que existem loops na notação musical, mas não há como escrever ramos condicionais, certo?
Eu não sou músico, então talvez alguém possa ajudar a preencher as lacunas?
turing-completeness
Klaim
fonte
fonte
Respostas:
Sim, se você admitir algumas instruções para a transposição - incomum, mas não desconhecido.
Você pode interpretar uma peça como Choon , que é Turing-complete. O intérprete é a memória: eles devem se lembrar do número de notas pelas quais a peça é atualmente transposta e de todas as notas que tocaram até agora. Obviamente, é viável apenas para um computador, ou talvez um sábio.
No manual do Choon:
Um John Cage é apenas um descanso , um diapasão é (aproximadamente) dal segno e um marcador é um segno. Suponho que o diapasão possa ser tocado por um artista adicional a quem o artista principal responde, mas o princípio é o mesmo.
fonte
A perfeição de Turing requer, no mínimo, três coisas: um loop infinito, um salto condicional (se-então) e uma maneira de armazenar os resultados dos cálculos em algum lugar da memória. Mesmo que a notação musical tenha saltos condicionais, ela não tem estado, então não, não é Turing-completo.
fonte
A prova padrão para um idioma ser completo de Turing é escrever uma máquina de Turing nesse idioma. Isso prova que há uma equivalência entre o idioma (geralmente um subconjunto do idioma) e a máquina de Turing.
A noção de "Notação Musical" é um pouco escorregadia. Há muita gravação padronizada usada. Contudo. Há compositores que empurram envelopes que escrevem todo tipo de coisa louca no papel.
Vamos fingir que você quer se concentrar no subconjunto de notação musical que é considerado padrão o suficiente para fazer parte de Finale ou Sibelius ou algum conjunto de ferramentas de gravação do fluxo principal.
Assim.
Para Python (ou C ou qualquer outra coisa), você define os símbolos, a fita, as regras de transição e as várias ações que atualizam a fita para refletir a mudança de estado e o movimento da fita, lendo e escrevendo símbolos na fita.
Usando "Notação Musical", precisamos definir símbolos e a fita com estado, as regras de transição e as várias ações que atualizam a fita.
O que nos falta é uma fita com estado e regras que digam aos músicos como responder aos símbolos da fita e como atualizá-la.
Em certo sentido, os ruídos que fluem no ar podem ser a fita com estado. Mas. Não há uma maneira fácil de rebobinar a fita. Essa falta de rebobinamento significa que o artista precisaria manter algum tipo de "fita" privada.
Isso fica fora da notação musical e em outras instruções extra-musicais para o artista.
fonte
Grande parte da notação está aberta à interpretação, e as instruções em linguagem natural são um aspecto aceito da notação musical - e estiveram presentes na maior parte, se não toda, na história da música ocidental notada.
Fermatas, por definição, dependem da discrição do intérprete, o que significa que dependeria de seu próprio estado, que quase sempre é alterado pela música em conjunto com fatores externos - então isso levanta algumas questões sobre a natureza sem estado da notação musical.
A Canon a 2 por Tonus da Oferta Musical de Bach é uma peça com loop infinito cuja tonalidade sobe um passo inteiro de cada vez durante o tempo em que a peça é executada.
Mais recentemente, é comum ver instruções como "repetir para cada solista" em, por exemplo, versões notadas de peças de Jazz como Take Five, de Dave Brubeck .
Dito isto, além de aspectos inerentemente arbitrários como os fermata, como as outras respostas afirmam, a notação musical com nada além dos símbolos gerais provavelmente não é Turing completa.
fonte
Não está relacionado aos idiomas completos de Turing, pois é um idioma descritivo. Não há comandos em termos de cálculo ou modificação de dados, estados, entradas ou saídas, exceto pelo resultado da descrição em si.
Também não há saltos condicionais, dependendo da entrada. Quando você resolve todos os saltos, obtém uma estrutura linear, não uma árvore. Portanto, todos os "programas" que podem ser modelados por essa linguagem são lineares, sem nenhum loop ou salto.
fonte