मैं सोच रहा हूँ, संगीत अंकन भाषा ट्यूरिंग-पूर्ण है ?
मेरा पहला विचार यह है कि संगीत संकेतन में लूप हैं, लेकिन सशर्त शाखाओं को लिखने का कोई तरीका नहीं है, है ना?
मैं एक संगीतकार नहीं हूं, इसलिए शायद कोई व्यक्ति अंतराल को भरने में मदद कर सकता है?
मैं सोच रहा हूँ, संगीत अंकन भाषा ट्यूरिंग-पूर्ण है ?
मेरा पहला विचार यह है कि संगीत संकेतन में लूप हैं, लेकिन सशर्त शाखाओं को लिखने का कोई तरीका नहीं है, है ना?
मैं एक संगीतकार नहीं हूं, इसलिए शायद कोई व्यक्ति अंतराल को भरने में मदद कर सकता है?
जवाबों:
हां, यदि आप ट्रांसपोज़ेशन के लिए कुछ निर्देश मानते हैं - तो असामान्य नहीं, बल्कि अज्ञात।
फिर आप चून के रूप में एक टुकड़े की व्याख्या कर सकते हैं , जो कि ट्यूरिंग-पूर्ण है। कलाकार स्मृति है: उन्हें उन नोटों की संख्या को याद रखना चाहिए जिनके द्वारा वर्तमान में टुकड़ा ट्रांसपोज़ किया जाता है, और वे सभी नोट जो उन्होंने अब तक खेले हैं। जाहिर है यह केवल एक कंप्यूटर के लिए संभव है, या शायद एक जानकार।
चून मैनुअल से:
प्रतिस्थापन
तीन ट्रांसपोज़ेशन निर्देश हैं, ऊपर (
+
), नीचे (-
) और रद्द (.
)। एक ट्रांसपोज़ेशन इंस्ट्रक्शन, बाद में खेले गए अंतिम नोट की राशि से खेले गए सभी बाद के नोटों को स्थानांतरित करता है। रद्द करने का निर्देश (.
) ट्रांसपोज़िशन को शून्य पर सेट करता है।लेनदेन संचयी होते हैं, इसलिए भविष्य के नोटों को 2 तक स्थानांतरित करने के लिए चून कोड है
b+
, और 4 से होगाb++
। इसके अलावा, उपयोग किया गया मूल्य पिछले नोटों का मूल्य है, जो कि ट्रांज़िशन के लागू होने के बाद होता है, इसलिएb+b+
भविष्य के नोटों को 6 से स्थानांतरित करता है, 4 से नहीं।जॉन केज
जॉन केज इंस्ट्रक्शन (
%
) आउटपुट स्ट्रीम में एक नोट साइलेंस का कारण बनता है। एक जॉन केज का ट्रांसपोज़िशन मूल्य शून्य है -%-
और%+
नो-ऑप्स हैं (सिवाय इसके कि आउटपुट में एक मौन जोड़ा जाता है)।बार बार
बार बार निर्देश (
||:
और:||
) एक लूप को संलग्न करता है। लूप सामने आने से पहले सबसे हाल के नोट द्वारा इंगित समय की संख्या को निष्पादित करेगा||:
। शून्य या नकारात्मक मूल्य का मतलब होगा कि चून मिलान से खेलना शुरू करने के लिए तुरंत कूद जाएगा:||
। एक जॉन केज का अर्थ है हमेशा के लिए दोहराना -%||::||
एक अनंत लूप है।ट्यूनिंग कांटा
ट्यूनिंग फोर्क निर्देश
~
छोरों को तोड़ने का एक तरीका प्रदान करता है। यदि एक ट्यूनिंग कांटा एक लूप में सामना किया गया है, और खेला गया अंतिम नोट मूल्य का एक नोट थाA
, तो चून तुरंत अगले:||
निर्देश के बाद से खेलना शुरू करने के लिए कूद जाएगा । यदि आगे कोई:||
निर्देश नहीं है (अर्थ~
किसी भी दोहराने सलाखों के बाहर इस्तेमाल किया गया है), तो प्रदर्शन तुरंत समाप्त हो जाएगा।मार्करों
मार्कर अद्भुत प्रोग्रामिंग सुविधा प्रदान करते हैं। एक मार्कर एक निचला मामला पत्र या शब्द है जो आउटपुट स्ट्रीम में एक बिंदु को याद करता है। मार्कर (नीचे देखें) का जिक्र मार्कर द्वारा फिर से खेले जाने के बाद खेले गए नोट का कारण होगा। ध्यान दें कि लेन-देन इस नए खेले गए नोट को प्रभावित करेगा।
जहां दो या दो से अधिक मार्कर क्रमिक रूप से होते हैं, या एक मार्कर एक नाटक-से-मार्कर निर्देश का पालन करता है, उन्हें व्हाट्सएप द्वारा अलग किया जाना चाहिए।
आउटपुट से खेलें
आउटपुट से चलाएं निर्देश (
=
) आपको फिर से नोट्स चलाने की अनुमति देता है जो पहले ही आउटपुट स्ट्रीम में चलाए जा चुके हैं। आप संख्या से नोटों का उल्लेख कर सकते - 5 वां टिप्पणी खेला के बाद से कार्यक्रम शुरू हुआ होगा=5
, रिश्तेदार संख्या से - 3 सबसे हाल ही में टिप्पणी खेला होगा=-3
या मार्कर द्वारा - टिप्पणी खेला के बाद मार्करx
होगा=x
।किसी मार्कर का फिर से उपयोग करना एक सामान्य मुहावरा है और तुरंत इसे इस तरह देखें
x=x
:। यहx=x+y
एक पारंपरिक प्रोग्रामिंग भाषा में कहने के लिए समान है (जहांy
वर्तमान में प्रभावी ट्रांसपोज़िशन मूल्य का प्रतिनिधित्व करता है)।
एक जॉन केज बस एक आराम है , एक ट्यूनिंग फोर्क है (मोटे तौर पर) दाल सेग्नो, और एक मार्कर सेग्नो है। मुझे लगता है कि ट्यूनिंग कांटा एक अतिरिक्त कलाकार द्वारा खेला जा सकता है जिसे प्राथमिक कलाकार प्रतिक्रिया देता है, लेकिन सिद्धांत एक ही है।
ट्यूरिंग पूर्णता की आवश्यकता होती है, न्यूनतम, तीन चीजों पर: एक अनंत लूप, एक सशर्त कूद (यदि-तब), और गणना के परिणामों को स्मृति में कहीं स्टोर करने का एक तरीका। यहां तक कि अगर संगीत संकेतन में सशर्त कूदता है, तो इसमें राज्य नहीं है , इसलिए नहीं, यह ट्यूरिंग-पूर्ण नहीं है।
ट्यूरिंग पूरी होने के लिए एक भाषा के लिए मानक प्रमाण उस भाषा में ट्यूरिंग मशीन लिखना है। यह साबित करता है कि भाषा (आमतौर पर भाषा का सबसेट) और ट्यूरिंग मशीन के बीच एक समानता है।
"म्यूज़िकल नोटेशन" की धारणा थोड़ी फिसलन भरी है। बहुत सारे मानकीकृत उत्कीर्णन हैं जिनका उपयोग किया जाता है। हालाँकि। लिफाफा-धक्का देने वाले संगीतकार हैं जो कागज पर सभी प्रकार के पागल सामान नीचे लिखते हैं।
आइए दिखाते हैं कि आप संगीत संकेतन के सबसेट पर ध्यान केंद्रित करना चाहते हैं, जिसे फिनाले या सिबेलियस या कुछ मुख्य-धारा उत्कीर्णन टूलसेट का हिस्सा माना जाता है।
इसलिए।
पायथन (या सी या जो भी) के लिए आप प्रतीकों, टेप, संक्रमण नियमों और विभिन्न क्रियाओं को परिभाषित करते हैं जो टेप को राज्य परिवर्तन और टेप गति को प्रतिबिंबित करने के लिए अपडेट करते हैं, टेप पर प्रतीकों को पढ़ते और लिखते हैं।
"संगीत संकेतन" का उपयोग करते हुए, हमें प्रतीकों और स्टेटफुल टेप, ट्रांज़िशन नियमों और विभिन्न क्रियाओं को परिभाषित करना होगा जो टेप को अपडेट करते हैं।
हमारे पास जो कमी है वह एक स्टेटफुल टेप है और नियम जो संगीतकारों को बताते हैं कि टेप पर प्रतीकों का जवाब कैसे दिया जाए और उस टेप को कैसे अपडेट किया जाए।
एक अर्थ में, हवा में चारों ओर बहने वाली शोर राज्य टेप हो सकता है। परंतु। टेप को रिवाइंड करने का कोई आसान तरीका नहीं है। रिवाइंड की इस कमी का मतलब है कि कलाकार को किसी तरह का एक निजी "टेप" रखना होगा।
यह संगीत संकेतन के बाहर हो जाता है और कलाकार को कुछ अन्य अतिरिक्त-संगीत निर्देश में।
अधिकांश संकेतन व्याख्या के लिए खुले हैं, और प्राकृतिक भाषा निर्देश संगीत संकेतन का एक स्वीकृत पहलू है - और यह सबसे अधिक है यदि सभी पश्चिमी संगीत के इतिहास के नहीं हैं।
परिभाषा के अनुसार फ़र्मेटा कलाकार के विवेक पर निर्भर करता है, जिसका अर्थ है कि यह अपने स्वयं के राज्य पर निर्भर करेगा, जो लगभग हमेशा बाहरी कारकों के संयोजन में संगीत द्वारा बदल दिया जाता है - इसलिए यह संगीत संकेतन की सांख्यिकीय प्रकृति पर कुछ प्रश्न उठाता है।
बाख के संगीत की पेशकश से कैनन 2 प्रति टन एक असीम रूप से लूप वाला टुकड़ा है जिसकी टोन प्रत्येक बार एक पूरे चरण के माध्यम से बढ़ती है जब तक कि टुकड़ा प्रदर्शन किया जाता है।
हाल ही में, उदाहरण के लिए "प्रत्येक एकल कलाकार के लिए दोहराएं" जैसे उदाहरणों को देखना आम है, उदाहरण के लिए, डेव ब्रूबेक के टेक फाइव जैसे जैज़ टुकड़ों के नोट किए गए संस्करण ।
यह कहा गया है, एक तरफ उत्तर के रूप में स्वाभाविक रूप से मनमाने ढंग से पहलुओं से अलग है, अन्य उत्तर के रूप में, कुछ भी नहीं है, लेकिन सामान्य प्रतीकों के साथ संगीत संकेतन पूरा नहीं हो रहा है।
यह ट्यूरिंग पूरी भाषाओं से संबंधित नहीं है क्योंकि यह एक वर्णनात्मक भाषा है। गणना या डेटा को संशोधित करने के संदर्भ में कोई आदेश नहीं हैं, कोई भी राज्य, कोई इनपुट, कोई आउटपुट नहीं है केवल विवरण के परिणाम को छोड़कर।
इसके अलावा इनपुट के आधार पर कोई सशर्त छलांग नहीं है। जब आप सभी जंप का समाधान करते हैं तो आपको एक पेड़ नहीं बल्कि एक रैखिक संरचना मिलती है। तो सभी "प्रोग्राम" जो इस भाषा के द्वारा तैयार किए जा सकते हैं, बिना किसी लूप या जंप के रैखिक हैं।