यह आपके प्रश्न का सामान्य उत्तर नहीं है, लेकिन संरचित प्रोग्रामिंग प्रमेय द्वारा , सभी आवश्यक है कि चयन करने की क्षमता है (उदाहरण, if
C / C ++ में) और पुनरावृत्ति (जैसे, while
C / C ++ में)। संपादित करें: जैसा कि डेव क्लार्क ने टिप्पणियों में बताया है, संरचित प्रोग्रामिंग प्रमेय को भी अनुक्रम की आवश्यकता होती है। मैंने शुरुआत में इसे सूचीबद्ध नहीं किया था क्योंकि मैंने लेने के लिए पाठक को समझा होगा कि अन्य निर्देशों के बुनियादी ब्लॉक, जैसे कि बाद में पढ़ने और मेमोरी स्टोर से लिखने के लिए आवंटित किए गए, आदि भी आवश्यक थे)। जाहिर है, स्पष्ट होना बेहतर है; आपको इन चीजों को करने में सक्षम होना चाहिए।
चूंकि इन दोनों को सशर्त कूद अनुदेश (जैसे, JNZ
x86 में) का उपयोग करके लागू किया जा सकता है , जो कि ट्यूरिंग-तुल्यता के लिए भी पर्याप्त है।
ध्यान दें कि अन्य चीजों की आवश्यकता होती है, अर्थात, किसी प्रकार के बाहरी मेमोरी स्टोर में प्रतीकों की एक अनबिके संख्या (जैसे, बिट्स ... 0 या 1) लिखने की क्षमता। इस अर्थ में, वास्तविक कंप्यूटर ट्यूरिंग समतुल्य नहीं हैं, क्योंकि उनमें से किसी में भी अनंत मात्रा में भंडारण नहीं है। ट्यूरिंग मॉडल अभी भी उपयोगी है, हालाँकि, मेमोरी की मात्रा आम तौर पर बहुत बड़ी है, और किसी भी समस्या का वास्तविक कंप्यूटर हल करने के बावजूद एक नियत परिमित ऑटोमोटन द्वारा हल किया जा सकता है, गणना के उस मॉडल का उपयोग करना विशेष रूप से उपयोगी नहीं है (क्योंकि राज्यों की संख्या बहुत बड़ी होगी)।
ध्यान दें कि यह जरूरी नहीं कि sepp2k के उत्तर के साथ है; यह एक ही प्रश्न के बारे में सोचने का एक अलग तरीका है।
संपादित करें:
ध्यान दें कि आपको वास्तव में if
और while
C / C ++ दोनों की आवश्यकता नहीं है। आप निम्नानुसार अनुकरण if
कर सकते while
हैं:
bool C;
// some code that sets C
if(C) { /* some other code /* }
// rest of the program
निम्नलिखित कोड हमेशा समतुल्य होता है:
bool C;
// some code that sets C
bool C2 = C;
while(C2) { /* some other code /* C2 = false; }
// rest of the program
ठीक है ... यदि आप सावधान रहें, तो निर्माण कार्य और संभव होना चाहिए। ध्यान दें कि यदि आपके पास पुनरावर्ती कार्य हैं, तो आपको अंततः चयन की भी आवश्यकता है; चूंकि चयन के बिना पुनरावर्ती कार्य वास्तव में आधार मामलों को लागू नहीं कर सकते हैं, इसलिए किसी भी पुनरावर्ती कार्य के परिणामस्वरूप अनंत पुनरावृत्ति होगी।
संपादित करें:
इसके अलावा, अपने प्रश्न के बारे में कि क्या ट्यूरिंग तुल्यता के लिए पर्याप्त नहीं है एक कार्यक्रम लिखने की क्षमता, जवाब नहीं है; यह आवश्यक है, लेकिन पर्याप्त नहीं है। हम एक भाषा में लिखे गए कार्यक्रमों के लिए रुकने की समस्या को हल कर सकते हैं जो उन कार्यक्रमों को व्यक्त नहीं कर सकते हैं जो रुकने में विफल रहते हैं; सभी उदाहरणों के लिए उत्तर "कार्यक्रम रुक जाता है" है। हालाँकि, हम एक ऐसी भाषा को परिभाषित कर सकते हैं जहाँ एकमात्र निर्देश मशीन को एक अनंत लूप में प्रवेश करने का कारण बनता है ... ऐसी भाषा ट्यूरिंग-समतुल्य नहीं है।