संदर्भ अनुरोध: श्रेणी सिद्धांत जैसा कि यह सिस्टम पर लागू होता है


13

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

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

मुझे लगता है कि मेरा सवाल वास्तव में दो-गुना है:

  1. क्या पीएल में "गहरी अवधारणाओं" को समझने के लिए श्रेणी सिद्धांत आवश्यक है?
  2. क्या एक स्रोत है जो श्रेणी के सिद्धांत को व्यावहारिक अनुप्रयोगों के दृष्टिकोण से लेकर सिस्टम और प्रोग्रामिंग तक बताता है?

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


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

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

1
@ राफेल प्रश्न एक व्यक्तिपरक कैसे होता है? यह न्याय करना कठिन हो सकता है - क्या आपका मतलब है? और इसका उत्तर हो सकता है "यह निर्भर करता है कि आप किस तरह के व्यक्ति हैं।" - क्या यही मतलब है तुम्हारा? यह अभी भी हो सकता है कि यह निश्चित रूप से आवश्यक है या निश्चित रूप से आवश्यक नहीं है, है ना? (और लोग इस बात से सहमत प्रतीत होते हैं कि यह आवश्यक नहीं है।)
k.stm

1
@ k.stm प्रश्न का सामान्य आकार मुझे चिंतित करता है। अगर किसी से पूछा जाए, "क्या औपचारिक भाषाओं की गहरी अवधारणाओं को समझने के लिए बीजगणित आवश्यक है?", मैं इस तथ्य के लिए जानता हूं कि विभिन्न लोग अलग-अलग उत्तर देंगे - उनकी प्राथमिकताओं और स्वाद के आधार पर। मैं यहाँ अलग होने की उम्मीद नहीं करता।
राफेल

1
@ राफेल ओके, मैं समझ गया। लेकिन मुझे लगता है कि यह लोग एक वस्तुनिष्ठ प्रश्न के व्यक्तिपरक उत्तर दे रहे हैं। (ऐसा लगता है जैसे लोग कहते हैं कि "ओह, मैं एक दिन में पांच कप पी रहा हूं और मुझे बहुत अच्छा लग रहा है!" जब उनसे पूछा गया कि कॉफी स्वस्थ है या नहीं।)
k.stm

जवाबों:


15

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

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

टाइप किए गए प्रोग्रामिंग के लिए स्पष्ट दृष्टिकोण शुद्ध कार्यों में अच्छी तरह से काम करते हैं। वास्तव में कुछ सरल टाइपिंग सिस्टम श्रेणियां हैं। यह उदाहरण में वर्णित है

अब समवर्ती प्रक्रियाओं (जैसे सत्र प्रकार) के लिए कई प्रकार के काम हैं और उनमें से कोई भी क्रमिक 2016 के रूप में प्रकृति में स्पष्ट नहीं है।

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

अंत में, श्रेणी सिद्धांत सुंदर गणित है, और अध्ययन के लायक है क्योंकि यह बहुत साफ है।


एक अलग दृष्टिकोण के लिए इस चर्चा में उदय रेड्डी का योगदान देखें।


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

2
@gardenhead तो शायद CT वह सब आपके लिए उपयोगी नहीं है। यदि आप "फ़ंक्शनल प्रोग्रामिंग" स्पेस में बहुत सारे पेपर पढ़ना चाहते हैं, जिसमें प्रकारों पर काम भी शामिल है, तो उनमें से बहुत से सीटी की भाषा का उपयोग करेंगे।
मार्टिन बर्गर

क्या यह कोई नकल है?
राफेल

2
मैं अतिरिक्त रूप से पुस्तक cs.unibo.it/~asperti/PAPERS/book.pdf "श्रेणियाँ, प्रकार और संरचनाएं" सुझाता हूं , जो स्पष्ट रूप से आउट-ऑफ-प्रिंट हैं, लेकिन यह एक पीडीएफ से एक लिंक के लिए है। लेखकों के घर-घर, इसलिए मुझे लगता है कि यह वैध है।
जॉन फोर्कोश

6

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

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

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


मुझे विश्वास नहीं हो रहा है कि श्रेणी सिद्धांत और टाइप थ्योरी के बीच वास्तव में एक परिपूर्ण पत्राचार है जैसे यहाँ दावा किया गया है :

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

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


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


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