अमूर्त मशीनों और कंप्यूटर achitectures के बीच की खाई को पाटना? [बन्द है]


11

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


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

2
@amon ऐसा प्रतीत होता है कि आपने पहले से ही अधिकांश उत्तर लिख दिए हैं, टिप्पणी में इसे "बेकार" क्यों जाने दें?

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

जवाबों:


23

ट्यूरिंग मशीन और इसी तरह की "मशीनें" गणना के मॉडल हैं , उनका उद्देश्य समस्याओं की जांच करना है:

  • क्या गणना की जा सकती है
  • समस्याओं की जटिलता वर्ग
  • जटिलता वर्गों के बीच संबंध
  • कुछ की गणना करने के लिए विभिन्न तरीकों की समानता

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

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

तो दो दृष्टिकोण मौलिक रूप से बाधाओं पर हैं। दोनों कंप्यूटर विज्ञान के क्षेत्र में होने के अलावा, वे एक दूसरे के साथ बहुत कुछ नहीं करते हैं।


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

4
@ मुझे लगता है कि पाठ्यक्रम केवल ट्यूरिंग मशीनों को एक अमूर्त मशीन की अवधारणा को पेश करने के लिए एक प्रारंभिक बिंदु के रूप में लेता है, फिर जल्दी से अधिक उपयोगी अमूर्त मशीनों की ओर बढ़ता है।

4

मुख्य संबंध यह है कि आप भौतिक एक में सैद्धांतिक निर्माण का अनुकरण कर सकते हैं।

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

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

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

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


1

वे लगभग उसी तरह से संबंधित हैं जिस तरह से अंतरिक्ष यान एक गुब्बारे से संबंधित है जिसे आप अपनी सांस के साथ फुलाते हैं और फिर उड़ने और देखने के लिए उड़ान भरने देते हैं।

एक दिशा में किसी चीज को निष्कासित करने का मूल सिद्धांत विपरीत दिशा में किसी चीज को प्रेरित करने के लिए होता है।

यहीं से समानताएं समाप्त होती हैं।


1

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


1

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

इसलिए ट्यूरिंग मशीन कंप्यूटर के काम करने के तरीके के बारे में नहीं है। यह इस बारे में है कि कोई समस्या संगणनीय है या नहीं - अर्थात एक औपचारिक तार्किक / गणितीय प्रक्रिया द्वारा हल की जा सकती है। यह इस बारे में कुछ नहीं कहता है कि इस प्रक्रिया को कैसे लागू किया जा सकता है। यदि यह गणना योग्य है, तो इसे मानव द्वारा पेंसिल और कागज के साथ हल किया जा सकता है, जिसे पर्याप्त समय दिया गया है, या कंप्यूटर के साथ (या यह महत्वपूर्ण बात है) किसी भी प्रणाली के साथ जिसे ट्यूरिंग पूर्ण दिखाया जा सकता है ।

तो ट्यूरिंग मशीन दो बहुत महत्वपूर्ण काम करती है:

  1. किसी भी समस्या / कार्य की संगणना के लिए एक परीक्षण प्रदान करता है।
  2. यह दिखाने के लिए किसी भी प्रणाली के लिए एक परीक्षण प्रदान करता है कि क्या यह किसी भी कम्प्यूटेशनल कार्य की गणना कर सकता है।

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

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

जिसका मतलब है कि ट्यूरिंग मशीन और किसी भी वास्तविक व्यावहारिक कंप्यूटर वास्तुकला (यहां तक ​​कि आभासी वाले) के बीच संबंध सिर्फ एक चीज है: वे गणना कर सकते हैं।

वॉन न्यूमैन की वास्तुकला प्रभावी सामान्य उद्देश्य इलेक्ट्रॉनिक डिजिटल कंप्यूटरों के लिए एक डिज़ाइन टेम्पलेट बनाने का प्रयास था । ट्यूरिंग के काम ने इसकी वैधता का प्रमाण प्रदान किया


-1

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

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

