लैंग्वेज सर्वर प्रोटोकॉल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|Protocol between IDEs and programming language-specific servers}}लैंग्वेज सर्वर प्रोटोकॉल (LSP) [[स्रोत कोड संपादक]]ों या एकीकृत विकास वातावरण (IDEs) और [[सर्वर (कंप्यूटिंग)]] के बीच उपयोग के लिए एक खुला, [[JSON-RPC]]- आधारित [[संचार प्रोटोकॉल]] है जो [[प्रोग्रामिंग भाषा]]-विशिष्ट सुविधाएँ प्रदान करता है जैसे स्वतः पूर्ण, [[ वाक्य - विन्यास पर प्रकाश डालना ]] और चेतावनियों और त्रुटियों के साथ-साथ [[कोड रीफैक्टरिंग]] रूटीन का अंकन। प्रोटोकॉल का लक्ष्य प्रोग्रामिंग भाषा समर्थन को किसी दिए गए संपादक या आईडीई से स्वतंत्र रूप से कार्यान्वित और वितरित करने की अनुमति देना है।<ref>{{cite web|url=https://www.youtube.com/watch?v=2GqpdfIAhz8|title=भाषा सर्वर प्रोटोकॉल समझाया|date=11 December 2016|first1=Sven|last1=Efftinge|first2=Miro|last2=Spönemann|publisher=Eclipse Foundation|access-date=25 April 2017}}</ref>
{{Short description|Protocol between IDEs and programming language-specific servers}}'''लैंग्वेज सर्वर प्रोटोकॉल''' (एलएसपी) [[स्रोत कोड संपादक|स्रोत कोड संपादकों]] या एकीकृत विकास वातावरण (आईडीई) और [[सर्वर (कंप्यूटिंग)]] के बीच उपयोग के लिए खुला [[JSON-RPC|जेएसओएन-आरपीसी]]- आधारित [[संचार प्रोटोकॉल]] है जो [[प्रोग्रामिंग भाषा]]-विशिष्ट सुविधाएँ प्रदान करता है जैसे स्वतः पूर्ण [[ वाक्य - विन्यास पर प्रकाश डालना |सिंटैक्स हाइलाइटिंग]] और चेतावनियों और त्रुटियों के साथ-साथ [[कोड रीफैक्टरिंग]] रूटीन का अंकन प्रोटोकॉल का लक्ष्य प्रोग्रामिंग भाषा समर्थन को किसी दिए गए संपादक या आईडीई से स्वतंत्र रूप से कार्यान्वित और वितरित करने की अनुमति देना है।<ref>{{cite web|url=https://www.youtube.com/watch?v=2GqpdfIAhz8|title=भाषा सर्वर प्रोटोकॉल समझाया|date=11 December 2016|first1=Sven|last1=Efftinge|first2=Miro|last2=Spönemann|publisher=Eclipse Foundation|access-date=25 April 2017}}</ref>
 


== इतिहास ==
== इतिहास ==


एलएसपी मूल रूप से [[[[माइक्रोसॉफ्ट]] विजुअल स्टूडियो कोड]] के लिए विकसित किया गया था और अब यह एक खुला मानक है। 27 जून 2016 को, Microsoft ने प्रोटोकॉल के विनिर्देशन को मानकीकृत करने के लिए [[Red Hat]] और [[Codenvy]] के साथ सहयोग की घोषणा की। प्रोटोकॉल समर्थित है और तीन कंपनियों द्वारा अपनाया गया है।<ref name="InfoWorld 2016">{{cite web|url=http://www.infoworld.com/article/3088698/application-development/microsoft-backed-langauge-server-protocol-strives-for-language-tools-interoperability.html|title=माइक्रोसॉफ्ट-समर्थित भाषा सर्वर प्रोटोकॉल भाषा, उपकरण इंटरऑपरेबिलिटी के लिए प्रयास करता है|first=Paul|last=Krill|date=27 June 2016|accessdate=26 April 2017|publisher=InfoWorld}}</ref><ref name="SD Times 2016">{{cite web|url=http://sdtimes.com/codenvy-microsoft-red-hat-collaborate-language-server-protocol/|title=कोडेनवी, माइक्रोसॉफ्ट और रेड हैट भाषा सर्वर प्रोटोकॉल पर सहयोग करते हैं|first=Alex|last=Handy|date=27 June 2016|accessdate=26 April 2017|publisher=SD Times}}</ref> इसके विनिर्देश [[GitHub]] पर होस्ट और विकसित किए गए हैं।<ref>{{cite web |url = https://github.com/microsoft/language-server-protocol |title = microsoft/language-server-protocol |work = [[GitHub]] |access-date = 29 March 2021 }}</ref>
एलएसपी मूल रूप से [[माइक्रोसॉफ्ट]] विजुअल स्टूडियो कोड के लिए विकसित किया गया था और अब यह खुला मानक है। 27 जून 2016 को माइक्रोसॉफ्ट ने प्रोटोकॉल के विनिर्देशन को मानकीकृत करने के लिए [[Red Hat|रेड हैट]] और [[Codenvy|कोडेनवी]] के साथ सहयोग की घोषणा की थी। प्रोटोकॉल समर्थित है और तीन कंपनियों द्वारा अपनाया गया है।<ref name="InfoWorld 2016">{{cite web|url=http://www.infoworld.com/article/3088698/application-development/microsoft-backed-langauge-server-protocol-strives-for-language-tools-interoperability.html|title=माइक्रोसॉफ्ट-समर्थित भाषा सर्वर प्रोटोकॉल भाषा, उपकरण इंटरऑपरेबिलिटी के लिए प्रयास करता है|first=Paul|last=Krill|date=27 June 2016|accessdate=26 April 2017|publisher=InfoWorld}}</ref><ref name="SD Times 2016">{{cite web|url=http://sdtimes.com/codenvy-microsoft-red-hat-collaborate-language-server-protocol/|title=कोडेनवी, माइक्रोसॉफ्ट और रेड हैट भाषा सर्वर प्रोटोकॉल पर सहयोग करते हैं|first=Alex|last=Handy|date=27 June 2016|accessdate=26 April 2017|publisher=SD Times}}</ref> इसके विनिर्देश [[GitHub|गिटहब]] पर होस्ट और विकसित किए गए हैं।<ref>{{cite web |url = https://github.com/microsoft/language-server-protocol |title = microsoft/language-server-protocol |work = [[GitHub]] |access-date = 29 March 2021 }}</ref>




== पृष्ठभूमि ==
== पृष्ठभूमि ==


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


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


एक विशिष्ट प्रोग्रामिंग भाषा के लिए पारंपरिक संकलक या [[दुभाषिया (कंप्यूटिंग)]] सामान्यतः इन भाषा सेवाओं को प्रदान करने में असमर्थ होते हैं, क्योंकि वे या तो स्रोत कोड को [[ वस्तु कोड ]] में बदलने या कोड को तुरंत निष्पादित करने के लक्ष्य के साथ लिखे जाते हैं। इसके अतिरिक्त, भाषा सेवाओं को स्रोत कोड को संभालने में सक्षम होना चाहिए जो अच्छी तरह से गठित नहीं है | अच्छी तरह से गठित है, उदा। क्योंकि प्रोग्रामर संपादन के बीच में है और उसने अभी तक एक कथन, प्रक्रिया या अन्य निर्माण को टाइप करना समाप्त नहीं किया है। इसके अतिरिक्त, स्रोत कोड फ़ाइल में छोटे बदलाव जो टाइपिंग के समय किए जाते हैं, सामान्यतः कार्यक्रम के शब्दार्थ को बदल देते हैं। उपयोगकर्ता को तत्काल प्रतिक्रिया प्रदान करने के लिए, संपादन उपकरण को एक विशिष्ट संशोधन के वाक्य-विन्यास और शब्दार्थ परिणामों का बहुत तेज़ी से मूल्यांकन करने में सक्षम होना चाहिए। संकलक और दुभाषिए इसलिए एक संपादन उपकरण के उपभोग के लिए आवश्यक जानकारी का उत्पादन करने के लिए एक खराब उम्मीदवार प्रदान करते हैं।<ref name="Hejlsberg 2016">{{ cite web | url = https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction | title = मॉडर्न कंपाइलर कंस्ट्रक्शन पर एंडर्स हेजल्सबर्ग| first = Seth | last = Juarez | publisher = Microsoft | date = 12 May 2016 | accessdate = 22 February 2017 }}</ref>
एक विशिष्ट प्रोग्रामिंग भाषा के लिए पारंपरिक संकलक या [[दुभाषिया (कंप्यूटिंग)]] सामान्यतः इन भाषा सेवाओं को प्रदान करने में असमर्थ होते हैं, क्योंकि वे या तो स्रोत कोड को [[ वस्तु कोड |वस्तु कोड]] में बदलने या कोड को तुरंत निष्पादित करने के लक्ष्य के साथ लिखे जाते हैं। इसके अतिरिक्त भाषा सेवाओं को स्रोत कोड को संभालने में सक्षम होना चाहिए जो अच्छी तरह से गठित नहीं है | अच्छी तरह से गठित है, उदा। क्योंकि प्रोग्रामर संपादन के बीच में है और उसने अभी तक कथन, प्रक्रिया या अन्य निर्माण को टाइप करना समाप्त नहीं किया है। इसके अतिरिक्त, स्रोत कोड फ़ाइल में छोटे बदलाव जो टाइपिंग के समय किए जाते हैं, सामान्यतः कार्यक्रम के शब्दार्थ को बदल देते हैं। उपयोगकर्ता को तत्काल प्रतिक्रिया प्रदान करने के लिए, संपादन उपकरण को विशिष्ट संशोधन के वाक्य-विन्यास और शब्दार्थ परिणामों का बहुत तेज़ी से मूल्यांकन करने में सक्षम होना चाहिए। संकलक और दुभाषिए इसलिए संपादन उपकरण के उपभोग के लिए आवश्यक जानकारी का उत्पादन करने के लिए खराब उम्मीदवार प्रदान करते हैं।<ref name="Hejlsberg 2016">{{ cite web | url = https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction | title = मॉडर्न कंपाइलर कंस्ट्रक्शन पर एंडर्स हेजल्सबर्ग| first = Seth | last = Juarez | publisher = Microsoft | date = 12 May 2016 | accessdate = 22 February 2017 }}</ref>
विजुअल स्टूडियो कोड के विकास के लिए भाषा सर्वर प्रोटोकॉल के डिजाइन और कार्यान्वयन से पहले, अधिकांश भाषा सेवाएं सामान्यतः  किसी दिए गए आईडीई या अन्य संपादक से जुड़ी होती थीं। भाषा सर्वर प्रोटोकॉल की अनुपस्थिति में, भाषा सेवाओं को सामान्यतः  टूल-विशिष्ट एक्सटेंशन API का उपयोग करके कार्यान्वित किया जाता है। दूसरे संपादन टूल को समान भाषा सेवा प्रदान करने के लिए वर्तमान  कोड को अनुकूलित करने के प्रयास की आवश्यकता होती है जिससे सेवा दूसरे संपादक के एक्सटेंशन इंटरफेस को लक्षित कर सके।<ref>{{cite web|url=http://www.eclipse.org/community/eclipse_newsletter/2016/december/article5.php|title=ग्रहण नए प्रोटोकॉल सीख रहा है|first=Sven|last=Efftinge|date=December 2016|accessdate=26 April 2017}}</ref>
भाषा सर्वर प्रोटोकॉल भाषा सेवाओं को संपादक से अलग करने की अनुमति देता है जिससे सेवाओं को एक सामान्य-उद्देश्य वाले भाषा सर्वर के अंदर  समाहित किया जा सके। कोई भी संपादक वर्तमान  भाषा सर्वरों का उपयोग करके कई अलग-अलग भाषाओं के लिए परिष्कृत समर्थन प्राप्त कर सकता है। इसी तरह, एक प्रोग्रामर जो एक नई प्रोग्रामिंग भाषा के विकास में सम्मिलित  है, उस भाषा के लिए सेवाएं वर्तमान  संपादन उपकरणों के लिए उपलब्ध करा सकता है।<ref name="Hejlsberg 2016"/>  भाषा सर्वर प्रोटोकॉल के माध्यम से भाषा सर्वर का उपयोग करने से संपादन उपकरण के विक्रेताओं पर बोझ भी कम हो जाता है, क्योंकि विक्रेताओं को उन भाषाओं के लिए स्वयं की भाषा सेवाओं को विकसित करने की आवश्यकता नहीं होती है, जब तक कि भाषा सर्वर पहले से ही समर्थन करना चाहते हैं। कार्यान्वित किया गया। लैंग्वेज सर्वर प्रोटोकॉल इच्छुक तीसरे पक्ष द्वारा योगदान किए गए सर्वरों के वितरण और विकास को भी सक्षम बनाता है, जैसे कि अंतिम उपयोगकर्ता, उपयोग में आने वाली प्रोग्रामिंग भाषा के लिए कंपाइलर के विक्रेता या संपादक के विक्रेता द्वारा अतिरिक्त भागीदारी के बिना भाषा समर्थन जोड़ा जा रहा है।


एलएसपी प्रोग्रामिंग भाषाओं तक ही सीमित नहीं है। इसका उपयोग किसी भी प्रकार की टेक्स्ट-आधारित भाषा, जैसे विनिर्देशों के लिए किया जा सकता है<ref>{{cite web|url=https://tomassetti.me/what-is-the-language-server-protocol/|title=आपको भाषा सर्वर प्रोटोकॉल के बारे में क्यों जानना चाहिए|first=Gabriele|last=Tomassetti|publisher=Federico Tomassetti|date=16 February 2017|accessdate=8 May 2017}}</ref> या [[डोमेन-विशिष्ट भाषा]]|डोमेन-विशिष्ट भाषाएँ (DSL)।<ref>{{cite web|url=https://www.heise.de/developer/meldung/Xtext-2-11-unterstuetzt-Language-Server-Protocol-3614557.html|title=Xtext 2.11 unterstützt Language Server Protocol|trans-title=Xtext 2.11 supports Language Server Protocol|first=Alexander|last=Neumann|date=1 June 2016|accessdate=8 May 2017|publisher=Heise Medien|series=Heise Developer|language=German}}</ref>
विजुअल स्टूडियो कोड के विकास के लिए भाषा सर्वर प्रोटोकॉल के डिजाइन और कार्यान्वयन से पहले, अधिकांश भाषा सेवाएं सामान्यतः किसी दिए गए आईडीई या अन्य संपादक से जुड़ी होती थीं। भाषा सर्वर प्रोटोकॉल की अनुपस्थिति में, भाषा सेवाओं को सामान्यतः उपकरण -विशिष्ट एक्सटेंशन एपीआई का उपयोग करके कार्यान्वित किया जाता है। दूसरे संपादन उपकरण को समान भाषा सेवा प्रदान करने के लिए वर्तमान कोड को अनुकूलित करने के प्रयास की आवश्यकता होती है जिससे सेवा दूसरे संपादक के एक्सटेंशन इंटरफेस को लक्षित कर सकता है ।<ref>{{cite web|url=http://www.eclipse.org/community/eclipse_newsletter/2016/december/article5.php|title=ग्रहण नए प्रोटोकॉल सीख रहा है|first=Sven|last=Efftinge|date=December 2016|accessdate=26 April 2017}}</ref>


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


== विधि अवलोकन ==
एलएसपी प्रोग्रामिंग भाषाओं तक ही सीमित नहीं है। इसका उपयोग किसी भी प्रकार की टेक्स्ट-आधारित भाषा, जैसे विशिष्टताओं या डोमेन-विशिष्ट भाषाओं<ref>{{cite web|url=https://tomassetti.me/what-is-the-language-server-protocol/|title=आपको भाषा सर्वर प्रोटोकॉल के बारे में क्यों जानना चाहिए|first=Gabriele|last=Tomassetti|publisher=Federico Tomassetti|date=16 February 2017|accessdate=8 May 2017}}</ref> (डीएसएल) के लिए किया जा सकता है।<ref>{{cite web|url=https://www.heise.de/developer/meldung/Xtext-2-11-unterstuetzt-Language-Server-Protocol-3614557.html|title=Xtext 2.11 unterstützt Language Server Protocol|trans-title=Xtext 2.11 supports Language Server Protocol|first=Alexander|last=Neumann|date=1 June 2016|accessdate=8 May 2017|publisher=Heise Medien|series=Heise Developer|language=German}}</ref>                                   
== विधि अवलोकन ==


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


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


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


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


== रजिस्ट्री ==
== रजिस्ट्री ==
 
एक्लिप्स फाउंडेशन द्वारा होस्ट की गई एक वैश्विक भाषा सेवा रजिस्ट्री को भाषा सर्वरों को सार्वजनिक रूप से उपलब्ध कराना चाहिए।<ref>{{cite web|url=https://jaxenter.de/language-server-protocol-42591|title=Polyglott dank Language Server Protocol: Microsoft, Red Hat und Codenvy streben nach der universellen IDE|trans-title=Polyglot thanks to the Language Server Protocol: Microsoft, Red Hat and Codenvy are striving for the universal IDE|first=Dominik|last=Mohilo|date=28 June 2016|accessdate=8 May 2017|series=Jaxenter|publisher=Software & Support Media|language=German}}</ref> इसके अतिरिक्त, एलएसपी-संगत कार्यान्वयनों की सूचियां भी हैं, जिनका रखरखाव समुदाय-संचालित लैंगसर्वर.ओआरजी<ref>{{cite web|url=http://langserver.org/|title=लंगसेवेर.ऑर्ग|accessdate=8 May 2017|publisher=लंगसेवेर.ऑर्ग|via=Sourcegraph}}</ref> या माइक्रोसॉफ्ट द्वारा किया जाता है।<ref>{{cite web|url=https://microsoft.github.io/language-server-protocol/implementors/servers/|title=भाषा सर्वर|first=Erich|last=Gamma|date=21 January 2019|accessdate=25 January 2019|publisher=Microsoft|via=GitHub}}</ref>
एक्लिप्स फाउंडेशन द्वारा होस्ट की गई एक वैश्विक [[भाषा सेवा रजिस्ट्री]] को भाषा सर्वरों को सार्वजनिक रूप से उपलब्ध कराना चाहिए।<ref>{{cite web|url=https://jaxenter.de/language-server-protocol-42591|title=Polyglott dank Language Server Protocol: Microsoft, Red Hat und Codenvy streben nach der universellen IDE|trans-title=Polyglot thanks to the Language Server Protocol: Microsoft, Red Hat and Codenvy are striving for the universal IDE|first=Dominik|last=Mohilo|date=28 June 2016|accessdate=8 May 2017|series=Jaxenter|publisher=Software & Support Media|language=German}}</ref> इसके अतिरिक्त, समुदाय-संचालित Langserver.org द्वारा अनुरक्षित LSP-संगत कार्यान्वयनों की सूचियाँ हैं<ref>{{cite web|url=http://langserver.org/|title=लंगसेवेर.ऑर्ग|accessdate=8 May 2017|publisher=लंगसेवेर.ऑर्ग|via=Sourcegraph}}</ref> या माइक्रोसॉफ्ट।<ref>{{cite web|url=https://microsoft.github.io/language-server-protocol/implementors/servers/|title=भाषा सर्वर|first=Erich|last=Gamma|date=21 January 2019|accessdate=25 January 2019|publisher=Microsoft|via=GitHub}}</ref>
 
 
== संदर्भ ==
== संदर्भ ==


Line 43: Line 39:


* [https://microsoft.github.io/language-server-protocol/ Official website]
* [https://microsoft.github.io/language-server-protocol/ Official website]
[[Category: संचार प्रोटोकॉल]] [[Category: खुले मानक]] [[Category: प्रोग्रामिंग उपकरण]]


[[Category: Machine Translated Page]]
[[Category:CS1 maint]]
[[Category:Created On 16/06/2023]]
[[Category:Created On 16/06/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:खुले मानक]]
[[Category:प्रोग्रामिंग उपकरण]]
[[Category:संचार प्रोटोकॉल]]

Latest revision as of 18:49, 3 July 2023

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


बाहरी संबंध