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

From Vigyanwiki

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

इतिहास

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


पृष्ठभूमि

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

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

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

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

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

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

विधि अवलोकन

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

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

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

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

रजिस्ट्री

एक्लिप्स फाउंडेशन द्वारा होस्ट की गई एक वैश्विक भाषा सेवा रजिस्ट्री को भाषा सर्वरों को सार्वजनिक रूप से उपलब्ध कराना चाहिए।[9] इसके अतिरिक्त, एलएसपी-संगत कार्यान्वयनों की सूचियां भी हैं, जिनका रखरखाव समुदाय-संचालित लैंगसर्वर.ओआरजी[10] या माइक्रोसॉफ्ट द्वारा किया जाता है।[11]

संदर्भ

  1. Efftinge, Sven; Spönemann, Miro (11 December 2016). "भाषा सर्वर प्रोटोकॉल समझाया". Eclipse Foundation. Retrieved 25 April 2017.
  2. Krill, Paul (27 June 2016). "माइक्रोसॉफ्ट-समर्थित भाषा सर्वर प्रोटोकॉल भाषा, उपकरण इंटरऑपरेबिलिटी के लिए प्रयास करता है". InfoWorld. Retrieved 26 April 2017.
  3. Handy, Alex (27 June 2016). "कोडेनवी, माइक्रोसॉफ्ट और रेड हैट भाषा सर्वर प्रोटोकॉल पर सहयोग करते हैं". SD Times. Retrieved 26 April 2017.
  4. "microsoft/language-server-protocol". GitHub. Retrieved 29 March 2021.
  5. 5.0 5.1 Juarez, Seth (12 May 2016). "मॉडर्न कंपाइलर कंस्ट्रक्शन पर एंडर्स हेजल्सबर्ग". Microsoft. Retrieved 22 February 2017.
  6. Efftinge, Sven (December 2016). "ग्रहण नए प्रोटोकॉल सीख रहा है". Retrieved 26 April 2017.
  7. Tomassetti, Gabriele (16 February 2017). "आपको भाषा सर्वर प्रोटोकॉल के बारे में क्यों जानना चाहिए". Federico Tomassetti. Retrieved 8 May 2017.
  8. Neumann, Alexander (1 June 2016). "Xtext 2.11 unterstützt Language Server Protocol" [Xtext 2.11 supports Language Server Protocol]. Heise Developer (in German). Heise Medien. Retrieved 8 May 2017.{{cite web}}: CS1 maint: unrecognized language (link)
  9. Mohilo, Dominik (28 June 2016). "Polyglott dank Language Server Protocol: Microsoft, Red Hat und Codenvy streben nach der universellen IDE" [Polyglot thanks to the Language Server Protocol: Microsoft, Red Hat and Codenvy are striving for the universal IDE]. Jaxenter (in German). Software & Support Media. Retrieved 8 May 2017.{{cite web}}: CS1 maint: unrecognized language (link)
  10. "लंगसेवेर.ऑर्ग". लंगसेवेर.ऑर्ग. Retrieved 8 May 2017 – via Sourcegraph.
  11. Gamma, Erich (21 January 2019). "भाषा सर्वर". Microsoft. Retrieved 25 January 2019 – via GitHub.


बाहरी संबंध