क्या ट्रॉफ ट्यूरिंग पूरी हो गई है?


9

ट्रॉफ का उपयोग करते हुए .deऔर शाखाओं का उपयोग करके मैक्रो परिभाषाओं का समर्थन करता है .if( ट्रॉफ़ उपयोगकर्ता के मैनुअल के पृष्ठ 5 और 6 देखें )। इन दो मामलों में, यह बहुत TeX की तरह है। हालांकि, मुझे ट्रॉफ में लिखे गए अत्यधिक जटिल कार्यक्रमों (टीएक्स के लिए टीकेजेड के विपरीत) के बारे में नहीं पता है। क्या ट्रॉफ ट्यूरिंग पूरी हो गई है?

जवाबों:


12

ईएसआर की द आर्ट ऑफ यूनिक्स प्रोग्रामिंग का दावा है:

हम अध्याय 18 में अधिक विस्तार से ट्रॉफ की जांच करेंगे; अभी के लिए, यह नोट करना पर्याप्त है कि यह एक अनिवार्यता का एक अच्छा उदाहरण है, जो एक पूर्ण दुभाषिया होने की सीमा है (इसमें सशर्त और पुनरावृत्ति होती है लेकिन लूप नहीं है; यह आकस्मिक रूप से ट्यूरिंग-पूर्ण है)।

("दुर्घटनावश" m4जिसका विरोध किया गया है , जिसे "जानबूझकर ट्यूरिंग-पूर्ण" कहा जाता है।)


13

हां, ट्रॉफ ट्यूरिंग-पूर्ण है। यह मनमानी पुनरावृत्ति और सशर्त शाखा का समर्थन करता है, जो पर्याप्त है। इसमें डेटा स्टोर करने के लिए रजिस्टर और कई अन्य तरीके भी हैं, जो आपको फिर से एक और रास्ता देता है।

ट्यूरिंग पूर्णता का अर्थ यह नहीं है कि अत्यधिक जटिल कार्यक्रम व्यावहारिक हैं - बस यह कि वे सैद्धांतिक रूप से संभव हैं, किसी तरह, हटाने के कुछ स्तर पर - और न ही इसकी अनुपस्थिति का अर्थ है कि वे नहीं हैं, इसलिए न तो ट्रोफ का ट्यूरिंग-पूर्ण हो रहा है और न ही। जटिल कार्यक्रमों की अनुपस्थिति उस बारे में एक या दूसरे तरीके से ज्यादा कुछ नहीं सुझाती है।


ट्यूरिंग संपूर्णता नहीं है, आम तौर पर, एक संपत्ति जो उपयोगकर्ता के लिए आपके लिए उपयोगी कुछ भी है। इसका मतलब यह है कि आप इसके साथ एक ट्यूरिंग मशीन का अनुकरण कर सकते हैं , न कि आप जो चाहते हैं, और यह नहीं कि जो आउटपुट आपको मिलेगा, वह कुछ भी है जैसा आप पढ़ने की उम्मीद करेंगे। इनपुट या आउटपुट सिर्फ एक संख्या हो सकती है, या यहां तक ​​कि कुछ उपयोगी होने के बजाय कुछ की संख्या भी दिखाई देती है, और मशीन के प्रकार जो आप अनुकरण करते हैं और उनके कार्यक्रमों को शुरू करने के लिए अक्सर मुश्किल से समझ में आता है।

कई भाषाओं और प्रणालियों संयोग से ट्यूरिंग-पूर्ण कर रहे हैं लेकिन काफी नहीं लागू है कि सबसेट में किसी भी वास्तविक प्रोग्रामिंग के लिए (उदाहरण के लिए, Conway के जीवन या सीएसएस के खेल) और, कुछ भाषाओं कि कर रहे हैं वास्तविक प्रोग्रामिंग के लिए उपयोगी ट्यूरिंग-पूर्ण नहीं कर रहे हैं (उदाहरण के लिए, AGDA)। परिभाषित करने की विशेषताएं वास्तव में आप कर सकते हैं

  • हमेशा के लिए जा रहे हैं
  • जितना चाहें उतना डेटा याद रखें
  • आगे क्या करना है, यदि कुछ है, तो उसे चुनें

अक्सर वे गुण - विशेष रूप से गैर-समाप्ति - वास्तव में अवांछनीय हैं, संभवतः ट्रॉफ के लिए भी शामिल हैं। सैद्धांतिक कंप्यूटर विज्ञान और भाषा डिजाइन के बाहर, ट्यूरिंग पूर्णता आकर्षक होने के बावजूद वस्तुतः बहुत दिलचस्प संपत्ति नहीं है।


हां, यह अपने आप में बहुत उपयोगी चीज नहीं है, लेकिन यह अभी भी दिलचस्प है - उदाहरण के लिए, यहां तक ​​कि मूव इंस्ट्रक्शन ट्यूरिंग भी पूरा है।
कटकुलस

4
@theindigamer - x86 का movनिर्देश ट्यूरिंग-पूर्ण है। (उन मोडिंग को संबोधित करने के कारण जो आपको लुकअप टेबल का उपयोग करने देते हैं, और एक ही mnemonic का उपयोग लोड, स्टोर और रजिस्टर करने के लिए mov-तत्काल के लिए किया जाता है।) कई अन्य ISAs पर, जिनके पास एक movनिर्देश (जैसे ARM) है, यह सिर्फ एक reg-reg चाल है और ट्यूरिंग-पूर्ण नहीं है। (हालांकि एआरएम पर यह शिफ्ट्स / रोटेट्स कर सकता है।) इसके अलावा, आपको वास्तव jmpमें movनिर्देशों के अपने ब्लॉक के चारों ओर एक लूप बनाने की आवश्यकता है , जब तक कि आप 16-बिट मोड में नहीं होते हैं जहां निर्देश सूचक 64k कोड सेगमेंट में चारों ओर लपेट सकता है। स्पष्ट रूप से पाश।
पीटर कॉर्डेस

6
@SpaceBison निश्चित रूप से :-) github.com/Battelle/movfuscator
डैनियल नेल्सन

2
@PeterCordes: आह; पुराने दिनों में वेयर एमओवी आर्किटेक्चर जिसमें मेमोरी मैप्ड ALUs थे और IP सिर्फ एक और रजिस्टर था इसलिए JMP एक और MOV था।
जोशुआ

1
@ जोशुआ: मजेदार तथ्य: 32-बिट एआरएम पीसी को 16 सामान्य-उद्देश्य पूर्णांक रजिस्टरों में से एक के रूप में उजागर करता है। push {r4, lr}/ pop {r4,pc}फ़ंक्शंस में आम है जो एक कॉल-संरक्षित रजिस्टर को बचाने / पुनर्स्थापित करने और स्टैक को संरेखित करने की आवश्यकता है: वे लिंक रेज को भी सहेजते हैं और इसे वापस करने के लिए प्रोग्राम काउंटर में वापस पॉप करते हैं। (32-बिट एआरएम का स्टोर / लोड-मल्टीपल निर्देश बिटफील्ड का उपयोग करके यह बताता है कि कौन सा स्टोर / लोड करने के लिए रजिस्टर करता है।) और हाँ, आप पीसी को movकिसी निर्देश के गंतव्य के रूप में उपयोग कर सकते हैं । मैं नहीं जानता था कि अतीत में आम था, हालांकि। लेकिन मैंने आईएसएएस के परिवहन-ट्रिगर के बारे में सुना था।
पीटर कॉर्डेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.