क्या एक भाषा ट्यूरिंग-पूरा करती है?


79

भाषा सुविधाओं / संरचनाओं का न्यूनतम सेट क्या है जो इसे ट्यूरिंग-पूर्ण बनाता है?


21
क्या यह केवल Google के लिए बेहतर नहीं होगा? en.wikipedia.org/wiki/Turing_completeness
aml90

2
हाय उत्सुक बिल्ली, प्रोग्रामरों में आपका स्वागत है! सूचियों के लिए कॉल यहां विषय पर नहीं हैं: मैंने आपके प्रश्न से उस भाग को हटा दिया है। उस ने कहा, यह खोज बेहद व्यापक है: क्या कोई विशिष्ट समस्या है जिस पर आप काम कर रहे हैं, क्या आप ट्यूरिंग-पूर्णता के बारे में सोच रहे हैं?


कंप्यूटर-विज्ञान के दृष्टिकोण के लिए, यहां देखें ।
राफेल

जवाबों:


73

एक ट्यूरिंग tarpit गूढ़ प्रोग्रामिंग भाषा जो ट्यूरिंग-पूर्ण होने के लिए संभव के रूप में कुछ तत्वों का उपयोग करते समय प्रयास का एक प्रकार है। ब्रेनफक शायद सबसे अच्छा ज्ञात टारपीट है, लेकिन कई हैं।

  • Iota और जोत क्रमशः दो और तीन प्रतीकों वाली कार्यात्मक भाषाएं हैं, जो SK (I) कॉम्बीनेटर कैलकुलस पर आधारित हैं ।

  • OISC ( वन इंस्ट्रक्शन सेट कंप्यूटर ) एक प्रकार की अनिवार्यता को दर्शाता है जिसके लिए एक या अधिक तर्कों के केवल एक निर्देश की आवश्यकता होती है, आमतौर पर "घटाना और शाखा यदि शून्य से कम या बराबर", या "रिवर्स घटाना और यदि उधार हो तो छोड़ें"। X86 MMU पूर्व अनुदेश को लागू करता है और इस प्रकार ट्यूरिंग-पूर्ण होता है।

सामान्य तौर पर, ट्यूरिंग-पूर्ण होने के लिए अनिवार्य भाषा के लिए, इसकी आवश्यकता है:

  1. सशर्त पुनरावृत्ति या सशर्त कूद का एक रूप (जैसे while, if+ goto)

  2. भंडारण के कुछ प्रकार पढ़ने और लिखने का एक तरीका (जैसे, चर, टेप)

एक लैम्ब्डा-पथरी- आधारित कार्यात्मक भाषा के लिए टीसी होने के लिए, इसकी आवश्यकता है:

  1. तर्कों पर अमूर्त कार्यों की क्षमता (जैसे, लंबोदर अमूर्तन, उद्धरण)

  2. कार्यों को तर्कों पर लागू करने की क्षमता (जैसे, कमी)

कंप्युटेशन को देखने के अन्य तरीके भी हैं, लेकिन ट्यूरिंग टारपीट्स के लिए ये सामान्य मॉडल हैं। ध्यान दें कि वास्तविक कंप्यूटर हैं नहीं सार्वभौमिक ट्यूरिंग मशीन क्योंकि वे असीम भंडारण की जरूरत नहीं है। कड़ाई से बोलते हुए, वे "बंधी हुई भंडारण मशीनें" हैं। यदि आप उनके साथ स्मृति को जोड़ते रहे, तो वे शक्ति में ट्यूरिंग मशीनों से संपर्क करेंगे। हालांकि, यहां तक ​​कि बंधे हुए भंडारण मशीन और परिमित राज्य मशीनें गणना के लिए उपयोगी हैं; वे केवल सार्वभौमिक नहीं हैं ।

ट्यूरिंग-पूर्णता के लिए कड़ाई से बोलना, I / O की आवश्यकता नहीं है; टीसी केवल यह दावा करता है कि एक भाषा आपके इच्छित फ़ंक्शन की गणना कर सकती है , न कि यह आपको परिणाम दिखा सकती है। व्यवहार में, हर उपयोगी भाषा का दुनिया के साथ बातचीत करने का एक तरीका है।


