PHPerKaigi 2020 | |
---|---|
URL | https://phperkaigi.jp/2020/ |
会場 | 練馬区立区民・産業プラザ Coconeriホール |
日時 | 2020/02/09, 10, 11 |
登壇資料
登壇資料は以下です。後日修正などが入り、当日とは一部異なっている可能性があります。
参考文献
今回参考にしたインタプリタに関する本・記事は以下の3冊です。 とくに、Go言語でつくるインタプリタは独自言語Monkeyのインタプリタを作る本なのですが、今回のTDDをつかった実装アプローチはほぼこの本を参考にしています。
- 情報系教科書シリーズ コンパイラ
- Go言語でつくるインタプリタ
- 低レイヤを知りたい人のためのCコンパイラ作成入門
また、Go言語は以下のURLの1ページに言語仕様がまとめられており、非常にわかりやすいです。
- The Go Programming Language Specification
Goの標準ライブラリが提供しているパーサーのコードとドキュメントは以下にあります。
補足・質疑応答など
当日受けた質疑応答を覚えている範囲で追記しました。 口頭でなくても、Twitterで@budougumi0617までリプライしていただければ回答します。
Q. 今後の展望はありますか?
技術書典8の執筆をして、その後は家庭の事情でLINE Botを作るので。しばらくお休みの予感…
Q. インタプリタを業務ではどう活用しますか。
インタプリタ自体を業務で使うことは想定していないです(Goはそもそもコンパイル言語)。 ただ、インタプリタを作成する中で得られたPHPの知識やPhpStormの扱いをPHPの開発に、 Goの言語仕様の理解を実装や静的解析の作成に生かしていきたいです。
Q. 今後開発を続ける場合、どんなところを実装するのが難しそうですか。
goroutine
とdefer
文の実装が難しいと思っています。
PHPで並行処理を実現するにはSwoole
などを利用しないといけないと認識しています。
また、defer文は各return
箇所に展開するなどの工夫をしないと再現できないかなと思っています。