लैंग्वेज सर्वर प्रोटोकॉल: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Protocol between IDEs and programming language-specific servers}}लैंग्वेज सर्वर प्रोटोकॉल ( | {{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 को माइक्रोसॉफ्ट ने प्रोटोकॉल के विनिर्देशन को मानकीकृत करने के लिए [[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> चाह सकता है। प्रोग्रामर या तो संबंधित स्रोत कोड फ़ाइलों को मैन्युअल रूप से संपादित कर सकता है और पुराने विधि नाम की उचित घटनाओं को नए नाम में बदल सकता है, या इसके अतिरिक्त सभी आवश्यक परिवर्तन स्वचालित रूप से करने के लिए आईडीई की रीफैक्टरिंग क्षमताओं का उपयोग कर सकता है। रीफैक्टरिंग की इस शैली का समर्थन करने में सक्षम होने के लिए, एक आईडीई को प्रोग्रामिंग भाषा की एक परिष्कृत समझ की आवश्यकता होती है जिसमें प्रोग्राम का स्रोत लिखा जाता है। ऐसी समझ के बिना एक प्रोग्रामिंग उपकरण - उदाहरण के लिए, जो इसके अतिरिक्त एक सरल खोज-और-प्रतिस्थापन करता है —त्रुटियाँ प्रस्तुत कर सकता है। उदाहरण के लिए, <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> | |||
'''विजुअल स्टूडियो कोड के विकास के लिए भाषा सर्वर प्रोटोकॉल के डिजाइन और कार्यान्वयन से प'''हले, अधिकांश भाषा सेवाएं सामान्यतः किसी दिए गए आईडीई या अन्य संपादक से जुड़ी होती थीं। भाषा सर्वर प्रोटोकॉल की अनुपस्थिति में, भाषा सेवाओं को सामान्यतः टूल-विशिष्ट एक्सटेंशन 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 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=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> | ||
Line 22: | Line 22: | ||
== विधि ी अवलोकन == | == विधि ी अवलोकन == | ||
जब कोई उपयोगकर्ता भाषा सर्वर प्रोटोकॉल-सक्षम | जब कोई उपयोगकर्ता भाषा सर्वर प्रोटोकॉल-सक्षम उपकरण का उपयोग करके एक या अधिक स्रोत कोड फ़ाइलों को संपादित करता है, तो उपकरण [[क्लाइंट (कंप्यूटिंग)]] के रूप में कार्य करता है जो भाषा सर्वर द्वारा प्रदान की जाने वाली भाषा सेवाओं का उपभोग करता है। उपकरण एक [[ पाठ संपादक |पाठ संपादक]] या एकीकृत विकास पर्यावरण हो सकता है और भाषा सेवाएं रीफैक्टरिंग, कोड पूर्णता आदि हो सकती हैं। | ||
क्लाइंट सर्वर को सूचित करता है कि उपयोगकर्ता क्या कर रहा है, उदाहरण के लिए, एक फ़ाइल खोलना या एक विशिष्ट पाठ स्थिति में एक वर्ण सम्मिलित करना। क्लाइंट सर्वर से भाषा सेवा करने का अनुरोध भी कर सकता है, उदा। पाठ दस्तावेज़ में एक निर्दिष्ट श्रेणी को प्रारूपित करने के लिए। सर्वर उचित प्रतिक्रिया के साथ ग्राहक के अनुरोध का उत्तर देता है। उदाहरण के लिए, स्वरूपण अनुरोध का उत्तर या तो एक प्रतिक्रिया द्वारा दिया जाता है जो स्वरूपित पाठ को ग्राहक को स्थानांतरित करता है या त्रुटि के बारे में विवरण वाली त्रुटि प्रतिक्रिया द्वारा। | क्लाइंट सर्वर को सूचित करता है कि उपयोगकर्ता क्या कर रहा है, उदाहरण के लिए, एक फ़ाइल खोलना या एक विशिष्ट पाठ स्थिति में एक वर्ण सम्मिलित करना। क्लाइंट सर्वर से भाषा सेवा करने का अनुरोध भी कर सकता है, उदा। पाठ दस्तावेज़ में एक निर्दिष्ट श्रेणी को प्रारूपित करने के लिए। सर्वर उचित प्रतिक्रिया के साथ ग्राहक के अनुरोध का उत्तर देता है। उदाहरण के लिए, स्वरूपण अनुरोध का उत्तर या तो एक प्रतिक्रिया द्वारा दिया जाता है जो स्वरूपित पाठ को ग्राहक को स्थानांतरित करता है या त्रुटि के बारे में विवरण वाली त्रुटि प्रतिक्रिया द्वारा। | ||
भाषा सर्वर प्रोटोकॉल क्लाइंट और भाषा सर्वर के बीच आदान-प्रदान किए जाने वाले संदेशों को परिभाषित करता है। वे | भाषा सर्वर प्रोटोकॉल क्लाइंट और भाषा सर्वर के बीच आदान-प्रदान किए जाने वाले संदेशों को परिभाषित करता है। वे जेएसओएन-आरपीसी हैं जो HTTP के समान हेडर से पहले हैं। संदेश सर्वर या क्लाइंट से उत्पन्न हो सकते हैं। | ||
क्लाइंट और सर्वर के बीच अनुरोधों, प्रतिक्रियाओं और सूचनाओं को कैसे स्थानांतरित किया जाता है, इस बारे में प्रोटोकॉल कोई प्रावधान नहीं करता है। उदाहरण के लिए, क्लाइंट और सर्वर विधि कॉल के माध्यम से JSON स्ट्रिंग्स का आदान-प्रदान करने वाली एक ही प्रक्रिया के घटक हो सकते हैं। वे एक ही या [[नेटवर्क सॉकेट]] के माध्यम से संचार करने वाली विभिन्न मशीनों पर अलग-अलग प्रक्रियाएं भी हो सकती हैं। | क्लाइंट और सर्वर के बीच अनुरोधों, प्रतिक्रियाओं और सूचनाओं को कैसे स्थानांतरित किया जाता है, इस बारे में प्रोटोकॉल कोई प्रावधान नहीं करता है। उदाहरण के लिए, क्लाइंट और सर्वर विधि कॉल के माध्यम से JSON स्ट्रिंग्स का आदान-प्रदान करने वाली एक ही प्रक्रिया के घटक हो सकते हैं। वे एक ही या [[नेटवर्क सॉकेट]] के माध्यम से संचार करने वाली विभिन्न मशीनों पर अलग-अलग प्रक्रियाएं भी हो सकती हैं। | ||
Line 32: | Line 32: | ||
== रजिस्ट्री == | == रजिस्ट्री == | ||
एक्लिप्स फाउंडेशन द्वारा होस्ट की गई एक वैश्विक [[भाषा सेवा रजिस्ट्री]] को भाषा सर्वरों को सार्वजनिक रूप से उपलब्ध कराना चाहिए।<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 द्वारा अनुरक्षित | एक्लिप्स फाउंडेशन द्वारा होस्ट की गई एक वैश्विक [[भाषा सेवा रजिस्ट्री]] को भाषा सर्वरों को सार्वजनिक रूप से उपलब्ध कराना चाहिए।<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 द्वारा अनुरक्षित एलएसपी-संगत कार्यान्वयनों की सूचियाँ हैं<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> | ||
Revision as of 21:43, 26 June 2023
लैंग्वेज सर्वर प्रोटोकॉल (एलएसपी) स्रोत कोड संपादकों या एकीकृत विकास वातावरण (आईडीई) और सर्वर (कंप्यूटिंग) के बीच उपयोग के लिए एक खुला जेएसओएन-आरपीसी- आधारित संचार प्रोटोकॉल है जो प्रोग्रामिंग भाषा-विशिष्ट सुविधाएँ प्रदान करता है जैसे स्वतः पूर्ण सिंटैक्स हाइलाइटिंग और चेतावनियों और त्रुटियों के साथ-साथ कोड रीफैक्टरिंग रूटीन का अंकन प्रोटोकॉल का लक्ष्य प्रोग्रामिंग भाषा समर्थन को किसी दिए गए संपादक या आईडीई से स्वतंत्र रूप से कार्यान्वित और वितरित करने की अनुमति देना है।[1]
इतिहास
एलएसपी मूल रूप से माइक्रोसॉफ्ट विजुअल स्टूडियो कोड के लिए विकसित किया गया था और अब यह एक खुला मानक है। 27 जून 2016 को माइक्रोसॉफ्ट ने प्रोटोकॉल के विनिर्देशन को मानकीकृत करने के लिए रेड हैट और कोडेनवी के साथ सहयोग की घोषणा की थी। प्रोटोकॉल समर्थित है और तीन कंपनियों द्वारा अपनाया गया है।[2][3] इसके विनिर्देश गिटहब पर होस्ट और विकसित किए गए हैं।[4]
पृष्ठभूमि
आधुनिक आईडीई डेवलपर्स को कोड पूर्णता, रीफैक्टरिंग, प्रतीक की परिभाषा सिंटैक्स हाइलाइटिंग और त्रुटि और चेतावनी मार्करों पर नेविगेट करने जैसी परिष्कृत सुविधाएं प्रदान करते हैं।
उदाहरण के लिए, टेक्स्ट-आधारित प्रोग्रामिंग भाषा में, एक प्रोग्रामर किसी विधि का नाम बदलना read
चाह सकता है। प्रोग्रामर या तो संबंधित स्रोत कोड फ़ाइलों को मैन्युअल रूप से संपादित कर सकता है और पुराने विधि नाम की उचित घटनाओं को नए नाम में बदल सकता है, या इसके अतिरिक्त सभी आवश्यक परिवर्तन स्वचालित रूप से करने के लिए आईडीई की रीफैक्टरिंग क्षमताओं का उपयोग कर सकता है। रीफैक्टरिंग की इस शैली का समर्थन करने में सक्षम होने के लिए, एक आईडीई को प्रोग्रामिंग भाषा की एक परिष्कृत समझ की आवश्यकता होती है जिसमें प्रोग्राम का स्रोत लिखा जाता है। ऐसी समझ के बिना एक प्रोग्रामिंग उपकरण - उदाहरण के लिए, जो इसके अतिरिक्त एक सरल खोज-और-प्रतिस्थापन करता है —त्रुटियाँ प्रस्तुत कर सकता है। उदाहरण के लिए, read
विधि का नाम बदलते समय, उपकरण को एक वेरिएबल में आंशिक मिलान को प्रतिस्थापित नहीं करना चाहिए जिसे readyState
कहा जा सकता है, न ही इसे "पहले से ही" शब्द वाले कोड टिप्पणी के भाग को प्रतिस्थापित करना चाहिए। उदाहरण के लिए, किसी भी स्थानीय चर का नाम बदलना read
नहीं होना चाहिए, अन्य क्षेत्रों में समान रूप से नामित चर को बदलना चाहिए।
एक विशिष्ट प्रोग्रामिंग भाषा के लिए पारंपरिक संकलक या दुभाषिया (कंप्यूटिंग) सामान्यतः इन भाषा सेवाओं को प्रदान करने में असमर्थ होते हैं, क्योंकि वे या तो स्रोत कोड को वस्तु कोड में बदलने या कोड को तुरंत निष्पादित करने के लक्ष्य के साथ लिखे जाते हैं। इसके अतिरिक्त भाषा सेवाओं को स्रोत कोड को संभालने में सक्षम होना चाहिए जो अच्छी तरह से गठित नहीं है | अच्छी तरह से गठित है, उदा। क्योंकि प्रोग्रामर संपादन के बीच में है और उसने अभी तक एक कथन, प्रक्रिया या अन्य निर्माण को टाइप करना समाप्त नहीं किया है। इसके अतिरिक्त, स्रोत कोड फ़ाइल में छोटे बदलाव जो टाइपिंग के समय किए जाते हैं, सामान्यतः कार्यक्रम के शब्दार्थ को बदल देते हैं। उपयोगकर्ता को तत्काल प्रतिक्रिया प्रदान करने के लिए, संपादन उपकरण को एक विशिष्ट संशोधन के वाक्य-विन्यास और शब्दार्थ परिणामों का बहुत तेज़ी से मूल्यांकन करने में सक्षम होना चाहिए। संकलक और दुभाषिए इसलिए एक संपादन उपकरण के उपभोग के लिए आवश्यक जानकारी का उत्पादन करने के लिए एक खराब उम्मीदवार प्रदान करते हैं।[5]
विजुअल स्टूडियो कोड के विकास के लिए भाषा सर्वर प्रोटोकॉल के डिजाइन और कार्यान्वयन से पहले, अधिकांश भाषा सेवाएं सामान्यतः किसी दिए गए आईडीई या अन्य संपादक से जुड़ी होती थीं। भाषा सर्वर प्रोटोकॉल की अनुपस्थिति में, भाषा सेवाओं को सामान्यतः टूल-विशिष्ट एक्सटेंशन API का उपयोग करके कार्यान्वित किया जाता है। दूसरे संपादन उपकरण को समान भाषा सेवा प्रदान करने के लिए वर्तमान कोड को अनुकूलित करने के प्रयास की आवश्यकता होती है जिससे सेवा दूसरे संपादक के एक्सटेंशन इंटरफेस को लक्षित कर सके।[6] भाषा सर्वर प्रोटोकॉल भाषा सेवाओं को संपादक से अलग करने की अनुमति देता है जिससे सेवाओं को एक सामान्य-उद्देश्य वाले भाषा सर्वर के अंदर समाहित किया जा सके। कोई भी संपादक वर्तमान भाषा सर्वरों का उपयोग करके कई अलग-अलग भाषाओं के लिए परिष्कृत समर्थन प्राप्त कर सकता है। इसी तरह, एक प्रोग्रामर जो एक नई प्रोग्रामिंग भाषा के विकास में सम्मिलित है, उस भाषा के लिए सेवाएं वर्तमान संपादन उपकरणों के लिए उपलब्ध करा सकता है।[5] भाषा सर्वर प्रोटोकॉल के माध्यम से भाषा सर्वर का उपयोग करने से संपादन उपकरण के विक्रेताओं पर बोझ भी कम हो जाता है, क्योंकि विक्रेताओं को उन भाषाओं के लिए स्वयं की भाषा सेवाओं को विकसित करने की आवश्यकता नहीं होती है, जब तक कि भाषा सर्वर पहले से ही समर्थन करना चाहते हैं। कार्यान्वित किया गया। लैंग्वेज सर्वर प्रोटोकॉल इच्छुक तीसरे पक्ष द्वारा योगदान किए गए सर्वरों के वितरण और विकास को भी सक्षम बनाता है, जैसे कि अंतिम उपयोगकर्ता, उपयोग में आने वाली प्रोग्रामिंग भाषा के लिए कंपाइलर के विक्रेता या संपादक के विक्रेता द्वारा अतिरिक्त भागीदारी के बिना भाषा समर्थन जोड़ा जा रहा है।
एलएसपी प्रोग्रामिंग भाषाओं तक ही सीमित नहीं है। इसका उपयोग किसी भी प्रकार की टेक्स्ट-आधारित भाषा, जैसे विनिर्देशों के लिए किया जा सकता है[7] या डोमेन-विशिष्ट भाषा|डोमेन-विशिष्ट भाषाएँ (DSL)।[8]
विधि ी अवलोकन
जब कोई उपयोगकर्ता भाषा सर्वर प्रोटोकॉल-सक्षम उपकरण का उपयोग करके एक या अधिक स्रोत कोड फ़ाइलों को संपादित करता है, तो उपकरण क्लाइंट (कंप्यूटिंग) के रूप में कार्य करता है जो भाषा सर्वर द्वारा प्रदान की जाने वाली भाषा सेवाओं का उपभोग करता है। उपकरण एक पाठ संपादक या एकीकृत विकास पर्यावरण हो सकता है और भाषा सेवाएं रीफैक्टरिंग, कोड पूर्णता आदि हो सकती हैं।
क्लाइंट सर्वर को सूचित करता है कि उपयोगकर्ता क्या कर रहा है, उदाहरण के लिए, एक फ़ाइल खोलना या एक विशिष्ट पाठ स्थिति में एक वर्ण सम्मिलित करना। क्लाइंट सर्वर से भाषा सेवा करने का अनुरोध भी कर सकता है, उदा। पाठ दस्तावेज़ में एक निर्दिष्ट श्रेणी को प्रारूपित करने के लिए। सर्वर उचित प्रतिक्रिया के साथ ग्राहक के अनुरोध का उत्तर देता है। उदाहरण के लिए, स्वरूपण अनुरोध का उत्तर या तो एक प्रतिक्रिया द्वारा दिया जाता है जो स्वरूपित पाठ को ग्राहक को स्थानांतरित करता है या त्रुटि के बारे में विवरण वाली त्रुटि प्रतिक्रिया द्वारा।
भाषा सर्वर प्रोटोकॉल क्लाइंट और भाषा सर्वर के बीच आदान-प्रदान किए जाने वाले संदेशों को परिभाषित करता है। वे जेएसओएन-आरपीसी हैं जो HTTP के समान हेडर से पहले हैं। संदेश सर्वर या क्लाइंट से उत्पन्न हो सकते हैं।
क्लाइंट और सर्वर के बीच अनुरोधों, प्रतिक्रियाओं और सूचनाओं को कैसे स्थानांतरित किया जाता है, इस बारे में प्रोटोकॉल कोई प्रावधान नहीं करता है। उदाहरण के लिए, क्लाइंट और सर्वर विधि कॉल के माध्यम से JSON स्ट्रिंग्स का आदान-प्रदान करने वाली एक ही प्रक्रिया के घटक हो सकते हैं। वे एक ही या नेटवर्क सॉकेट के माध्यम से संचार करने वाली विभिन्न मशीनों पर अलग-अलग प्रक्रियाएं भी हो सकती हैं।
रजिस्ट्री
एक्लिप्स फाउंडेशन द्वारा होस्ट की गई एक वैश्विक भाषा सेवा रजिस्ट्री को भाषा सर्वरों को सार्वजनिक रूप से उपलब्ध कराना चाहिए।[9] इसके अतिरिक्त, समुदाय-संचालित Langserver.org द्वारा अनुरक्षित एलएसपी-संगत कार्यान्वयनों की सूचियाँ हैं[10] या माइक्रोसॉफ्ट।[11]
संदर्भ
- ↑ Efftinge, Sven; Spönemann, Miro (11 December 2016). "भाषा सर्वर प्रोटोकॉल समझाया". Eclipse Foundation. Retrieved 25 April 2017.
- ↑ Krill, Paul (27 June 2016). "माइक्रोसॉफ्ट-समर्थित भाषा सर्वर प्रोटोकॉल भाषा, उपकरण इंटरऑपरेबिलिटी के लिए प्रयास करता है". InfoWorld. Retrieved 26 April 2017.
- ↑ Handy, Alex (27 June 2016). "कोडेनवी, माइक्रोसॉफ्ट और रेड हैट भाषा सर्वर प्रोटोकॉल पर सहयोग करते हैं". SD Times. Retrieved 26 April 2017.
- ↑ "microsoft/language-server-protocol". GitHub. Retrieved 29 March 2021.
- ↑ 5.0 5.1 Juarez, Seth (12 May 2016). "मॉडर्न कंपाइलर कंस्ट्रक्शन पर एंडर्स हेजल्सबर्ग". Microsoft. Retrieved 22 February 2017.
- ↑ Efftinge, Sven (December 2016). "ग्रहण नए प्रोटोकॉल सीख रहा है". Retrieved 26 April 2017.
- ↑ Tomassetti, Gabriele (16 February 2017). "आपको भाषा सर्वर प्रोटोकॉल के बारे में क्यों जानना चाहिए". Federico Tomassetti. Retrieved 8 May 2017.
- ↑ 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) - ↑ 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) - ↑ "लंगसेवेर.ऑर्ग". लंगसेवेर.ऑर्ग. Retrieved 8 May 2017 – via Sourcegraph.
- ↑ Gamma, Erich (21 January 2019). "भाषा सर्वर". Microsoft. Retrieved 25 January 2019 – via GitHub.