अनिवार्य भाषाओं के लिए, सरल चर पर्याप्त हैं? मैं इस धारणा के तहत था कि किसी प्रकार का संग्रह (जैसे सरणियाँ या लिंक्ड सूची) आवश्यक होगा।
लुइसुबल

1
@luiscubal आपको डेटा की एक मनमानी राशि निर्दिष्ट करने में सक्षम होने की आवश्यकता है। सरल चर के साथ आप उन डेटा की मात्रा का प्रतिनिधित्व कर सकते हैं जो स्वयं चर हैं। क्या होगा अगर आपको डेटा के एन + 1 विभिन्न टुकड़ों का प्रतिनिधित्व करने की आवश्यकता है। कोई यह तर्क दे सकता है कि फ्रैक्ट्रन नाटकों जैसी चालों के साथ , आप इसे साधारण चर में भी कर सकते हैं ... लेकिन यह काफी नहीं है जो आप पूछ रहे हैं।

क्या यह आवश्यक नहीं है कि भाषा ENDLESS लूप का समर्थन करे ?
सेरगिओल

पुन:, "हर उपयोगी भाषा का दुनिया के साथ बातचीत करने का एक तरीका है।" अल्गोल 60 के पास दुनिया के साथ बातचीत करने का कोई परिभाषित तरीका नहीं था । Algol 60 प्रोग्राम में आपके I / O के सभी कार्य लाइब्रेरी फंक्शंस को कॉल करके किए गए थे, और विभिन्न इम्प्लांटेशन में लाइब्रेरी फ़ंक्शंस पूरी तरह से अलग हो सकते हैं। लेकिन, मैं यहां से खुद को किसी भी चर्चा से दूर करता हूं कि क्या अल्गोल 60 "उपयोगी" था या नहीं।
सोलोमन स्लो

15

अधिक व्यावहारिक दृष्टिकोण से: यदि आप ट्यूरिंग-पूर्ण भाषा में सभी कार्यक्रमों को अपनी भाषा में अनुवाद कर सकते हैं, तो (जहाँ तक मुझे पता है), आपकी भाषा ट्यूरिंग-पूर्ण होनी चाहिए। इसलिए, यदि आप यह जांचना चाहते हैं कि क्या आपके द्वारा डिज़ाइन की गई भाषा ट्यूरिंग-पूर्ण है, तो आप बस एक ब्रेनफ *** को YourLanguage संकलक को लिख सकते हैं और यह साबित कर सकते हैं कि यह सभी कानूनी बीएफ कार्यक्रमों को संकलित कर सकता है।

स्पष्ट करने के लिए, मेरा मतलब है कि YourLanguage के लिए एक दुभाषिया के अलावा, आप एक संकलक (किसी भी भाषा में) लिखते हैं जो कि किसी भी BF प्रोग्राम को YourLanguage (उसी शब्दार्थ को ध्यान में रखते हुए) को संकलित कर सकता है।


11
हाँ, यह निश्चित रूप से सबसे व्यावहारिक तरीका होगा। </sarcasm>
रॉबर्ट हार्वे

13
@ रोबर्टहाइवे के पास एक बिंदु है, लेकिन सामान्य विचार काफी महत्वपूर्ण है। प्रोग्रामिंग भाषाओं के चलते ब्रेनफक ट्यूरिंग-पूर्ण और बहुत सरल साबित होता है । गैर-गूढ़ प्रोग्रामिंग भाषाओं के लिए, एक ब्रेनफॉक दुभाषिया को लागू करना कहीं से अधिक कठोर प्रमाण देने से ज्यादा आसान और तेज हो सकता है (मैं पायथन की कुछ पंक्तियों में बीएफ को लागू कर सकता हूं, लेकिन मुझे यकीन नहीं है कि एक औपचारिक शुरुआत कहां से की जाए सबूत है कि पायथन पूरा इलाज कर रहा है); और दर्जनों गूढ़ मस्तिष्क-प्रेरित भाषाएं पूर्ण रूप से ट्यूरिंग करने के लिए जानी जाती हैं क्योंकि यह ज्ञात है कि वे ब्रेनफैक के लिए कैसे मैप करते हैं।

