結局どこまで勉強(or教育)すればいいんかね
先日書いた記事新人教育 - Unknown::Programmingのトラバやはてブとか読んでてあーやっぱりオールドファッションなPerlも未だに廃れてはいないんだなぁと実感させられました。
あの一覧全てを仕事で使うか?と問われると、ま確かに頻繁には使わないけどいやでも場合によっては結構使うよと。
なのでPerlで仕事するなら必須項目であると言えますね。
知らないとまずCPANモジュールのソースが読めないし。
問題にブチ当たった時に困ったりする。
どこバグってんのかとかわかんないってことになるわけです。
COREパッケージ知らないと組み込み関数と同じメソッド定義した時にうがーってなるし、
UNIVERSALパッケージ知らないとisaとかcanメソッドがどっからやってきたのかわかんないし、
AUTOLOADメソッド知らないと謎のメソッドに悩まされるし、
tie変数知らないともの凄い不思議なハッシュとか説明できないし、
bless関数知らないと第一引数が妄信的に無名ハッシュにしてたりするし、
無名ハッシュ、無名配列知らないと不必要な変数が量産されちゃうし、
コンテキスト知らないとCGIモジュールのparamメソッドを
my $cgi = CGI->new(\q{hoge=1&hoge=2}); my %hash = ( hoge => $cgi->param('hoge'), );
とか書いて小一時間くらい悩まされるし、
プロトタイプ知らないとErrorモジュールのtry関数が恰も言語仕様として組み込まれてるかのように錯覚してしまう。
もう言い出したらキリが無い。
実際使うケースとしては後々にも使用する汎用的なモジュールを作る時とか、
かなり汚い古いコードをリファクタリングする時とか、テストコードを書く時とかですかね。
Perlの面白さって言わば、他の言語では言語仕様として組み込まれてないと実現できないような事をモジュールで作ってしまえるところだと思います。
そいういうモジュールを作ろうと思ったらやっぱり色々知らないとダメなわけで。
一応新人教育の目標としてClass::Data::Inheritableのソースが完璧に説明できるくらいまでですね。
あのモジュールはたった30行程度しかないのにPerlという言語の基本的な機能がぎっしり詰まってます。
あれを完全に理解するには
- strictプラグマ
- リファレンス
- クロージャ
- 型グロブ
- シンボリックリファレンス
- シンボルテーブル
- requireとuseの違い
- myとlocalとourの違い
- $VERSION
- 継承
ここら辺の知識が必須です。
短いソースなので勉強するにはうってつけかなーと。
まぁそんなこんなで結構使ってるよということです。
もちろん規約を定めて無茶な使い方しないようにある程度制限しないといけませんが。
例えばUNIVERSAL汚しまくりとか、動的コンパイりまくりとか。こんな実装してると後で泣きをみます。
何分コアなところに手を出すわけですから火傷しないように気をつけて使っていくことが大切ってことっすかね。
#勉強しないといけない項目見直したんだけど漏れてるやつもいっぱいあるね。importとかattributeとかExportとか数えればキリが無いっすわ。