sironekotoroの日記

Perl で楽をしたい

オブジェクト指向Perlマスターコース 第1〜2章

「遅れてきた自分」が感じる Perl の素晴らしさ

  • うちのように齢 30 超えてプログラムに興味を持った人にとっては、Perl はとても良い選択
  • なんせ、「枯れた言語」であるので、大昔の本でも今に生かせる知識がある
  • 他にも枯れた言語はあるけど、すぐに実行できて、分かりやすく、コミュニティ活動があり、未だに web の第一線で使われている、という Perl の有り難さがある

ということで「オブジェクト指向Perlマスターコース」

  • 先に学んでいた「すぐ分かるオブジェクト指向Perl」で参考書籍にあげられていた本
  • Amazon では新刊は入手できず、マーケットプレイスで入手
  • 「枯れた言語」だと参考書籍も安く上がってありがたい
    • でも、申し訳なさもある・・・著者の方には一銭も入らないわけだし
    • Perl 本の新刊はちゃんと買うようにしているんだけどね
  • 正直、!5年前(2001年)に出た本を買うのは勇気がいったが、ま、買わない事には無駄かどうかも分からない
  • 1つ得るものがあって、ずっと生かす事が出来れば、安い投資である

第1章 オブジェクト指向入門

概念 別名
オブジェクト クラスインスタンスインスタンス変数
クラス ユーザー定義型、オブジェクトテンプレート、メタオブジェクト、パッケージ、モジュール
オブジェクト属性 フィールド、スロット、インスタンス変数、メンバオブジェクト、データメンバ
クラス属性 クラス変数、クラスフィールド、インスタンス変数、メンバオブジェクト、データメンバ
オブジェクトメソッド インスタンスメソッド、セレクタ、ハンドラ、メッセージハンドラ、フィーチャ、メンバ関数、オペレーション、パッケージオペレーション
クラスメソッド 静的なメソッド、静的なメンバ関数、共有メソッド
メソッド呼び出し メソッド起動、メッセージ、イベント
インターフェイス プロトコル、機能集合
継承 サブクラス化、クラスの特殊化、導出
カプセル化 データ隠蔽、データプライバシー
総称クラス テンプレート、パラメータ化クラス、総称パッケージ、総称モジュール
多態的メソッド 仮想関数、総称メソッド、優先オペレーション、メソッド
抽象メソッド 純粋仮想関数、延期機能
スーパークラス 親クラス、基底クラス
サブクラス 子クラス、派生クラス
  • まぁ、正直言うとこの表みたときに感じたのは「殺意」
  • こんなに別名多いのかよ!
  • なるほど、Web から拾い読みしてただけでは用語が混ざって、一生オブジェクト指向わかんないなぁ
    • 今だったらもっと増えてそう

第2章 Perl入門

  • この辺りはさらっと
  • 今までの積み重ねが生きてる感
  • とはいえ、 wantarray はサブルーチンからの返り値チェックに積極的に使っていきたい
sub subroutin {
    return wantarray();
};

my $scalar = subroutin();
print $scalar , "\n"; # ""

my @array = subroutin();
print @array , "\n"; # 1

  • 型グロブの存在意義、今まで全く理解できなかったんだけど、以下の説明で腑に落ちるところがあった

しかし型グロブでは、さらにもう1つの重要なテクニックとして、選択的に割当を行う 事が出来る型グロブに様々な種類のリファレンスを割り当てた場合、対応する種類の型グロブのスロットのみが置換される。
perl *SOURCE = \$SOURCE1; *args = \@ARGV; *do_it = sub {print "coin' it!\n"}; つまり上記3つの割り当てで、$SOURCE$SOURCE1 の別名になるが、 @SOURCE , %SOURCE , &SOURCE などは影響を受けない。同様に、 @args@ARGV の別名になり、 &do_it は無名サブルーチンの別名になる。
(中略)
この割り当ての動作はポリモーフィズムの一例である。つまり、刺激(割り当て)は常に同じであるが、反応(型グロブで実際に変更される部分)は、割り当てられている値のデータ型に依存する。