7
@ रोबर्टहवे: क्यों नहीं? निश्चित रूप से कोई अपनी भाषा डिजाइन कर रहा है, वह इसे एक बीएफ संकलक लिख सकता है (यदि यह अनिवार्य था, और एक उपयुक्त अन्य सामग्री को खोजने के बिना)।
एंटोन गोलोव

5
@delnan: आपको यह साबित करना होगा कि आपका BF दुभाषिया BF विनिर्देश को सही ढंग से लागू करता है, IOW आपको यह साबित करना होगा कि आपका BF दुभाषिया, वास्तव में BF दुभाषिया है और BF जैसी भाषा के लिए दुभाषिया नहीं है ट्यूरिंग-पूर्ण नहीं हो सकता है या नहीं।
जोर्ग डब्ल्यू मित्तग

2
@ DarekNzadza, कि ट्यूरिंग कम्प्लीटनेस को कैसे परिभाषित किया जाता है, इसका सिर्फ एक स्वाभाविक परिणाम है; ट्यूरिंग कम्प्लीट लैंग्वेज का कोई भी एक्सटेंशन ट्यूरिंग कम्प्लीट नहीं होगा।
एंटन गोलोव

8

एक प्रणाली को केवल ट्यूरिंग पूर्ण माना जा सकता है अगर यह एक सार्वभौमिक ट्यूरिंग मशीन कुछ भी कर सकती है। चूँकि यूनिवर्सल ट्यूरिंग मशीन को किसी भी समय पर दिए गए कम्प्यूटेशनल फ़ंक्शन को हल करने में सक्षम कहा जाता है, ट्यूरिंग सिस्टम पूरी तरह से विस्तार से भी ऐसा कर सकता है।

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

  1. "चर" (या मनमाना डेटा) पढ़ने और लिखने की क्षमता : बहुत ज्यादा आत्म व्याख्यात्मक।
  2. रीड / राइट हेड को स्थानांतरित करने की क्षमता : यह केवल चर को पुनः प्राप्त करने और स्टोर करने में सक्षम होने के लिए पर्याप्त नहीं है। अन्य चर को संदर्भित करने के लिए टेप के सिर को स्थानांतरित करने की क्षमता का अनुकरण करना भी संभव होना चाहिए। इसे अक्सर प्रोग्रामिंग भाषाओं में सरणी डेटा संरचनाओं (या समतुल्य) के उपयोग के साथ या मशीन कोड जैसी कुछ भाषाओं के मामले में "पॉइंटर्स" (या समतुल्य) के उपयोग के माध्यम से अन्य चर को संदर्भित करने की क्षमता के साथ अनुकरण किया जा सकता है।
  3. एक परिमित राज्य मशीन को अनुकरण करने की क्षमता : यद्यपि अक्सर उल्लेख नहीं किया जाता है, ट्यूरिंग मशीन वास्तव में एआई विकास के भीतर अक्सर उपयोग किए जाने वाले परिमित राज्य मशीनों की भिन्नता है। एलन ट्यूरिंग ने कहा कि राज्यों का उद्देश्य किसी व्यक्ति की "समस्या हल करने के विभिन्न तरीकों" का अनुकरण करना है।
  4. एक "पड़ाव" राज्य : हालांकि यह अक्सर नियमों का एक सेट का उल्लेख किया जाता है, ताकि ट्यूरिंग पूर्ण होने के रूप में गिनने के लिए खुद को दोहराने में सक्षम होना चाहिए, यह वास्तव में एक अच्छा मानदंड नहीं है क्योंकि एल्गोरिथ्म राज्य एल्गोरिदम की औपचारिक परिभाषा हमेशा होनी चाहिए अंत में समाप्त होता है। अगर वे किसी तरह से निष्कर्ष नहीं निकाल सकते हैं, तो या तो यह पूरा नहीं हो रहा है, या कहा कि एल्गोरिथम एक कम्प्यूटेशनल फ़ंक्शन नहीं है। पूरी तरह से ट्यूरिंग सिस्टम जो कि तकनीकी रूप से काम करने के कारण समाप्त नहीं कर सकते हैं (जैसे गेम कंसोल, उदाहरण के लिए) इस सीमा के आसपास कुछ फैशन में एक अवस्था को "अनुकरण" करने में सक्षम होते हैं। "रुकने की समस्या" के साथ भ्रमित नहीं होना, एक अयोग्य कार्य जो इसे साबित करता है '

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

