प्रोग्रामिंग थ्योरी में अनुसंधान और खुली चुनौतियां


32

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

मेरा मानना ​​है कि इस तरह की चर्चा से नए छात्र शोधकर्ताओं को, खुद की तरह, पीएल में रुचि रखने वाले, साथ ही साथ जो पहले से ही कुछ हद तक शामिल हैं, में मदद मिलेगी।


7
सामुदायिक विकि?
सुरेश वेंकट

2
मुझे लगता है कि यह वास्तव में इस सवाल को और उन लोगों को इसका जवाब देने में सुधार करेगा यदि आपने "फ्रंटियर्स ऑफ टीसीएस" प्रश्न का पाठ उद्धृत या संक्षेप किया है। इस प्रश्न के उत्तरों की अपेक्षित गुंजाइश स्पष्ट नहीं है, जबकि दूसरा प्रश्न इस बारे में अधिक सटीक है कि यह क्या अपेक्षित है।
विजय डी

जब मैंने कुछ समय पहले स्टैकओवरफ़्लो पर यह सवाल पूछा था ... मुझे नीचता मिली और मेरा सवाल बंद हो गया!
Rorschach

जवाबों:


23

मुझे लगता है कि पीएल सिद्धांत का समग्र लक्ष्य प्रोग्रामिंग भाषाओं में सुधार के साथ बड़े पैमाने पर प्रोग्रामिंग की लागत को कम करना है और टेचिंकल पारिस्थितिकी तंत्र जिसमें भाषाओं का उपयोग किया जाता है।

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

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

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

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

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

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

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

पीएल अनुसंधान की एक समस्या यह है कि पी / एनपी प्रश्न की तरह कोई स्पष्ट खुली समस्या नहीं है जहां हम तुरंत कह सकते हैं कि प्रस्तावित समाधान काम करता है या नहीं।


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

1
@NikosM। मैं मानता हूँ, QC एक बड़ी बात है और इसकी भारी पड़ताल की जाती है। यह पत्र क्वांटम यांत्रिकी और प्रोग्रामिंग भाषा सिद्धांत की नींव के बीच एक आश्चर्यजनक संबंध दिखाता है, जो केवल अमूर्तता से पता चलता है।
मार्टिन बर्गर

अच्छा, शायद एक सवाल औपचारिक (या औपचारिक नहीं) संबंधों के इन प्रकारों को संबोधित कर सकता है
निकोस एम।

11

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

  1. कार्यक्रम वाक्य रचना हैं।

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

    • बहुत कम से कम, रनटाइम त्रुटि तब होती है जब निष्पादन एक लापता हिस्से को मिलता है।
    • अधूरे कार्यक्रम चलाने में क्या अच्छा हो सकता है?
  3. प्रोग्राम कंप्यूटर को निर्देश देने के बारे में हैं।

    • प्रोग्रामिंग भाषा डिजाइन में कानूनों को लिखने और व्यवस्थित करने के तरीके के बारे में कहने के लिए कुछ भी नहीं है। apliances।
    • जीवाणु कार्यक्रम नहीं लिखते हैं।
  4. प्रोग्रामिंग आम लोगों की तरह है और इसे आम लोग नहीं कर सकते।

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

मुझे लगता है कि मैं आगे बढ़ सकता था।


2
जेम्स: बहुत बढ़िया, मैं अपनी चाची को सूचित करूँगा। मार्टिन: यह ठीक उसी तरह की बात है जिस पर मैं बात कर रहा हूं - गैर-पाठीय प्रोग्रामिंग की स्थापना निश्चित रूप से नहीं हुई है क्योंकि पीएल समुदाय इसे गंभीरता से नहीं ले रहा है, क्योंकि यह आश्वस्त रूप से स्थापित नहीं किया गया है। लेकिन यह मेरे लिए काफी स्पष्ट है कि मनुष्य स्क्रीन पर शब्द लिखने के लिए नहीं बने थे। हम सामान फेंकने और ब्लूबेरी लेने में अच्छे हैं।
प्रेमिका बाउर

1
@AndrejBauer एक वैज्ञानिक तर्क के रूप में, "यह मेरे लिए काफी स्पष्ट है" सुधार से परे नहीं है। यदि आप लेखन प्रणालियों के इतिहास को देखते हैं, जिनमें से प्रोग्रामिंग भाषाएं हैं, लेकिन एक हालिया उदाहरण है, तो उनका ऐतिहासिक प्रक्षेपवक्र तर्कशास्त्र लेखन से दूर रहा है। शायद स्ट्रिंग्स को पार्स करने की हमारी क्षमता ब्लूबेरी से अधिक प्रासंगिक है। अक्षर लेखन सहस्राब्दियों से विकसित हुआ है, इसलिए इसकी संभावना नहीं है कि इसमें बड़े पैमाने पर, आसानी से तय होने वाले बग हों। उस ने कहा, मुझे यह विश्वास करते हुए खुशी हो रही है कि हम ASCII आधारित रैखिक तारों से बेहतर कर सकते हैं। मुझे लगता है कि हम ऐसा करने से पहले थोड़ी देर करेंगे।
मार्टिन बर्गर

