2007年4月30日月曜日

YAPC::Asiaメモ(その4)Perl Worst Practices

Martyは自分で書いた日本語のプレゼンテーションスライドで講演。日本語を話す「外人」はたくさんいるものの、これだけ読み書きできる外人は貴重であります。

演題はDamian Conwayの著書、Perl Best Practicesのもじり。
  • 私にとってのいいPerlは
    • きれいだ(遠くから見ても)
    • 有用だ
  • 悪いPerlは
    • 読むのが難しい
    • 醜い
    • 有用だ(だからなくしたくてもなくせない)
    • もろい(変更するとバグが出る)
  • Javaが好きじゃない
    • バカでも使えるように設計された言語(会場拍手)
    • バカな人でも危険なコードは書きにくいから
  • Perlが好きだ
    • 頭がいい人のための言語。制限が少ない。言語の挙動まで変えられる
    • バカでも使えるけど(そういう例がたくさんあるCPANってサイトは知ってる?)
  • Javaは成功しPerlはそれほどでもない。なぜ?
    • Slack's Law=会う人の95%はバカだ
    • この会場で、頭がいいと思う人は手をあげてください(二人半)
    • この種のデータのうち95%は捏造だ(落ち)
悪いPerlの問題は3つ。変数、正規表現、オブジェクト指向。
  • 変数
    • バグの95%は変数が原因(バグを見つけたとき変数が関係する場合を数えてごらん)
    • 変数をなくすのが理想だけれど、それは難しいからこういう変数をなくそう
      • グローバル変数
      • パッケージ変数(長い名前のグローバル変数だからね)
      • local変数
    • my変数は小さい範囲で使われるならばだいじょうぶ(スコープが25行以内くらい)
    • $1と$2はグローバル変数
  • 正規表現
    • ちゃんと使わないとあぶない。ユーザの入力をgrep /$input/, @array;としてもだいじょうぶ?
    • Mail::RFC822::AddressやRegexp::Commonを使おう
  • OO
    • OOは害悪、でもOOはエレガントだと思っている人がいるから困る
    • 今朝のMJDはOOを使ってなかったよ
    • Perl Object Orientation=POO=「ウンコ」



この人のユニークなところは冗談にまじえてふと真面目なトピックをいれるところ。野暮だとは思いつつ要点をまとめると

  • コードはきれいに書こう
  • 変数はmyで。スコープは狭く。
  • パターンマッチの際の$1と$2に注意(あと$aと$bも注意ですね)
  • 有用なモジュールはMail::RFC822::AddressやRegexp::Common
  • オブジェクト指向は適材適所で

というところ。

先週NYにいらっしゃったときにお会いしたのですが、とてもいい人でした。

0 件のコメント:

コメントを投稿