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)するという点で、比喩的に使われているみたいです。昔の人は、面白いネーミングをしますね。こういったものの語源を調べてみるのも面白いですよ。


Kenji in codic

codic のリードプログラマー / デザイナーです。時間があれば、英語やネーミング、NLPについて研究したりしています。