1
मेरे जवाब का मतलब "बॉक्स के बाहर सोचना" है। पीएल अनुसंधान में छिपी हुई मान्यताओं की जांच करने और यह देखने के लिए कि वे संभावित पीएल अनुसंधान को कैसे सीमित करते हैं।
एंड्रेज बॉयर

4
@AndrejBauer, मुझे लगता है कि पीओपीएल के दायरे को सीमित करना एक गलती है - इस तरह के बहुत से काम OOPSLA, या ICSE में, या यहां तक ​​कि CHI में भी किए जाते हैं। जब तक कोई उपन्यास औपचारिक दृष्टिकोण न हो, तब तक POPL में कोई दिलचस्पी नहीं है, लेकिन POPL संपूर्ण PL समुदाय नहीं है।
सैम तोबिन-होचस्टाट

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

0

एक समस्या है जिसके बारे में मैं सोच रहा हूं। मुझे नहीं पता कि क्या यह एक खुली चुनौती के रूप में योग्य है।

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

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

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


संगति अति पराजित है।
कन्या बाउर

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

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

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

1
मुझे लगता है कि मैं सिर्फ "शुद्ध सिद्धांतकारों" के बारे में सोच रहा था, बस। कृपया मेरी उपेक्षा करें।
वृषभ बाउर

0

पिछली शताब्दी में लागू और सैद्धांतिक पक्षों से प्रोग्रामिंग भाषाओं में एक जबरदस्त नवाचार और विस्फोट हुआ है, फिर भी एक मामला यह हो सकता है कि यह कंप्यूटिंग के इतिहास में एक "विकासवादी विस्फोट" के समान एक विलक्षण / एक बार की घटना है (यह भी देखें " cs.se पर इतनी प्रोग्रामिंग भाषाएं क्यों हैं? ), और इसलिए कि भविष्य इस संबंध में अतीत की तरह नहीं होगा। हालाँकि, कुछ पहचाने जाने योग्य लंबी दूरी की वर्तमान प्रवृत्तियाँ खेल / विकास के अंतर्गत हैं।

  • प्रोग्रामिंग / सॉफ्टवेयर जटिलता और इसे कम करने / कम करने / प्रबंधित करने के तरीकों को कम करना एक ऐसा विषय है जिसने हमेशा भाषा डिजाइन को प्रभावित किया है और संभवतः वर्तमान युग में बहुत बड़े / जटिल सॉफ्टवेयर सिस्टम के साथ काफी आम है। यह OOP डिज़ाइन के औचित्य का एक प्रमुख पहलू था, अब तक हमारे पास अत्यधिक जटिल OOP सिस्टम हैं! इसका ध्यान केंद्रित करने से क्षेत्र में पौराणिक मानव-मास जैसे क्लासिक्स पैदा हुए हैं ब्रूक्स द्वारा जो कई मायनों में अभी भी एक बहुत ही मान्य परिप्रेक्ष्य है, संभवतः यह तब भी अधिक प्रासंगिक था जब इसे लिखा गया था।

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

  • डेटामाइनिंग / बड़ा डेटा । ये प्रोग्रामिंग लैंग्वेज डिज़ाइन को प्रभावित कर रहे हैं। डेटाबेस आर्किटेक्चर में भी नई दिशाएँ प्रोग्रामिंग भाषाओं को प्रभावित / प्रभावित कर रही हैं।

  • सुपरकंप्यूटिंग का भाषा डिजाइन पर एक महत्वपूर्ण प्रभाव पड़ता है और साथ ही मानचित्रण में कटौती जैसी नई भाषाओं के साथ समानता और डेटामाइनिंग / बड़े डेटा के साथ ओवरलैप होता है।

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

  • एआई । यह एक लंबे समय तक चलने वाले वाइल्डकार्ड से अधिक है और यह अभी स्पष्ट नहीं है कि यह कंप्यूटर भाषाओं और प्रोग्रामिंग को कैसे प्रभावित करेगा लेकिन इसकी संभवतः बहुत ही महत्वपूर्ण होने जा रही है। अतीत में [एक अलग रूप में] इसने प्रोलॉग जैसी संपूर्ण भाषाओं का नेतृत्व किया । हड़ताली परिणामों के साथ इसे कैसे लागू किया जा सकता है इसका एक प्रारंभिक संकेत जेनेटिक एल्गोरिदम / जेनेटिक प्रोग्रामिंग है

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

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