प्रोग्रामिंग में होमोटोपी प्रकार के सिद्धांत के व्यावहारिक निहितार्थ क्या हैं?


11

मैं जावास्क्रिप्ट / रूबी दुनिया से आने के बाद हास्केल सीखना शुरू कर रहा हूं। मैं https://github.com/HoTT और होमोटॉपी टाइप थ्योरी किताब लेकर आया हूं , जिसे पढ़ने के लिए मैं बहुत उत्सुक हूं।

हालाँकि, मैं गणित और टाइप थ्योरी अवधारणाओं को सीखता जाऊंगा क्योंकि मैं जाता हूं, इसलिए ऐसा लगता है कि यह समझने में बहुत समय लगेगा कि होमोटी टाइप सिद्धांत का अभ्यास करने वाले प्रोग्रामर के लिए क्या मतलब होगा।

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

धन्यवाद, बहुत अधिक बुनियादी स्तर पर इसके चारों ओर मेरे सिर को लपेटने के लिए बहुत उत्सुक।


मुझे उम्मीद है कि यह है, और हमेशा प्रोग्रामर अभ्यास करने के लिए असंवेदनशील रहेगा। सबसे अच्छा, हम तेजी से संकलक या जादुई ब्लैक बॉक्स प्राप्त कर सकते हैं जो गणितीय-फू का लाभ उठाते हैं।
तेलस्टिन 22

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

1
मुझे पता नहीं है। मैंने सार पढ़ा और तुरंत इसे असंवेदनशील अकादमिक मुंबो-जंबो के लिए बाल्टी में गिरा दिया।
तेलस्टिन


4
@Telastyn: यदि आप पुर्तगाली में एक पुस्तक डाउनलोड करते हैं तो यह भी अयोग्य होगा जब तक आपने भाषा सीखने की कोशिश नहीं की। सार्वजनिक रूप से अपमानजनक शब्द मुंबो-जंबो द्वारा पुर्तगाली किताबों की निंदा क्यों की जाती है ? विशेष रूप से आदिम पुनरावर्ती कार्यों को शुरू करने के लिए Gödels प्रेरणा अत्यंत विशेष रूप से थी, क्योंकि दुनिया ने 30 के दशक में भी कोई कार्यक्रम नहीं चलाया था। मुझे नहीं लगता कि सिर्फ इसलिए कि एक प्रैक्टिस करने वाला प्रोग्रामर है, अकादमिक विषय आपकी क्षमताओं के लिए हमेशा "अपमानजनक" रहेगा।
निकोलज-के

जवाबों:


15

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

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

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

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

HoTT हमें इस फैंसी पुनर्लेखन तंत्र और इन समृद्ध रूप से परिभाषित प्रकारों को सही ठहराने के लिए एक प्रकार का सिद्धांत देता है, क्योंकि यह समानता के समकक्ष होने की धारणा को बढ़ावा देता है। यह देखा जाना बाकी है कि यह वास्तव में व्यवहार में कैसे चलेगा, लेकिन यह हमें सैद्धांतिक ढांचा देता है, जिस पर भविष्य के काम को आधार बनाया जा सकता है।

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