Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go言語で作ったインタプリタにgoroutineをぶちこんでみた👊
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Fukui Yusei
July 28, 2025
0
94
Go言語で作ったインタプリタにgoroutineをぶちこんでみた👊
Fukui Yusei
July 28, 2025
Tweet
Share
More Decks by Fukui Yusei
See All by Fukui Yusei
研修で出会った 「自分の言葉でまとめる」勉強法
fyusei
0
26
Featured
See All Featured
Docker and Python
trallard
47
3.7k
Speed Design
sergeychernyshev
33
1.5k
HDC tutorial
michielstock
1
390
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Claude Code のすすめ
schroneko
67
210k
Practical Orchestrator
shlominoach
191
11k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
It's Worth the Effort
3n
188
29k
The agentic SEO stack - context over prompts
schlessera
0
650
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Transcript
Go言語で作ったインタプリタに goroutineをぶちこんでみた 👊
所属:石川高専 電子情報工学科 趣味:バンド、料理 GitHub: f-yusei 興味:Go言語,TiDB Kanazawa.goの運営やってます! LT初めてです!緊張してます ゆーせい
この本知ってますか? 引用:Go 言語でつくるインタプリタ https://45kaku.com/itpassport_text_38-01/#toc4
背景 「 Go 言 語 で つ く る イ
ン タ プ リ タ 」 を 読 ん で Monkey言語にfor文を拡張したりして遊んでいた 内定先にこのMonkey言語を拡張してgoroutineを 使えるようにした人がいたらしい、 、 面白そう!自分もやりたい!!
インタプリタって何? 引用:プログラム言語( 高水準/ 低水準・コンパイラ/ インタプリタ) とは? https://45kaku.com/itpassport_text_38-01/#toc4 PythonやJavaScriptで採用されている
やりたいこと goroutineやchannelを追加したい!
moキーワードを認識できるようにする 字句解析 1 mo fn()という文法を解析できるようにする 構文解析 2 解析した結果の木構造のデータを正しく 評価できるようにする 3
goroutineの追加手順
字句解析 Token Expression mo fn() 抽象化 Mo構文とは何かを定義!
構文解析 MOトークンを検知! Mo構文のインスタンスを作り 後に続く関数を Moインスタンスに紐づける parseMoStatement() を呼び出し!
評価 並列で同じメモリにある変数を 参照しないように ルーチンごとに別の環境を設定
評価 並列で同じメモリにある変数を 参照しないように ルーチンごとに別の環境を設定 Goのモットーにもある 「メモリの共有によって通信し てはいけない」 という考えを踏襲
評価 mo fn() の 関 数 部 分 の 評
価 を goroutineの力を借りて非同期 で実行 Goで作っているインタプリタ だからこそgoの機能を活用し て簡単に並列処理できる!
使ってみた fetchPost:50ms fetchPostLikes:50ms fetchPostComments:100ms 非同期処理ができていると 50ms + 100ms= 150ms 150ms程度の時間で実行できるはず!
実行結果 152msで実行された 🎉🎉
まとめ インタプリタを拡張することで、goroutineや channelに対する知識が深まった Goの考え方に触れるいい機会 これからもmonkeyを拡張していきたい!
まとめ あなたもGo言語の肩に立って 自作言語デビューしましょう!
ありがとうございました! 感想など聞かせていただけると嬉しいです!! THANK YOU