पथरी और प्रोग्रामिंग भाषा में क्या अंतर है?


13

मुझे लगता है कि मैं एक पथरी कहलाने के बारे में बहुत उलझन में हूं और एक प्रोग्रामिंग भाषा क्या कहलाती है।

मुझे लगता है, और कहा जा सकता है, कि कैलकुलस कार्यक्रमों की समानता के बारे में तर्क करने के लिए एक औपचारिक प्रणाली है। प्रोग्राम में एक मशीन द्वारा निर्दिष्ट एक परिचालन शब्दार्थ है, जो कि (मुझे लगता है?) निर्धारक होना चाहिए। इस तरह, एक भाषा लिए एक (सही) कैलकुलस प्रोग्राम तुल्यता के लिए एक प्रमाण विधि है।L

यह मेरे लिए एक उचित विभाजन की तरह लगता है, लेकिन क्या यह आमतौर पर स्वीकृत अर्थ है? या शायद यह गलत भी है?

संबंधित, कुछ परिचालन शब्दार्थ nondeterministic क्यों हैं (मान लें कि यह संगम है)? रणनीति की पसंद को खुला छोड़ने से क्या हासिल होता है?

मैं वास्तव में इन पर कुछ स्पष्टीकरण की सराहना करता हूं; और ठोस संदर्भ और भी! धन्यवाद!


3
वे एक ही चीज को देखने के विभिन्न तरीकों के लिए अलग-अलग शब्द हैं।
राफेल

1
@ राफेल, यह सवाल का जवाब कैसे देता है? यह दर्शन करने की जगह नहीं है।
fade2black

4
कभी-कभी थोड़ा दर्शन आवश्यक है, कहीं भी।
एंड्रे सूजा लेमोस

जवाबों:


10

शब्दों का अर्थ निश्चित नहीं है, लेकिन मैं आपको अपनी व्याख्या दे सकता हूं।

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

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

λλ

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

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

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


तो एक प्रोग्रामिंग भाषा एक पथरी है जो एक रणनीति / पुनर्लेखन प्रणाली के साथ संगत है?
xavierm02

ppp=p

π

आप ऐसे समीकरण प्रस्तुत कर सकते हैं जो न केवल कार्यक्रम के बारे में बोलते हैं बल्कि इसके वातावरण (स्थिति या परिवर्तन) के बारे में भी बताते हैं। लेकिन मैं यह नहीं कहूंगा कि ऐसी बात एक पथरी है। बल्कि यह एक बीजीय मॉडल है।
बाउर

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

2

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


मेरा मानना ​​है कि मुख्य अंतर यह है कि कैल्कुली औपचारिक रूप से अध्ययन करने के लिए (अपेक्षाकृत) आसान होते हैं जबकि प्रोग्रामिंग भाषाएं (अपेक्षाकृत) उपयोग में आसान होती हैं। यह निम्नलिखित अंतर की ओर जाता है:

पथरी न्यूनतम होती है जबकि पीएल में अतिरेक होता है (लूप के लिए जब आपके पास पहले से ही लूप हो, तब स्विच करें जब आपके पास पहले से ही है, ...) यह व्यक्त करने के लिए कि आप क्या आसान चाहते हैं।

पथरी पूरी तरह से निर्दिष्ट शब्दार्थ है, जबकि एक PLs शब्दार्थ अक्सर एक डिफ़ॉल्ट दुभाषिया / संकलक द्वारा वर्णित किया जाता है।


कुछ परिचालन शब्दार्थ गैर-नियतात्मक हैं क्योंकि यह अनुमति देता है:

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

ध्यान दें कि कॉल-बाय-वैल्यू गैर-नियतात्मक है: आप पहले फ़ंक्शन या तर्क का मूल्यांकन करने के लिए चुन सकते हैं।


नहीं, मैं असहमत हूं कि यह औपचारिकता या परिष्कार के स्तर के बारे में है।
बाउर

2

"प्रोग्रामिंग लैंग्वेज" और "कैलकुलस" पॉलीसेमिक शब्द हैं, अर्थात्, वे संदर्भ के आधार पर अलग-अलग चीजों का मतलब रखते हैं।

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

यही कारण है कि यह अभिसरण कभी-कभार हमारे लिए (लेकिन काम करने वाले सॉफ्टवेयर डेवलपर्स या गणितज्ञों के लिए) गूढ़ है कि हमारा काम ठोस प्रोग्रामिंग भाषाओं की कल्पना करना है जैसे कि वे गणनात्मक थे, और ठोस भाषा में शारीरिक रूप से गणना करना।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.