世界線航跡蔵スマートフォン用の表示で見る世界線航跡蔵2006-04-11Rubyの力、すなわちブロックなりrubyRubyの力はブロックにありと常々主張している。それを陰から支えるのが継続である。Rubyの力はブロック構文にある。これを単なるlabmdaだとかコールバックだとか言ってしまうのは簡単だが、こういう構文の形をしていることに意味がある。おいて、「DSLにおいてコンテキストを生成する」という点に着目してこれを説明した。Rakefileにおけるターゲットがそうであるし、Railsのconfig/routes.rbがそうである。ようなリソース管理の方法としてのブロックである。書いてしまったけれど、GCな世界で育った初心者はどうもリソース管理の意識が甘い気がする。メモリーという一番目に付くリソースを管理しなくても済んでしまうがために、リソースを解放することについての執念深さが身につかないのだ。それは「近頃の若い人」が悪いのでは無い。リソースをオブジェクトに結びつけて扱うなら、オブジェクトが解放されるときにリソースも解放されるべきだ。言語ライブラリの実装が変なのである。ファイナライザの実行は保証されないとか言われても困る。C++」と思っている。オブジェクト破棄の権限(delete)をユーザーから奪うなら、結び付いたリソースの後始末についても処理系やライブラリが責任を持つべきだ。存在は、コードにコンテキストを導入する一般的な構文があればリソース管理の特別な構文なんか必要ないことを示している。これが、Rubyの力だ。使わせておけば、最早初心者のリソースリークは心配しなくていい。プログラマのミスを心配しなくていい。ブロックを抜けたら勝手にファイルはcloseされる。DBのトランザクション然り、外部システムへのコネクション然り。これを陰から支えるのが継続だ。ブロックを抜けて勝手に解放されるのはいいのだけれど、構文上のスコープがプログラムの実行パスと完全には一致しなかったらどうするか。そこは継続でなんとかするのである。」あたりは好例だろう。Rubyが単なるLispのALGOL化(そして再帰的記述能力の喪失)でないのは、PerlのOO化(そして簡潔さの喪失)でないのは、ブロック構文があるからである。ブロックが力なのである。新学期アヴェマリアンって。月別アーカイブはてなブログをはじめよう!yuguiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。