L'impact du protocole LSP (Language Server Protocol) sur l'avenir des IDE

Traduction de l'article Comment le protocole Language Server affecte l'avenir des IDE





Auteur original Mehul Mohan





Depuis sa création, Visual Studio Code a à lui seul tellement influencé l'écosystème des développeurs qu'il n'y aura pas de retour en arrière. C'est un outil du domaine public gratuit et open source et un outil très puissant.





Mais grâce à VSCode, Microsoft a donné naissance en 2016 à une autre chose super significative qui est moins connue. Il s'agit du protocole Language Server.





Qu'est-ce que le protocole Language Server?

(Language Server Protocol - LSP) - ( HTTP FTP).





- , . - , (, , ), - , , CMD/Ctrl- , .





, . HTTP JSON-RPC .





LSP?

, VSCode ? , VSCode, IntelliSense , C, Python, Java ..? LSP.





IntelliSense HTML/CSS/JavaScript VSCode ( , PyCharm Python). LSP .





JSON-RPC?

JSON-RPC JSON (Remote Procedure Call). ( , REST ), - , API REST.





JSON-RPC:





// Request
curl -X POST —data '{
	"jsonrpc": "2.0",
	"method": "runThisFunction",
	"params": [ "some-param", 2 ],
	"id": 1
}'
// Response
{
  "jsonrpc": "2.0",
  "result": "codedamn",
  "id": 1
}
      
      



JSON RPC. JSON-RPC, runThisFunction



, .





LSP + JSON-RPC

LSP JSON-RPC . :





Content-Length: <bytes of JSON>\r\n\r\n<json-payload>
      
      



:





Content-Length: 78

{"jsonrpc":"2.0","method":"runThisFunction","params":["some-param",2],"id":1}
      
      



LSP , Content-Length



, CRLF



\r\n



. , ccls



, , :





, , ccls



, , runThisFunction



. , Content-Length



JSON-RPC.





?

LSP, Microsoft M x N M + N.





M = (C, C++, PHP, Python, Node, Swift, Go ..).





N = (VSCode, Eclipse, Notepad++, Sublime Text ..).





, M N , M*N . .





Avec l'avènement du LSP, la seule chose qui restait dans l'éditeur était d'ajouter la prise en charge du protocole de serveur de langue. Après cela, quiconque crée un serveur de langage (suivant les standards LSP) peut facilement s'intégrer dans l'éditeur de code sans que l'éditeur ne "sache" jamais avec quelle langue il travaille!





L'avenir de l'IDE

Comme les serveurs de langage sont implémentés pour différents langages de programmation, il devient possible pour les développeurs de choisir l'éditeur de leur choix. Sans lier à une langue spécifique. Il n'est plus nécessaire de se limiter, par exemple uniquement XCode pour le développement Swift ou PyCharm pour Python. De plus, les LSP peuvent être intégrés directement dans JavaScript pour prendre en charge IntelliSense dans le navigateur! C'est un moment formidable pour les programmeurs!








All Articles