ध्यान दें कि वास्तव में एक सही ट्यूरिंग सिस्टम बनाने का कोई ज्ञात तरीका नहीं है। इसका कारण यह है कि भौतिक स्थान के भीतर ट्यूरिंग मशीन के टेप की असीमता का अनुकरण करने का कोई ज्ञात तरीका नहीं है।


4

यदि आप इसके साथ कोई गणना कर सकते हैं, तो एक प्रोग्रामिंग भाषा पूर्ण हो रही है। ऐसी विशेषताओं का एक सेट नहीं है, जो किसी भाषा को पूर्ण बनाती हैं, इसलिए उत्तर में कहा जाता है कि आपको छोरों की आवश्यकता है या आपको चर की आवश्यकता है क्योंकि ऐसी भाषाएं गलत हैं जो न तो हैं, बल्कि पूरी तरह से ट्यूरिंग हैं।

एलन ट्यूरिंग ने सार्वभौमिक ट्यूरिंग मशीन बनाई और यदि आप अपनी भाषा पर चलने के लिए सार्वभौमिक मशीन पर काम करने के लिए डिज़ाइन किए गए किसी भी प्रोग्राम का अनुवाद कर सकते हैं, तो यह ट्यूरिंग पूर्ण भी है। यह अप्रत्यक्ष रूप से भी काम करता है इसलिए आप कह सकते हैं कि भाषा X पूरी तरह से ट्यूरिंग है अगर संपूर्ण भाषा Y को ट्यूर करने के सभी प्रोग्राम X के लिए अनुवादित किए जा सकते हैं क्योंकि सभी सार्वभौमिक ट्यूरिंग मशीन प्रोग्रामों को Y प्रोग्राम में अनुवादित किया जा सकता है।

समय जटिलता, अंतरिक्ष जटिलता, इनपुट / आउटपुट प्रारूप में आसान और किसी भी कार्यक्रम को लिखने में आसान समीकरण में शामिल नहीं है, इसलिए ऐसी मशीन सैद्धांतिक रूप से सभी गणना कर सकती है यदि गणना बिजली की हानि या पृथ्वी को सूर्य द्वारा निगलने से रोक नहीं है।

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

एक सफल भाषा बनाने के लिए इसे पूर्णता को प्राप्त करने से अधिक की आवश्यकता होती है और यह टारिंग टारिट्स के लिए भी सही है। मुझे नहीं लगता कि ब्रेनफ़क बिना ,और लोकप्रिय हुआ होगा .


2
"यदि आप इसके साथ कोई गणना कर सकते हैं, तो एक प्रोग्रामिंग भाषा पूरी तरह से ट्यूरिंग है।" यह चर्च-ट्यूरिंग थीसिस है, न कि जो भाषा को ट्यूरिंग-पूर्ण बनाता है।
कविता

@ राइमॉइड तो आपका मतलब है कि कुछ भी पूर्ण नहीं है जब तक कि आप दुभाषिया नहीं बना सकते? अर्थात। लैम्ब्डा कैलकुलस पूरी तरह से ट्यूरिंग नहीं है भले ही यह समान रूप से ट्यूरिंग हो?
सिल्वेस्टर

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

वैसे भी, मैं 'ट्यूरिंग-कम्प्लीट' की व्याख्या एक यूनिवर्सल ट्यूरिंग मशीन (UTM) के बराबर अनुकरण के रूप में करता हूँ, जो बदले में किसी भी ट्यूरिंग मशीन का अनुकरण करने में सक्षम है - इसलिए 'यूनिवर्सल')। 1936 से ट्यूरिंग के पेपर में, जहाँ उन्होंने अपनी मशीनों को पेश किया, उन्होंने एक UTM की धारणा को परिभाषित किया, और इस बात का प्रमाण दिया कि UTM चर्च के लैम्ब्डा कैलकुलस के बराबर सिमुलेशन हैं। ऐसा करके, उन्होंने साबित कर दिया कि उनके पास समान कम्प्यूटेशनल शक्ति है। चर्च-ट्यूरिंग थीसिस का दावा है कि, "बस यही सब कम्प्यूटेशनल पावर है जो आपको मिलेगी"।
राइमाइड

