O impacto do Language Server Protocol (LSP) no futuro dos IDEs

Tradução do artigo Como o Protocolo do Servidor de Linguagem Afeta o Futuro dos IDEs





Autor original Mehul Mohan





Desde seu início, o Visual Studio Code influenciou sozinho o ecossistema de desenvolvedores de tal forma que não haverá como voltar atrás. É uma ferramenta de domínio público de código aberto e gratuita e é uma ferramenta muito poderosa.





Mas, graças ao VSCode, a Microsoft em 2016 deu origem a outra coisa super significativa que é menos conhecida. Este é o protocolo do servidor de idioma.





O que é o Language Server Protocol?

(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 . .





Com o advento do LSP, a única coisa que restou no editor foi adicionar suporte para o protocolo do servidor de linguagem. Depois disso, qualquer pessoa que fizer um servidor de linguagem (seguindo os padrões LSP) pode se integrar facilmente ao editor de código sem que o editor nunca "saiba" com qual linguagem está trabalhando!





O futuro do IDE

Como os servidores de linguagem são implementados para diferentes linguagens de programação, torna-se possível para os desenvolvedores escolher o editor de sua escolha. Sem vinculação a um idioma específico. Não há necessidade de se limitar mais, por exemplo, apenas XCode para desenvolvimento Swift ou PyCharm para Python. Além disso, os LSPs podem ser incorporados diretamente ao JavaScript para oferecer suporte ao IntelliSense no navegador! Este é um momento incrível para programadores!








All Articles