■
naoyaのはてなダイアリー - Perlプログラマのレベル10 - Perlプログラミング救命病棟より
http://d.hatena.ne.jp/naoya/20050809/1123563794
より引用
レベル10: Perl のobfuscation コンテストや「golf」コンテスト*3 に参加する。たとえば、普通のプログラマなら1 つのプログラムを丸ごと必要とするような関数を、埋め込みコードを使って単一の正規表現で実装してしまう。Perl コアにパッチを送ったり、新しいメジャーなモジュールを寄贈したりすることで、Perl コミュニティで有名人になるかもしれない
さらにレベル数を大きくしていくと、すぐに該当者がLarry Wall だけになります。いかがでしょうか。レベルいくつに相当したでしょうか。僕が知る限り、レベル7以上のプログラマはそんなに多くないようです。レベル8以上になると、周囲の知人から探すのが難しくなってきます。レベル9以上の人は、知人の中には片手で数えられる程度しかいません。
このレベル10が書いてある Perlプログラミング救命病棟、実は僕が監訳をさせていただいた書籍です。原著は Perl Medic: Transforming Legacy Code。use strict も使っていないグローバル変数だらけのスパゲッティコード、いわゆるレガシーなPerlスクリプトをどうやって今風に生まれ変わらせるか、その過程を通じてPerlの"ダークサイド"に堕ちないようにするにはどうしたらいいか、を教えてくれる一冊です。
って引用させてもらいましたが、Perlプログラミング救命病棟
も id:naoyaさんのエントリも非常にありがたいです。
というのも
普通のプログラマなら1 つのプログラムを丸ごと必要とするような関数を、埋め込みコードを使って単一の正規表現で実装してしまう。
というのこそ、私にとってはダークサイドということが再確認。。。
あと、断片を異なる文脈から切り出すのはいけないという風潮?がどこかにあるみたいだけれど、ネタにマジレスっぽくなるけれど、このレベル10ってそりゃ、初心者を対象とする低位と上級者というかなんというかを対象とする9〜10って明らかになんというか前提条件が違う気がする。個人的にはPerlが他の言語より一方的に劣るとは思わないけれど、真ん中のレベルの人たちって本当にそういう人たちなんだろうか。
Perlレベルだからそれでいいのかな?(いいのかも)
どういうことかというと、他の言語経由でPerlに入ってきた人はこのリストの斜めだかZ軸だかに進んでしまってたり、離散的に学習していると思う。
みたいな時期に手を出す人間は普通は、
use strict や use warnings
より先にSedやAwkで正規表現ってことになってるだろうしなー。
段階でもEMACS LISP と Scheme。。じゃなくてもEMACS LISPとCを触ったことがあればダイナミックスコープとレキシカルスコープはわかるだろ。とかって気はする。
あー、こんな感じになるから文脈を捉えずに断片を抜き出してきて云々言うことに問題があるんだろうなー。
たとえば、この本を読む人が存在する文脈は
っていう文脈だろうから。そこで前述のように「私のレベルはどこ?」っていう疑問から関係ない方向に微妙なことを書くのはやっぱルール違反だったかもしれない。けど入力したのもったいないしとりあえず登録。(私のレベルはタブン、2.5ぐらい?概ね、s2p,a2pの出力をこねこねする初心者(そういや大学の頃、高校の時の先輩にに「お前が初心者って言うな」ってよく言われたけど、あのリスト上はそうなる。。アマチュアプログラマだし))
Perl書法の目次を今、見てみるとなんだか今読むと面白そうだな。当時は(高校生だったので)実務してなかったし。
追記
でもやっぱCPANすごいな。なんというか言語標準のパッケージシステムを持ってる強みってあると思う。BSDだとかLinuxだとかSolarisだとか気にしなくていいしね。あとCPANクライアントっていうのか?あれがすごい。GNU Readlineとか入って無くても無いなりにがんばってくれるのがなんとも言えずに感動した記憶があるなー。ああいうのをズバズバ使うと生産性も高くなるだろう。。。
ダークサイドに落ちそうな例
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9
こういうのを(初めて)知ったときは私からすると相当かっこよくみえたかもなー。