Perlでおなじみのblessの意味
について調べてみた
Perl では、クラスを生成する際に、bless という関数を使って連想配列の参照とパッケージを関連付けします。その変な仕様はともかく、ちょっと気になったので、この bless という単語の意味について調べてみました。
#!/bin/perl package Sample; sub new { my $pkg = shift; my $hash = { name => shift }; bless $hash, $pkg; }
まず、英語辞書で調べてみます。「〈神が〉人に~を授ける」とか「祝福する」とか出てきます。なんとなくわかるようで、全然わかりません。
灯台下暗し、bless の語源を調べていたら、Perldoc の用語集に解説がありました。以下引用と意訳です。
In corporate life, to grant official approval to a thing, as in, “The VP of Engineering has blessed our WebCruncher project.” Similarly in Perl, to grant official approval to a referent so that it can function as an object, such as a WebCruncher object. See bless.
-意訳 - 会社では、何かを正式に承認すること。例えば「技術サブマネージャーが私たちの “WebCruncher” プロジェクトを承認した」みたいに。同様にPerlでも、参照(連想配列の参照)がオブジェクトとして機能するように、正式に承認するみたいな意味。例えば、”WebCruncher” プロジェクトオブジェクトみたいにね。
うんなんとなく納得。bless には、承認するみたいな使われ方があるみたいですね。計画や実体化(つまり object)するという点で、比喩的に使われているみたいです。昔の人は、面白いネーミングをしますね。こういったものの語源を調べてみるのも面白いですよ。