इसकी ट्यूरिंग पूर्णता पृष्ठ विकिपीडिया की दो औपचारिक परिभाषाएँ हैं । एक को I / O की आवश्यकता होती है, दूसरे को नहीं। जो यह नहीं कहता है कि एक मशीन पूरी तरह से ट्यूरिंग कर रही है अगर वह हर ट्यूरिंग-कम्प्यूटेबल फ़ंक्शन की गणना कर सकती है। यह लैंबडा कैलकुलस को पूरी तरह से ट्यूरिंग करने के लिए वापस रखता है क्योंकि आप आसानी से लैम्ब्डा कैलकुलस में एक समान प्रोग्राम बना सकते हैं जो किसी भी ट्यूरिंग मशीन प्रोग्राम के समान गणना करता है।
सिल्वेस्टर

4

आप यह नहीं बता सकते हैं कि यह अनंत रूप से लूप करेगा या बंद हो जाएगा।

-------------

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

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

चूंकि ट्यूरिंग की ऑरिजनल यूनिवर्सल ट्यूरिंग मशीन में एक बेकार चलन की समस्या है, इसलिए आपकी खुद की ट्यूरिंग पूरी मशीन में भी एक अनचाहे पड़ाव की समस्या होनी चाहिए।

ट्यूरिंग पूरा सिस्टम किसी भी अन्य ट्यूरिंग सिस्टम का अनुकरण कर सकता है, इसलिए यदि आप अपने सिस्टम में कुछ प्रसिद्ध ट्यूरिंग सिस्टम के लिए एमुलेटर बना सकते हैं, तो यह साबित होता है कि आपका सिस्टम भी ट्यूरिंग पूरा कर रहा है।

उदाहरण के लिए, मान लें कि आप यह साबित करना चाहते हैं कि सांप और सीढ़ी ट्यूरिंग पूर्ण है, एक बोर्ड को असीम रूप से दोहराया ग्रिड पैटर्न (शीर्ष और बाईं ओर एक अलग संस्करण के साथ) दिया गया है। यह जानते हुए कि 2-काउंटर मिन्स्की मशीन ट्यूरिंग पूर्ण है (जिसमें 2 असीमित काउंटर हैं और एक परिमित संख्या से 1 राज्य है), आप एक समतुल्य बोर्ड का निर्माण कर सकते हैं जहां ग्रिड पर X और Y स्थिति 2 काउंटरों का वर्तमान मूल्य है और वर्तमान पथ वर्तमान स्थिति है। बैंग! आपने बस यह साबित कर दिया कि सांप और सीढ़ी पूरी तरह से ट्यूरिंग हैं।


1
मैं वह तर्क नहीं खरीदता। सिर्फ इसलिए कि ट्यूरिंग मशीनों के लिए हॉल्टिंग समस्या अनिर्दिष्ट है, इसका सीधा अर्थ यह नहीं है कि प्रत्येक संकेतन जो आपको एक प्रोग्राम निर्दिष्ट करने की अनुमति देता है, जिसके लिए हॉल्टिंग समस्या अयोग्य है, ट्यूरिंग पूर्ण है। केवल व्युत्क्रम स्पष्ट रूप से सच है: यदि अंकन ट्यूरिंग पूर्ण है, तो निश्चित रूप से उन कार्यक्रमों को लिखना संभव है जिनके लिए हॉल्टिंग समस्या अनिर्दिष्ट है।
5gon12eder

यह एक आवश्यक शर्त है। यदि आप हर कार्यक्रम के लिए तय कर सकते हैं कि क्या यह रुकता है तो भाषा पूर्ण नहीं है।
gnasher729 12

4

