लैम्ब्डा कैलकुलस और प्रोग्रामिंग भाषाओं के बीच क्या संबंध है? [बन्द है]


13

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

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


2
इस सवाल का बेहतर जवाब cs.stackexchange.com पर दिया जाएगा
davidk01

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

Mathematica ने देखा कि किसी ने भी इसका उल्लेख नहीं किया है।
विलियम

जवाबों:


26

लैम्ब्डा कैलकुलस दिलचस्प, सुरुचिपूर्ण है, और कार्यात्मक प्रोग्रामिंग भाषाओं को समझना बहुत आसान बनाता है। हालाँकि, आप एक सामान्य CS बैचलर कोर्स में LC का सामना नहीं करेंगे, इसलिए आपको इसे अभी सीखने की ज़रूरत नहीं है - मैं लैम्बडा कैलकुलस पर दोबारा विचार करने से पहले पहले कार्यात्मक भाषाओं के साथ प्रयोग करने की सलाह दूंगा। मेरा मानना ​​है कि ओ प्रोग्राम एक सी प्रोग्रामर के लिए कार्यात्मक प्रोग्रामिंग में एक अच्छा प्रारंभिक बिंदु है, और यह योजना लैंबडा कैलकुलस में गोता लगाने के लिए एक अच्छा प्रारंभिक बिंदु है।

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

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

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

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


यह मेरे द्वारा पहले चुने गए से बेहतर उत्तर है। आपका जवाब वास्तव में घर हिट करता है। यही वह है जिसकी तलाश में मैं हूं!
रोनाल्डमॉडोडाफ़ा

"... सिवाय इसके कि LC के कार्यों में हमेशा एक ही तर्क होता है": क्या इस सुविधा को क्यूरिंग कहा जाता है या यह कम से कम इससे संबंधित है?
जियोर्जियो

@ जियोर्जियो करी अलग है, लेकिन संबंधित है। एलसी के पास बहु-तर्क कार्य नहीं होते हैं, लेकिन वे केवल नेस्टेड फ़ंक्शन के रूप में एन्कोड किए जा सकते हैं जो प्रत्येक तर्क को लेते हैं। एमएल संकेतन का उपयोग कर उदाहरण: x = fn (a, b, c) => a + b + c(प्रकार int * int * int -> int, मंगलाचरण fn (1, 2, 3)) में परिवर्तित किया जा सकता है x = fn a => fn b => fn c => a + b + c(प्रकार int -> int -> int -> int, आह्वान ((x 1) 2) 3- एमएल में वैकल्पिक parens)। अब तीनों तर्कों की आपूर्ति करने के बजाय, हम केवल दो प्रदान कर सकते हैं: plus3 = x 1 2जिसमें टाइप है int -> int। यह आंशिक अनुप्रयोग / करी है।
आमोन

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

8

लैम्ब्डा कैलकुलस का अंतर / अभिन्न कलन से कोई लेना-देना नहीं है। शब्द के सबसे सामान्य अर्थ में कैलकुलस का अर्थ है गणना की प्रणाली।

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

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


1
आप उन विशिष्ट भाषाओं का उल्लेख करना चाह सकते हैं जो लैम्ब्डा कैलकुलस, जैसे लिस्प के काफी करीब हैं।
जियोर्जियो

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