लैंग्वेज सर्वर प्रोटोकॉल

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

इतिहास
एलएसपी मूल रूप से [[माइक्रोसॉफ्ट विजुअल स्टूडियो कोड]] के लिए विकसित किया गया था और अब यह एक खुला मानक है। 27 जून 2016 को, Microsoft ने प्रोटोकॉल के विनिर्देशन को मानकीकृत करने के लिए Red Hat और Codenvy के साथ सहयोग की घोषणा की। प्रोटोकॉल समर्थित है और तीन कंपनियों द्वारा अपनाया गया है। इसके विनिर्देश GitHub पर होस्ट और विकसित किए गए हैं।

पृष्ठभूमि
आधुनिक आईडीई डेवलपर्स को कोड पूरा करने, पुनर्रचना, सिंबल टेबल पर नेविगेट करने जैसी परिष्कृत सुविधाएँ प्रदान करते हैं। प्रतीक की परिभाषा, सिंटैक्स हाइलाइटिंग, और त्रुटि और चेतावनी मार्कर।

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

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

एलएसपी प्रोग्रामिंग भाषाओं तक ही सीमित नहीं है। इसका उपयोग किसी भी प्रकार की टेक्स्ट-आधारित भाषा, जैसे विनिर्देशों के लिए किया जा सकता है या डोमेन-विशिष्ट भाषा|डोमेन-विशिष्ट भाषाएँ (DSL)।

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

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

भाषा सर्वर प्रोटोकॉल क्लाइंट और भाषा सर्वर के बीच आदान-प्रदान किए जाने वाले संदेशों को परिभाषित करता है। वे JSON-RPC हैं जो HTTP के समान हेडर से पहले हैं। संदेश सर्वर या क्लाइंट से उत्पन्न हो सकते हैं।

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

रजिस्ट्री
एक्लिप्स फाउंडेशन द्वारा होस्ट की गई एक वैश्विक भाषा सेवा रजिस्ट्री को भाषा सर्वरों को सार्वजनिक रूप से उपलब्ध कराना चाहिए। इसके अतिरिक्त, समुदाय-संचालित Langserver.org द्वारा अनुरक्षित LSP-संगत कार्यान्वयनों की सूचियाँ हैं या माइक्रोसॉफ्ट।

बाहरी संबंध

 * Official website