perltoot

いやいやいやいや…。ずっと ActionScript ばっかり書いてた…。いやいやいや…。
というわけで、久々に違う仕事が始まろうとしているというかもう始まっているのであるが、MovableType を本気気味に使うので久々に Perl 脳でもリフレッシュするべかと思い、色々当たってみると Wikipedia の Perl の項がこれがかなりなかなかである。

加えて、ActionScriptFlex Builder と Flash Develop に根底から調教し直された私は今やすっかり一端の統合開発環境野郎であり、Eclipse に EPIC を入れて、VMWare 上の Ubuntu Server に入った MT API をプロジェクトにして開発である。アホか。

そうすると、わたくしの Eclipse に PerlDoc ビューというのが入った。適当に bless とか入れて読んでみると、これが面白い。perltoot や perlobj とか参照せえと書いてあって参照すると、さらにもっともっと面白くてわかりやすい。他に読んだどんな Perl 本やサイトよりわかりやすい。

というわけで、家でちくちく perltoot を読んだ。これは最高。楽しいし、むちゃくちゃよく分かった。解説したりはしませんが、気に入ったところだけ抜き出してウェブ付箋を貼ることにしました。

オブジェクトについて

Users (well, programmers) can play with this little bundle all they want, but they aren't to open it up and mess with the insides. Just lke an expensive piece of hardware, the contract says that you void the warranty if you muck with the cover. So don't do that.
(中略)
More often than not, the class provides the user with little bundles. These bundles are objects. They know whose class they belong to, and how to behave. Users ask the class to do something, like "give me an object." Or they can ask one of these objects to do something. Asking a class to do something for you is calling a *class method*. Asking an object to do something for you is calling an *object method*. Asking either a class (usually) or an object (sometimes) to give you back an object is calling a *constructor*, which is just a kind of method.

継承について

It's about software reuse, and therefore related to Laziness, the principal virtue of a programmer.

コンストラクタの中でクロージャを使い、その関数リファレンスを bless して返し、メソッドはその関数リファレンスを第一引数として受け取り、さらにそれをデリファレンスして実行してしまうという荒技について。

(Yes, the double-function call is slow, but if you wanted fast, you wouldn't be using objects at all, eh? :-)

結果、Perlオブジェクト指向って、クラスやインスタンスを作る時ではなくて、使う時に呪文を唱えることで実現する面白いもんだということがわかった!。なんというか、物理法則を積み上げて現代建築物を造ると言うより、呪文で呪文を作って別の呪文で使う感じだ。決まり事がない感炸裂!。基礎的な呪文も自分で作るんだぜ。しびれるぜ。