OCamlでコンパイラ書いてる.

職場のチームに新人が入ってきたのだが、その新人が入る前に上司が「OCaml書けるのが入ってくるぞ」と喚いていて、「ウチにOCaml書く案件なんてないのに、、」と思いながらも久々に自分もOCamlを書いてみたくなって例の如く簡単なコンパイラを書き始めた。

本当に久しぶりだったので、結構構文を忘れていて都度都度ググりながら書いているので開発スピードが出ない。まぁ何を書いてるかと簡単に言うと、armv7向けのアセンブリ出力するコンパイラを書いている程度で大した最適化とかも書く気はない。暗黙の型変換とかもやんないし、あくまでサクッとOCaml遊びが出来る程度に留めている。見た目、Cのサブセットみたいなものになる。

とまぁちまちまと夜中と早朝に書き始めたのだけど、他にもDeepLearningの勉強したり、SICPの問題を解いたりしているので、3日ほどかけてようやくフロントエンド周りが完成して型付き構文木が出来るようになった。なんというスピード感の無さ。次は中間言語出力。


この頃、懐古気味になっているのか、昔を振り返って当時を懐かしむことが多くなった。数年経てばそりゃ歳をとるわけで、当時の環境がそのまま残っているわけではない。

よく一緒にランチを食べていた、珍しく技術話で盛り上がれる会社の同期が転職をしたり、大変お世話になった先輩が別部署に異動になったり、PLやってた僕らの癒やしの先輩が産休で離脱したりとちょっとセンチな気分になっている。皆どっか行っちゃうなぁ、と。ちょっと泣きそうになったりならなかったり。

というのをOCaml書いていてちょびっと思ったわけです。全く繋がりはないんだけども。たぶん、数年後とかになると「仕事でPythonばっか書いてたなー、行列演算とか懐かしいなぁ」となるのだろう。その頃は30歳とかだろうか。自分が30歳とか想像のつかない未来だな。その頃には今理解出来ないことが沢山理解出来るようになってるといいな、と思う。たとえばコンパイラのバックエンド周りとか。機械学習の数式とか。そのへんで。