प्रोग्रामिंग भाषा और गणित की नींव कैसे संबंधित हैं?


30

मूल रूप से मुझे गणित के लिए तीन नींवों की जानकारी है

  1. समुच्चय सिद्धान्त
  2. सिद्धांत टाइप करें
  3. श्रेणी सिद्धांत

तो किस तरह से प्रोग्रामिंग भाषाओं और गणित की नींव संबंधित हैं?

संपादित करें

मूल प्रश्न था "गणित की नींव पर आधारित भाषाओं का प्रोग्रामिंग"

के अतिरिक्त पैराग्राफ के साथ

और सिद्धांत का कार्यान्वयन
1. Coq में सिद्धांत टाइप
करें। SETL में सिद्धांत सेट करें
3. हास्केल में श्रेणी सिद्धांत

एक सुझाव के आधार पर इसे "कैसे प्रोग्रामिंग भाषाओं और गणित से जुड़ी नींव" के लिए बदल दिया गया था

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

सभी टिप्पणियों और अब तक के उत्तर के लिए धन्यवाद, मैं उनसे सीख रहा हूं।


1
मुझे यकीन नहीं है कि अगर मैं सवाल या उसमें बताई गई धारणाओं को समझूं। जहां तक ​​मैं समझता हूं, Coq एक प्रोग्रामिंग भाषा नहीं है। कार्यक्रम Coq सबूत से निकाले जा सकते हैं लेकिन यह एक प्रोग्रामिंग भाषा नहीं है। साथ ही श्रेणी सिद्धांत और प्रकार के सिद्धांत निकट से संबंधित हैं इसलिए मुझे यकीन नहीं है कि अगर हम आपके पास इनको वर्गीकृत कर सकते हैं। SETL के बारे में नहीं जानते। विकिपीडिया पर प्रमाण सहायकों की सूची भी देखें ।
केवह

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


जवाबों:


29

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

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

स्लोगन प्रूफ-ए-प्रोग्राम्स काम करने का एक सूक्ष्म तरीका वास्तविकता का उपयोग करना है । यहां भी हम प्रमाणों और कार्यक्रमों से संबंधित हैं, लेकिन अब दिशा प्रमाणों से कार्यक्रमों तक जाती है: प्रत्येक प्रमाण एक कार्यक्रम देता है, लेकिन प्रत्येक कार्यक्रम जरूरी नहीं कि एक प्रमाण हो।

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

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

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

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

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

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


"यह विचार कि गणना प्रमाण खोज है ।" मैं इस बयान से भ्रमित हूं। निश्चित रूप से, प्रमाण खोज एक संगणना का रूप है, लेकिन सभी संगणना प्रमाण खोज नहीं है? इस प्रश्न के संदर्भ में, प्रमाण सत्यापन, प्रकार की जाँच भी है। अधिक सामान्यतः, केवल 5 + 3 का जोड़। इस कथन से आपका क्या अभिप्राय है?
user56834

6

यह एक बहुत ही जटिल विषय है और इस विषय पर कई बेहतरीन किताबें हैं, हाल ही में एक कहा जाता है Turings कैथेड्रल, डिजिटल ब्रह्मांड की उत्पत्ति और तर्क, गणितज्ञों और कंप्यूटर की उत्पत्ति के इंजन भी ।

कंप्यूटर की भाषाएं कई दशकों में विकसित हुई हैं, लेकिन यह मानें कि नहीं या दो मूल प्रोग्रामिंग भाषाएं हैं जो दर्शाती हैं कि गणित और कंप्यूटर विज्ञान पूरी तरह से प्रमाणित हैं:

गणितीय और कंप्यूटर विज्ञान की सीमाओं को पार करने वाले दो प्रमुख आंकड़े हैं "प्रोग्रामिंग लैंग्वेजेस":

  • शैनन द्वारा प्रवर्तित सूचना सिद्धांत गणित और कंप्यूटर विज्ञान के बीच गहरे संबंध को दर्शाता है

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

पहले भी "प्रोग्रामिंग भाषाएं":

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

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

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