今月号のオープンソースマガジンはSICPとの併読がおすすめ

今月号のオープンソースマガジンの「プログラミング言語の進化を追え」の特集が面白そうだったので、買ってみました。その特集の中でも特に「Part 3 クロージャとオブジェクトの微妙な関係」が興味深かったです。

このPart 3の記事をもっと楽しむには、SICPも一緒に読むと良いと思います。

というのも、今ちょうどSICPの3章のはじめの方を読んでいて、「3.1 代入と局所状態」のセクションをGaucheを使いながら勉強している最中で、Part 3の記事の話題と密接に関係していることがわかったからです。このセクションでは、局所環境とlambdaで「クロージャ」を形成できるとは、明示的には説明されていません。*1 しかし、確かにこのセクションではクロージャを扱っています。

よって、Part 3の記事とSICPを併読することで、よりスムーズにクロージャを理解できるようになるのでは?と思った次第です。また、Part3の説明で出てくる「環境」という言葉をもっと深く理解するためにも、SICPと併読した方が良いかと思います。(くどい)

Part 3の記事を読んで、結局、

  • クロージャもオブジェクトも、それらの挙動に注目してみれば、本質的には同じ
  • 構文レベルではオブジェクト指向をサポートしていない言語であっても、オブジェクトの挙動を記述できるという点で、クロージャの方がより超越的(meta)な存在

という印象を持つようになりました。

また、Perlでのクロージャの話題を説明されているnaoyaさんの記事も興味深いので、Perlにも興味がある方は一緒に読むと良いかと思います。

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

*1:クロージャ」という言葉は出てこないという意味