तो मान लें कि आपके पास एक आर्किटेक्चर है जो सीधे LISP शैली के कार्यक्रमों का समर्थन करता है, और दूसरा x86 जैसा है जो अधिक प्रक्रियात्मक है। आपका मित्र दावा करता है "LISP अधिक अभिव्यंजक है, इसलिए आप इस मशीन पर प्रोग्राम लिख सकते हैं जिसे आप अपने x86 पर कभी नहीं लिख सकते।" यह मुकाबला करने के लिए क्रूर है (खासकर जब से आप शायद पर्याप्त एलआईएसपी नहीं जानते हैं)। हालाँकि, आप कई अमूर्त मशीनों का दुरुपयोग कर सकते हैं जैसे ट्यूरिंग मशीन:

  • आपकी LISP मशीन फैंसी हो सकती है, लेकिन यह सब कुछ कर सकती है lambda पथरी के लिए reducible है। आपका दोस्त उत्सुकता से सिर हिलाता है। लैम्ब्डा कैलकुलस फंक्शनल प्रोग्रामर्स के लिए एक संस्कारी चीज है।
  • मेरा x86 फैंसी हो सकता है, लेकिन यह सब कुछ कर सकता है एक रजिस्टर मशीन के लिए reducible है। एक बार फिर, अपने दोस्त से कोई सवाल नहीं। रजिस्टरों आधुनिक कंप्यूटर सिद्धांत में SO पेस हैं!
  • किसी भी रजिस्टर मशीन को उस ट्यूरिंग मशीन की नकल करने वाली ट्यूरिंग मशीन के रूप में तैयार किया जा सकता है। अब आपका दोस्त आश्चर्य करता है कि आप पंच-टेप युग में वापस क्यों पहुंच रहे हैं।
  • और आपकी लैम्ब्डा कैलकुलस मशीन को ट्यूरिंग मशीन तक भी कम किया जा सकता है। * आपके दोस्त वस्तुओं, लेकिन आप उन्हें चर्च-ट्यूरिंग थीसिस पर इंगित करते हैं, और वे शर्म से अपना सिर लटकाते हैं।
  • इस प्रकार मेरा x86 बॉक्स आपके फैंसी LISP आधारित मशीन कुछ भी कर सकता है!

बेशक, अन्य उदाहरण के बहुत सारे हैं। जीवन के कॉनवे का गेम ट्यूरिंग पूर्ण साबित हुआ, जिसका अर्थ है कि यह सैद्धांतिक रूप से आपके कंप्यूटर को कुछ भी कर सकता है। ऐसा करने का सबसे आसान तरीका जीवन में एक ट्यूरिंग मशीन का निर्माण करना था । मैं इसे ऊपर लाता हूं क्योंकि यह एक ऐसा मामला होगा जिसे आप एक अमूर्त मशीन कहते हैं जिसे शाब्दिक वास्तुकला माना जाता है! आप कल्पना कर सकते हैं कि एब्सट्रैक्ट मॉडल्स की सहायता के बिना जीवन में कम्प्यूटेबिलिटी का दावा कितना कठिन होगा (मुझे यकीन है कि बिल्ली एक एक्स 64 मॉडलिंग नहीं कर रही है, कैश पीकिंग के साथ पूरा, बस यह साबित करने के लिए कि जीवन कम्प्यूटेशनल है!)


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

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


1
आपके दिए गए तर्क के उदाहरण तकनीकी रूप से सही नहीं हैं - यदि आप कहते हैं कि एक ट्यूरिंग मशीन वह सब कुछ कर सकती है जो एक रजिस्टर मशीन या x86 mahine कर सकती है, तो इसका सीधा मतलब यह नहीं है कि एक x86 मशीन वह सब कुछ कर सकती है जो एक रजिस्टर मशीन या ट्यूरिंग मशीन करती है कर सकते हैं। एक प्रतिरूप के रूप में, किसी भी परिमित ऑटोमोटन को ट्यूरिंग मशीन में भी कम किया जा सकता है लेकिन स्पष्ट रूप से लैम्ब्डा कैलकुलस या LISP के बराबर नहीं है। दिशात्मकता मायने रखती है - यदि आप यह बताना चाहते हैं कि "मेरा x86 बॉक्स आपके फैंसी LISP आधारित मशीन कुछ भी कर सकता है", तो उसे ट्यूरिंग से x86 तक कटौती की आवश्यकता होगी, x86 से ट्यूरिंग तक नहीं।
पीटरिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.