मेरा उत्तर वास्तव में गाइल्स का एक विस्तार है ', जो मैंने अपने लिखे जाने से पहले नहीं पढ़ा था। शायद यह फिर भी मददगार हो।
मुझे आपके प्रश्न का उत्तर देने का अपना प्रयास शुरू करना चाहिए, प्रोग्रामिंग लैंग्वेज के दो आयामों के बीच अंतर के साथ, जो सामान्य रूप से प्रोग्रामिंग थ्योरी से काफी अलग तरीके से संबंधित है और विशेष रूप से कैलकुलस में प्रक्रिया करता है।
बाद में आमतौर पर उद्योग में एक उत्पाद के रूप में प्रोग्रामिंग भाषाओं को प्रदान करने के उद्देश्य से होता है। Microsoft में Oracle और C # पर जावा विकसित करने वाली टीमें उदाहरण हैं। इसके विपरीत, शुद्ध अनुसंधान उत्पादों से बंधा नहीं है। इसका उद्देश्य प्रोग्रामिंग भाषाओं को आंतरिक रुचि की वस्तुओं के रूप में समझना और सभी प्रोग्रामिंग भाषाओं में अंतर्निहित गणितीय संरचनाओं का पता लगाना है।
डायवर्जेंट लक्ष्यों के कारण, प्रोग्रामिंग भाषा सिद्धांत के विभिन्न पहलू शुद्ध शोध में प्रासंगिक हैं और उत्पाद केंद्रित आर एंड डी में नीचे दी गई तस्वीर इस बात का संकेत दे सकती है कि महत्वपूर्ण क्या है।
कोई इस बिंदु पर पूछ सकता है कि दो आयाम इतने भिन्न क्यों हैं और वे फिर भी कैसे संबंधित हैं।
प्रमुख अंतर्दृष्टि यह है कि प्रोग्रामिंग भाषा अनुसंधान और विकास के कई आयाम हैं: तकनीकी, सामाजिक और आर्थिक। लगभग परिभाषा के अनुसार, उद्योग प्रोग्रामिंग भाषाओं के आर्थिक भुगतान में रुचि रखता है। Microsoft एट अल भाषाओं को उनके दिल की भलाई से विकसित नहीं करते हैं, लेकिन क्योंकि उनका मानना है कि प्रोग्रामिंग भाषाएं उन्हें आर्थिक लाभ देती हैं। और उन्होंने गहराई से जांच की है कि क्यों कुछ प्रोग्रामिंग भाषाएं सफल होती हैं, और अन्य, समान रूप से या अधिक उन्नत सुविधाओं के साथ, ऐसा नहीं करते हैं। और उन्होंने पाया कि एक भी कारण नहीं है। प्रोग्रामिंग भाषा और उनके वातावरण जटिल हैं, और इसलिए किसी भी विशिष्ट भाषा को अपनाने या उसकी अनदेखी करने के कारण हैं। लेकिन एक प्रोग्रामिंग भाषा की सफलता के लिए सबसे बड़ा कारक प्रोग्रामर का उन भाषाओं के लिए तरजीह है जो पहले से ही व्यापक रूप से उपयोग किए जाते हैं: अधिक लोग एक भाषा का उपयोग करते हैं, अधिक पुस्तकालय, उपकरण, शिक्षण सामग्री उपलब्ध होती है, और अधिक उत्पादक एक प्रोग्रामर होता है। उस भाषा का उपयोग कर सकते हैं। इसे नेटवर्क इफेक्ट भी कहा जाता है। एक और कारण व्यक्तियों और संगठन के लिए उच्च लागत वाली स्विचिंग भाषाएं हैं: विशेष रूप से एक नहीं तो अनुभवी प्रोग्रामर के लिए, और जब परिचित भाषाओं के लिए शब्दार्थ दूरी बड़ी है, तो एक गंभीर, समय लेने वाला प्रयास है। इन तथ्यों को देखते हुए, कोई यह पूछ सकता है कि नई भाषाओं को कर्षण क्यों मिलता है? कंपनियां नई भाषाएं क्यों विकसित करती हैं? हम सिर्फ जावा या कोबोल के साथ क्यों नहीं रहते? मुझे लगता है कि मट्ठा एक भाषा के सफल होने के कई प्रमुख कारण हैं,
प्रोग्रामिंग का एक नया डोमेन खुल जाता है जिसमें विस्थापित होने का कोई कारण नहीं है। प्राथमिक उदाहरण जावास्क्रिप्ट के अपने सहवर्ती वृद्धि के साथ वेब है।
भाषा चिपचिपाहट। इससे मेरा मतलब भाषा बदलने की ऊंची कीमत से है। लेकिन कभी-कभी प्रोग्रामर विभिन्न क्षेत्रों में जाते हैं, उनके साथ एक प्रोग्रामिंग भाषा लेते हैं, और नए क्षेत्र में पुरानी भाषा के साथ सफल होते हैं।
एक भाषा को गंभीर वित्तीय मारक क्षमता वाली एक बड़ी कंपनी द्वारा धक्का दिया जाता है। यह समर्थन अपनाने के जोखिम को कम करता है, क्योंकि शुरुआती अपनाने से यह सुनिश्चित हो सकता है कि भाषा अभी भी कुछ वर्षों में समर्थित होगी। इसका एक अच्छा उदाहरण C # है।
एक भाषा सम्मोहक टूल और इको-सिस्टम के साथ आ सकती है। यहाँ भी C # और it .Net और Visual Studio Eco-system को एक उदाहरण के रूप में उल्लेख किया जा सकता है।
पुरानी भाषाओं में नई सुविधाएँ हैं। जावा के दिमाग में आता है, जो प्रत्येक पुनरावृत्ति में, कार्यात्मक प्रोग्रामिंग परंपरा से अधिक अच्छे विचारों को चुनता है।
अंत में, एक नई भाषा में आंतरिक तकनीकी फायदे हो सकते हैं, उदाहरण के लिए अधिक अभिव्यंजक हों, अच्छे सिंटैक्स हों, टाइपिंग सिस्टम जो अधिक त्रुटियों को पकड़ते हैं, आदि।
इस पृष्ठभूमि को देखते हुए, यह एक आश्चर्य के रूप में नहीं आना चाहिए कि शुद्ध प्रोग्रामिंग भाषा अनुसंधान, और वाणिज्यिक प्रोग्रामिंग भाषा के विकास के बीच कुछ डिस्कनेक्ट है। जबकि सॉफ्टवेयर निर्माण और विकास दोनों को अधिक कुशल बनाने का लक्ष्य है, विशेष रूप से बड़े पैमाने पर सॉफ्टवेयर के लिए, औद्योगिक प्रोग्रामिंग भाषा का काम एक महत्वपूर्ण द्रव्यमान तक पहुंचने और नेटवर्क प्रभाव प्राप्त करने के लिए त्वरित गोद लेने की सुविधा में अधिक रुचि होना चाहिए। यह उन चीजों पर अनुसंधान पर ध्यान केंद्रित करता है जो प्रोग्रामर की देखभाल करते हैं। और यह पुस्तकालय की उपलब्धता, संकलक की गति, संकलित कोड की गुणवत्ता, पोर्टेबिलिटी और इसी तरह की चीजें हैं। प्रक्रिया पथरी जैसा कि आज हम इसका अभ्यास करते हैं, मुख्यधारा के प्रोजेक्ट्स पर काम करने वाले प्रोग्रामरों के लिए बहुत कम उपयोग है (हालांकि मुझे विश्वास है कि भविष्य में यह बदल जाएगा)।
λπβकार्यात्मक प्रोग्रामिंग, संकल्प / तर्क-प्रोग्रामिंग के लिए एकीकरण, समवर्ती संगणना के लिए नाम से गुजरना) के लिए कटौती। यह समझने के लिए कि क्या स्काला जैसी भाषा में व्यवहार्य पूर्ण प्रकार का निष्कर्ष हो सकता है, हमें जेवीएम के बारे में चिंता करने की आवश्यकता नहीं है। वास्तव में जेवीएम के बारे में सोचने से टाइप-इनफरेंस की बेहतर समझ विकसित होगी। यही कारण है कि छोटे मूल गणना में गणना का अमूर्त महत्वपूर्ण और शक्तिशाली है।
तो आप एक बड़े पैमाने पर सैंडबॉक्स के रूप में प्रोग्रामिंग भाषा अनुसंधान के बारे में सोच सकते हैं जहां लोग खिलौनों के साथ खेलते हैं, और अगर वे किसी विशिष्ट खिलौने के साथ खेलते समय कुछ दिलचस्प पाते हैं, और खिलौने की पूरी तरह से जांच की है, तो वह दिलचस्प खिलौना मुख्यधारा की औद्योगिक स्वीकृति के लिए अपना लंबा मार्च शुरू करता है । मैं लंबे मार्च कहता हूं क्योंकि प्रोग्रामिंग भाषा शोधकर्ता द्वारा आविष्कार की गई भाषा की विशेषताओं को व्यापक रूप से स्वीकार किए जाने से पहले दशकों लगते हैं। उदाहरण के लिए कचरा संग्रह की कल्पना 1950 के दशक में की गई और 1990 के दशक में जावा के साथ व्यापक रूप से उपलब्ध हो गया। पैटर्न मिलान 1970 तक वापस आ जाता है और स्केल के बाद से इसका व्यापक रूप से उपयोग किया जाता है।
प्रक्रिया पथरी एक विशेष रूप से दिलचस्प खिलौना है। लेकिन पूरी तरह से जांच की जानी बहुत नई बात है। शुद्ध शोध में एक और दशक लगेगा। वर्तमान में प्रक्रिया सिद्धांत अनुसंधान में क्या चल रहा है, प्रोग्रामिंग भाषा अनुसंधान की एकल सबसे बड़ी सफलता की कहानी है, (अनुक्रमिक) प्रकारों के सिद्धांत और संदेश गुजरता के लिए प्रकार के सिद्धांत को विकसित करना है। अनुक्रमिक प्रोग्रामिंग के लिए मध्यम अभिव्यक्ति की टाइपिंग सिस्टम, हिंडले-मिलनर कहते हैं, अब अच्छी तरह से समझा, सर्वव्यापी और काम कर रहे प्रोग्रामरों द्वारा स्वीकार किए जाते हैं। हम समवर्ती प्रोग्रामिंग के लिए मध्यम रूप से अभिव्यंजक प्रकार रखना चाहते हैं। इस पर शोध की शुरुआत 1980 के दशक में मिलनर, संगियोर्गी, टर्नर, कोबायाशी, होंडा और अन्य लोगों द्वारा की गई थी, जो अक्सर रैखिक रूप से तर्क के विचार पर आधारित होते हैं, स्पष्ट रूप से या स्पष्ट रूप से, रैखिक तर्क से आते हैं। पिछले कुछ वर्षों में गतिविधि में एक बड़ी वृद्धि देखी गई है और मैं उम्मीद करता हूं कि यह भविष्य में भविष्य के लिए जारी रहेगा। मैं इस काम की भी उम्मीद करता हूं कि इस उत्पाद में लीक होने वाले आरएंडडी पर ध्यान केंद्रित करना शुरू कर दिया जाए, जो कि व्यावहारिक कारण के लिए भागों में है, जो युवा शोधकर्ता हैं जिन्हें प्रक्रिया पथरी में प्रशिक्षित किया गया है, वे औद्योगिक आरएंडडी प्रयोगशालाओं में काम करेंगे और सीपीयू और कंप्यूटर वास्तुकला के विकास की वजह से दूर होंगे। संगणना के अनुक्रमिक रूपों से।
सारांश में, मुझे यह चिंता नहीं होगी कि आप अत्याधुनिक प्रोग्रामिंग भाषा सिद्धांत नहीं पाते हैं, जैसे प्रक्रिया कैलकुलस भाषा के निर्माण के अपने काम में उपयोगी है। ऐसा सिर्फ इसलिए है क्योंकि अत्याधुनिक सिद्धांत वर्तमान प्रोग्रामिंग भाषाओं की चिंताओं को दूर नहीं करते हैं। यह भविष्य की भाषाओं के बारे में है। 'वास्तविक दुनिया' को पकड़ने में थोड़ा समय लगेगा। आज के लिए भाषाओं का निर्माण करने के लिए आप जिस ज्ञान का उपयोग करते हैं वह अतीत का प्रोग्रामिंग भाषा सिद्धांत है। मैं आपको प्रक्रिया पथरी के बारे में और जानने के लिए प्रोत्साहित करता हूं क्योंकि यह सैद्धांतिक कंप्यूटर विज्ञान के सभी सबसे अधिक बाहर निकलने वाले क्षेत्रों में से एक है।