My External Storage

Feb 10, 2020 - 2 minute read - Comments - php presentation

[発表資料] PHPerKaigi2020 PHPでつくるインタプリタ入門 #phperkaigi

PHPerKaigi 2020
URL https://phperkaigi.jp/2020/
会場 練馬区立区民・産業プラザ Coconeriホール
日時 2020/02/09, 10, 11

登壇資料

登壇資料は以下です。後日修正などが入り、当日とは一部異なっている可能性があります。

参考文献

今回参考にしたインタプリタに関する本・記事は以下の3冊です。 とくに、Go言語でつくるインタプリタは独自言語Monkeyのインタプリタを作る本なのですが、今回のTDDをつかった実装アプローチはほぼこの本を参考にしています。

また、Go言語は以下のURLの1ページに言語仕様がまとめられており、非常にわかりやすいです。

Goの標準ライブラリが提供しているパーサーのコードとドキュメントは以下にあります。

補足・質疑応答など

当日受けた質疑応答を覚えている範囲で追記しました。 口頭でなくても、Twitterで@budougumi0617までリプライしていただければ回答します。

Q. 今後の展望はありますか?

技術書典8の執筆をして、その後は家庭の事情でLINE Botを作るので。しばらくお休みの予感…

Q. インタプリタを業務ではどう活用しますか。

インタプリタ自体を業務で使うことは想定していないです(Goはそもそもコンパイル言語)。 ただ、インタプリタを作成する中で得られたPHPの知識やPhpStormの扱いをPHPの開発に、 Goの言語仕様の理解を実装や静的解析の作成に生かしていきたいです。

Q. 今後開発を続ける場合、どんなところを実装するのが難しそうですか。

goroutinedefer文の実装が難しいと思っています。 PHPで並行処理を実現するにはSwooleなどを利用しないといけないと認識しています。 また、defer文は各return箇所に展開するなどの工夫をしないと再現できないかなと思っています。


関連記事