एक आवश्यक शर्त एक लूप है जिसमें अधिकतम पुनरावृत्ति गणना है जो पुनरावृत्ति के आगे, या पुनरावृत्ति से निर्धारित नहीं होती है जहां अधिकतम पुनरावृत्ति की गहराई आगे निर्धारित नहीं की जाती है। एक उदाहरण के रूप में ... के लिए ... लूप्स के रूप में आप उन्हें कई नई भाषाओं में पाते हैं भाषा को पूर्ण बनाने के लिए पर्याप्त नहीं हैं (लेकिन उनके पास अन्य साधन होंगे)। ध्यान दें कि इसका मतलब सीमित संख्या में पुनरावृत्तियों या सीमित पुनरावृत्ति की गहराई नहीं है, लेकिन अधिकतम पुनरावृत्तियों और पुनरावृत्ति की गहराई की गणना आगे की जानी चाहिए।

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

दूसरी ओर, प्रत्येक पुनरावृत्ति गणना और आगे की गणना की जाने वाली प्रत्येक पुनरावृत्ति गहराई के साथ, न केवल यह तय किया जा सकता है कि कोई कार्यक्रम रुक जाएगा या नहीं, बल्कि यह रुक जाएगा


-1

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

  • चर
  • सशर्त (यदि / फिर ...)
  • लूपेज (लूप / ब्रेक, जबकि ...)

आगे आओ

  • अनाम और नामित कार्य

इन कथनों का परीक्षण करने के लिए, मार्कअप भाषा के साथ शुरुआत करें, बोलें, HTML। हम एक HTML + केवल चर के साथ, या केवल सशर्त (MS ने सशर्त टिप्पणियों के साथ), या कुछ प्रकार के लूप निर्माण का आविष्कार कर सकते हैं (जो कि सशर्त की अनुपस्थिति में संभवतः कुछ के रूप में समाप्त हो जाएगा <repeat n='4'>...</repeat>)। इनमें से कोई भी करना HTML + को सादे HTML की तुलना में अधिक शक्तिशाली (?) बना देगा, लेकिन यह अभी भी प्रोग्रामिंग भाषा की तुलना में अधिक मार्कअप होगा; प्रत्येक नई सुविधा के साथ, आप इसे एक घोषणापत्र के कम और एक अनिवार्य भाषा के अधिक बनाते हैं।

तर्क और प्रोग्रामिंग में अतिसूक्ष्मता की खोज सुनिश्चित करना महत्वपूर्ण और दिलचस्प है, लेकिन अगर मुझे n00bies को सिखाना था युवा या बूढ़े 'प्रोग्रामिंग क्या है' और 'प्रोग्राम कैसे सीखें', तो मैं शायद ही पूरी चौड़ाई और चौड़ाई के साथ शुरू करूंगा ट्यूरिंग पूर्णता की सैद्धांतिक नींव। खाना पकाने और प्रोग्रामिंग का पूरा सार सही क्रम में सामान तैयार कर रहा है, तैयार होने तक दोहराता है, जैसा कि आपकी माँ ने किया था। इसके बारे में यह मेरे लिए है।

फिर से, मैंने अपना CS कभी पूरा नहीं किया।


2
यदि आप निश्चित नहीं हैं, तो आपको पहले इस पर शोध करना चाहिए। fractran है ट्यूरिंग पूरा के रूप में है, brainf * सी.के. । यह भी ध्यान दें कि html 5 + CSS 3 पूर्ण रूप से ट्यूरिंग है क्योंकि यह नियम 110 को लागू कर सकता है ।

1
हाँ, मुझे पता है लेकिन दिए गए सभी उदाहरण कम या ज्यादा गूढ़ हैं (जबकि शायद दिलचस्प या आश्चर्यजनक), मेरा जवाब एक व्यावहारिक था, और शायद बहुत कम से कम नहीं। मुझे लगता है कि यह बताना महत्वपूर्ण है कि यह पृष्ठ # 1 था जब Google पर ट्यूरिंग-पूर्णता की खोज की जा रही थी, यहाँ उत्तर IMHO के लिए बहुत कम उपयोग के लिए हैं, कहते हैं, एक n00bie जो जानना चाहता है कि HTML को PHP या पायथन से क्या अलग करता है। मेरा मतलब है, brainf ck को बिना किसी कारण के brainf ck नहीं कहा जाता है।
प्रवाह करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.