記事の翻訳LanguageServerプロトコルがIDEの将来にどのように影響するか
原作者メフル・モハン
Visual Studio Codeは、開始以来、開発者のエコシステムに単独で影響を与えてきたため、後戻りすることはできません。これは無料のオープンソースのパブリックドメインツールであり、非常に強力なツールです。
しかし、VSCodeのおかげで、Microsoftは2016年に、あまり知られていない別の非常に意味のあるものを生み出しました。これはLanguageServerプロトコルです。
言語サーバープロトコルとは何ですか?
(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 . .
LSPの登場により、エディターに残されたのは、言語サーバープロトコルのサポートを追加することだけでした。その後、言語サーバー(LSP標準に準拠)を作成する人は誰でも、エディターが使用している言語を「知らない」ことなく、コードエディターに簡単に統合できます。
IDEの未来
言語サーバーはさまざまなプログラミング言語に実装されているため、開発者は自分の好きなエディターを選択することができます。特定の言語に拘束されることなく。Swift開発用のXCodeやPython用のPyCharmなど、自分自身を制限する必要はもうありません。それだけでなく、LSPをJavaScriptに直接埋め込んで、ブラウザーでIntelliSenseをサポートすることもできます。これはプログラマーにとって素晴らしい時間です!