음악 표기법이 Turing-Complete입니까? 언어 Turing-Complete 입니까? 내 첫 번째

궁금한 점은 음악 표기법 언어 Turing-Complete 입니까?

내 첫 번째 생각은 음악 표기법에 루프가 있지만 조건부 분기를 작성할 수있는 방법이 없다는 것입니다.

나는 음악가가 아니기 때문에 누군가가 그 차이를 메울 수 있습니까?



답변

예, 전염에 대한 몇 가지 지시 사항을 인정한다면 드물지만 알 수 없습니다.

그런 다음 조각을 Choon 으로 해석하여 Turing-complete입니다. 연주자는 기억입니다. 조각이 현재 조바꿈 된 음표 수와 지금까지 연주 한 모든 음표를 기억해야합니다. 분명히 그것은 컴퓨터 또는 아마도 종에게만 가능합니다.

Choon 매뉴얼에서 :

  • 조옮김

    위 ( +), 아래 ( -) 및 취소 ( .)의 세 가지 전치 명령이 있습니다 . 조옮김 명령은 마지막으로 연주 한 음량만큼 연주 된 모든 후속 음표를 조 옮깁니다. 취소 명령 ( .)은 조옮김을 다시 0으로 설정합니다.

    조옮김은 누적되므로 미래의 음표를 2 씩 조옮김하는 Choon 코드는 b+4가됩니다 b++. 또한, 사용 된 값은 조옮김이 적용된 후 이전 음표의 값이므로 b+b+앞으로 음표를 4가 아니라 6 만큼 조 옮깁니다.

  • 존 케이지

    John Cage 명령어 ( %)는 출력 스트림에서 하나의 음표 침묵을 유발합니다. John Cage의 조옮김 값은 0 %-이며 %+ops가 아닙니다 (단일 침묵이 출력에 추가되는 것을 제외하고).

  • 반복 바

    반복 막대 지침 ( ||::||)은 루프를 둘러 쌉니다. 루프 ||:는 발생 하기 전에 가장 최근에 연주 한 음으로 표시된 횟수만큼 실행 됩니다. 0 또는 음수 값은 Choon이 즉시 점프하여 일치하는 게임을 시작 함을 의미합니다 :||. 존 케이지는 영원히 반복한다는 것을 의미합니다- %||::||무한 루프입니다.

  • 소리굽쇠

    Tuning Fork 명령어 ~는 루프에서 벗어날 수있는 방법을 제공합니다. 루프에서 튜닝 포크가 발생하고 마지막으로 연주 된 음이 value의 음표 인 경우 AChoon은 즉시 다음 :||명령 후 재생을 시작 합니다. 추가 :||지시 가 없으면 ( ~반복 막대 외부에서 사용 된 의미 ), 즉시 연주가 종료됩니다.

  • 마커

    마커는 놀라운 프로그래밍 편의성을 제공합니다. 마커는 출력 스트림의 한 지점을 기억하는 소문자 또는 단어입니다. 마커를 참조하면 (아래 참조) 마커가 발생한 후 연주 된 음이 다시 연주됩니다. 조옮김은 새로 연주 한이 음에 영향을줍니다.

    둘 이상의 마커가 순차적으로 발생하거나 마커가 마커에서 재생 명령을 따르는 경우 공백으로 분리해야합니다.

  • 출력에서 재생

    Play From Output 명령 ( =)을 사용하면 출력 스트림에서 이미 연주 된 음을 다시 재생할 수 있습니다. 당신은 번호로 노트를 참조 할 수 있습니다 – 프로그램이 될 것 시작된 이후 5 노트는 경기 =5상대 번호로, – 가장 최근의 참고가 될 것이다 경기 3 =-3또는 마커에 의해 – 마커 후 음이 연주 x될 것이다 =x.

    다음과 같이 마커를 재사용 한 다음 즉시 참조하는 것이 일반적 관용구 x=x입니다. 이것은 x=x+y기존의 프로그래밍 언어 ( y현재 효과적인 전치 값을 나타냄) 로 말하는 것과 유사합니다 .

