Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

つくって学ぶプログラミング言語 RubyによるScheme処理系の実装

ハッカーになろう (How To Become A Hacker)」の中で、

LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際には LISP そのものをあまり使わなくても。

と紹介されています。
自分もいつかは「すばらしい悟り体験」をと思っていた頃もありましたが、最近は無理だろうという気持ちのほうが勝り、LISPのことを考えることはなくなっていたのですが、本書のRubyを使ってSchemeの処理系の実装を作るというコンセプトを知りもう一度勉強してみようという気になりました。
μSchemeRという独自のプログラミング言語少しずつ実現して行く中で、

  • λ式クロージャの違いが明確になった。
  • レキシカルスコープとダイナミックスコープの違いが明確になった。
  • (写経ではありますが)言語処理系を自分で作ったことにより、少し自信がついた。

という効果があったと思います。

binding.pry

本書を読みすすめながら写経をしていったのですが、デバッグやプログラムの理解に非常に有益だったのが、binding.pryです。処理を止めたいところに、binding.pryと入力しておき、そのときの変数の値などを確認しながら、step実行をすることで、理解が深まったと思います。