⇨ Language Server Protocol (LSP) によってエディタと通信して開発支援を行うサーバ. https://microsoft.github.io/language-server-protocol/ ええと,ここを解析すると... ここのやりとりの プロトコル 解析しているやつの名前が 「LanguageServer」 ここについては関与しない Language Server Protocol の担当範囲 ここのこれって どうなの それはこれだよ
✅ Intelij IDEA ✅ Jupyter Lab ✅ Helix ✅ Zed ✅ Notepad++ ✅ Sublime Text ✅ Emacs 現代の主要なコードエディタはほぼすべて なんらかの形で LSP をサポート. LS のクオリティが その言語の開発体験に直結する. (貧弱な LS しかない言語は敬遠されるし, 強力な LS が提供されている言語は人気が出る) Language Server の重要性
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 using LinearAlgebra torus = [[(2 + cos(v)) * cos(u), (2 + cos(v)) * sin(u), sin(v)] for i in 0:29 for u in [2pi*i/30] for j in 0:29 for v in [2pi*j/30]] Rx(t) = [1 0 0; 0 cos(t) -sin(t); 0 sin(t) cos(t)] Ry(t) = [cos(t) 0 sin(t); 0 1 0; -sin(t) 0 cos(t)] Rz(t) = [cos(t) -sin(t) 0; sin(t) cos(t) 0; 0 0 1] for frame in 1:300 t = frame * 0.03 screen, zbuf = fill(' ', 25, 80), fill(Inf, 25, 80) for v in torus r = Rz(t) * Ry(t*0.7) * Rx(t*0.5) * v z = r[3] + 5 x, y = Int(round(r[1]/z*35+40)), Int(round(r[2]/z*20+12)) if 1 <= x <= 80 && 1 <= y <= 25 && z < zbuf[y,x] screen[y,x] = ".,:;ox%#@"[min(9, max(1, Int(floor(z))))] zbuf[y,x] = z end end print("\033[H\033[J") foreach(row -> println(join(row)), eachrow(screen)) sleep(0.03) end S o u r c e ( S t r i n g ) E x p r I n t e r p r e t e r / C o m p i l e r J S . S y n t a x T r e e C o d e I n f o call-i ref 3 + 5 r = z 1 z = r[3] + 5 なんやかんや なんやかんや なんやかんや なんやかんや ⇨ なんやかんや なんやかんや なんやかんや ⇨ ※ とりうる遷移やデータ構造を正確に反映・網羅したものではないです. 省略された遷移・データ構造がたくさんあります. 【現状の Julia コンパイラでは lowering 後に正確な位置情報は保持されていない】 闇の世界 (行だけ保持) 正確に位置を保持 コンパイラフロントエンドの改善は続くよどこまでも
i n g ) E x p r I n t e r p r e t e r / C o m p i l e r J S . S y n t a x T r e e C o d e I n f o なんやかんや なんやかんや なんやかんや Work in Progress... JuliaLowering.jl + メンテナンス性の向上 + マクロの利便性向上 + 使いやすさの向上 + より進んだフェーズでも 正確にエラーを出す この辺りを担当 JuliaLowering.jl によるエラー報告の改善 ここに正確な位置情報がつく未来が来るかも?
time than for all other causes combined. Frederick Phillips Brooks もしも LS を開発するエンジニアが 100 万人いるなら おそらく全て独自のものを開発したほうがいい. ただ,メンテナンスコストの削減によって 長期的に LS を維持するほうがユーザにとって 利益になるはず! LS は独自のコンポーネントを持つべきか? ✔️ 一方で開発コストは跳ね上がる. この方向をうまく 進めていくには?