존 케이지는 단지입니다 휴식 하는 튜닝 포크 (약)의 달 SEGNO이며, 마커 SEGNO입니다. 튜닝 포크는 주요 연주자가 응답하는 추가 연주자가 연주 할 수 있지만 원칙은 동일합니다.


답변

튜링 완성도에는 최소한 무한 루프, 조건부 점프 (if-then) 및 계산 결과를 메모리의 어딘가에 저장하는 방법이 필요합니다. 뮤지컬 표기법에 조건부 점프가 있어도 상태 가 없으므로 튜링 완료가 아닙니다.


답변

튜링이 완료되는 언어에 대한 표준 증거는 해당 언어로 튜링 머신을 작성하는 것입니다. 이는 언어 (일반적으로 언어의 하위 집합)와 튜링 머신이 동등 함을 증명합니다.

“음악 표기법”의 개념은 약간 미끄 럽습니다. 사용되는 표준화 된 조각이 많이 있습니다. 하나. 종이에 모든 종류의 미친 물건을 쓰는 봉투 밀기 작곡가가 있습니다.

피날레 또는 시벨리우스 또는 일부 주류 조각 도구 세트의 일부가 될 정도로 표준으로 여겨지는 음악 표기법의 하위 세트에 초점을 맞추고 자합니다.

그래서.

Python (또는 C 등)의 경우 기호, 테이프, 전환 규칙 및 테이프의 상태 변경 및 테이프 동작, 테이프의 기호 읽기 및 쓰기를 반영하도록 테이프를 업데이트하는 다양한 작업을 정의합니다.

“음악 표기법”을 사용하여 기호와 상태 저장 테이프, 전환 규칙 및 테이프를 업데이트하는 다양한 작업을 정의해야합니다.

우리가 부족한 것은 음악가에게 테이프의 기호에 응답하는 방법과 테이프를 업데이트하는 방법을 알려주는 상태 저장 테이프와 규칙입니다.

어떤 의미에서, 공기 중에 흐르는 소음은 상태 저장 테이프 일 수 있습니다. 그러나. 테이프를 되 감는 쉬운 방법은 없습니다. 되감기의 부족은 연주자가 일종의 개인 “테이프”를 유지해야한다는 것을 의미합니다.

이것은 외부 악보 표기법과 연주자에게 다른 악보 지침으로 들어갑니다.


답변

대부분의 표기법은 해석에 개방적이며 자연어 교육은 음악 표기법의 허용되는 측면이며, 서양의 표기된 음악의 역사가 전부는 아니지만 대부분에 걸쳐 있습니다.

페르마타의 정의는 연주자의 재량에 따라 달라지며, 이는 외부 요소와 관련하여 음악에 의해 거의 항상 변경되는 자신의 상태에 달려 있음을 의미합니다.

바흐의 뮤지컬 오퍼링에서 Tonus 당 2 번 캐논은 무한 반복되는 곡으로 곡이 연주되는 동안 매 단계마다 음조가 증가합니다.

더 최근에는 Dave Brubeck의 Take Five 와 같은 표기된 버전의 재즈 곡에서 “각 솔로이스트에 대한 반복”과 같은 지침을 보는 것이 일반적 입니다.

즉, 페르마타와 같은 본질적으로 임의적 인 측면을 제외하고는 다른 답변은 일반적인 기호 이외의 음악 표기법은 튜링 완료가 아닐 것입니다.


답변

설명 언어이므로 튜링 완성 언어와 관련이 없습니다. 설명 자체의 결과를 제외하고 데이터 계산 또는 수정, 상태, 입력, 출력에 관한 명령은 없습니다.

또한 입력에 따라 조건부 점프가 없습니다. 모든 점프를 해결하면 나무가 아닌 선형 구조를 얻게됩니다. 따라서이 언어로 모델링 할 수있는 모든 “프로그램”은 루프 나 점프없이 선형입니다.