「優れたPerlプログラマを見分ける27の質問」の日本語訳
(追記あり)
How to Identify a Good Perl Programmer (by chromatic) が面白かった*1ので、27の質問を訳してみました。chromatic氏によれば、いずれも単純明快な質問でPerlの哲学や特徴をよく現しており、優れたPerlプログラマであれば少なくとも80%は答えられるべきだそうです*2。あなたは全ての質問に答えられますか?
- Perl5において変数のシジル*3が示すものは何か
- 配列のアクセスする際の
$items[$index]
と@items[$index]
の違いは何か ==
とeq
の違いは何か- ハッシュをリストコンテキストで評価すると得られるものは何か
- Perlドキュメントからキーワードを検索するにはどのようにするのか
- Perl5における関数とメソッドの違いは何か
- Perl5が変数のメモリを再利用するのはいつか
- 変数のスコープがデフォルトでレキシカルであると保証するにはどのようにするのか
- モジュールからシンボルをインポートするにはどのようにするのか
perl
がモジュールのロードを敢行するディレクトリの操作はどのようにするのか- Perl5のエラーメッセージの検索はどのようにするのか(発生するエラーメッセージに説明を加える方法を知っていればボーナスポイント)
- 配列を関数に渡したときに起きることは何か
- 複数の配列をそれぞれ区別して関数に渡すときにはどのようにするのか
呼び出された側呼び出した側*4から見たreturn;
とreturn undef;
の違いは何か- 標準的CPANディストリビューションではテストはどこに置かれるか
- 標準的CPANディストリビューションでテストを走らせるにはどのようにするのか
- CPANから新しいディストリビューションをインストールする際に使うコマンドはなにか
- 組み込み関数openを3引数形式で使うのは何故か
- openのようなシステムコールのエラーを検出(と報告)するにはどのようにするのか(エラーの検出と報告を自動的に有効にする方法を知っていればボーナスポイント)
- Perl5で例外を投げるにはどうするのか
- Perl5で例外を捕捉するにはどうするのか
- ファイルの読み込みにおける
for
とwhile
の違いは何か - メソッドと関数においてパラメータ*5を取り扱うにはどうしたらよいか
my ($value) = @_;
の変数を囲む括弧が意味するものは何か、またこの括弧を取り除くと何が起きるかnew
は組み込み関数ないしキーワードか- コアライブラリやCPANモジュールのドキュメントを読むにはどのようにするのか
- ハッシュの値のみを取り出したい時はどのようにするのか
(追記)
誤解があってはいけないので、ここに元エントリの本文の訳を追記します。この質問リストは確かにPerl特有の知識を扱っています。しかし誤解しやすい文法やエラーハンドリングに関する実践、テストの作法、ライブラリの利用法やドキュメントの検索の仕方などがそれぞれの言語特有の知識なのは当然であり、どんな言語でも学ぶ必要のあることではないでしょうか。
それを「優れた Python プログラマを見分けるのに、「Pythonでは」という質問はあっても「Pythonならでは」の知識を問う質問は要らない。」と言い切ってしまうのは違和感があります。
How to Identify a Good Perl Programmer (by chromatic)
先日の記事Why You Can't Hire Great Perl ProgrammersはPerlコミュニティに対する呼びかけだった。我々はPerl初学者がそのスキルを伸ばしてコミュニティに参加してほしいと思っている。何人かにコメントで指摘されたのは、先の記事は雇い主について触れていないということだ。確かに、大都会にある会社がたったの時給15ドルで凄腕のプログラマを得ようとするならば、それはとてつもなく大変なことだろう。
さらに、他にも暗に指摘された問題点がある。すなわち、よいプログラマを見分けるのは難しく、よいプログラマ自身だけがそれをできるということだ。それでもMicrosoftやGoogleの悪名高き面接選考ではこれが有効であり、自分が何を知っているか正確に把握できていない人々はその無知を晒すことになる。
あなたはおそらく時間や費用や無意味な採用のためだけのテクニックに頼りたくないのではないか。そして様々な理由から、有益で情報が多いと広く認められるPerlの資格試験はこの先も存在しないと思われる。そうであったとしても、よいPerl5プログラマを見分ける方法はある。それが、以下に示した質問のリストである。
(27 questions)
これらの中に奇抜な質問はひとつもない。すべて単純明快な回答があり、Perl5やその哲学、実践に対する理解を示すものだ。よいPerlプログラマなら答えられて然るべき質問はこれらだけではないが、もしこれらの中に簡単に答えられない質問があるならば、もっとPerlを学ぶ必要があるといっておこう。
むろん、あなたの仕事にとって必要な特殊スキルについては考慮すべきだが、あなたはその評価ができるはずだ。
あるいは、もしあなたがPerl5を学び始めるのだとすれば、このリストはそのスキルを測るのにも適している。もっとも、少し学んで実践すれば、上記の質問全てに答えられるようになるだろう。よいPerl5のテキストならば、すべての答えが得られると思う。私の書いた『Modern Perl』でもよい。