パスワードを忘れた? アカウント作成
492542 journal

Yak!の日記: Acme::DropEyes の衝撃 - 素晴らしき変態言語 Perl -

日記 by Yak!

とりあえず何も言わずにここを見て欲しい。

出っ来の悪い瓶の AA があるなぁ、くらいがぱっと見の妥当な感想だろうか。が、"Language Perl" と書いてあることに注目して欲しい。そう、驚くべき事にこれはこのまま実行可能な Perl スクリプトである。

>wget -q -O- http://99-bottles-of-beer.net/download/737 | perl
99 bottles of beer on the wall, 99 bottles of beer!
Take one down, pass it around,
98 bottles of beer on the wall!

(略)

1 bottle of beer on the wall, 1 bottle of beer!
Take one down, pass it around,
No bottles of beer on the wall!

出力されているのは 99 Bottles of Beer という曲の歌詞である。基本繰り返しなのでプログラミングの例題によく利用されるらしい。最強言語 HQ9+ でも respect されているぐらいなのできっとそうなのだろう。自分で書く場合には 1 bottle の場合は s がつかない、という点が注意点である。

このコードがいかなる理屈で動作しているかについては shinichiro_h氏による説明を参照のこと。これが手作業で作られたコードだというならそれはそれで恐ろしいことだが、その場限りで済むことではある。真に恐ろしいのは、こういうコードを作るための CPAN モジュール(Acme::EyeDrops)が存在するという事実である。類似モジュール群だと、Whitespace にだって負けない Acme::Bleach、一本の棒に全宇宙の全ての情報を記録する、を地でいく Acme::Bleach::Numerically、記号すらなく予約語しかないという ppencode と、おまいら本当に馬鹿ですね(褒め言葉)というのが目白押しである。ただし、Acme::Bleach あたりは割と簡単な仕組みなので、自立して実行可能かつ任意の形状に流し込める Acme::EyeDrop は際だっていると言えるだろう。

思うに、どーも自分が好む言語というのはどこか変態的であるらしい。Perl といい、複雑であることを自らに課しているんじゃないかと思うような C++ といい。まぁ、その複雑さが大好きなわけで C++09 も熱望しているわけだが。ちなみに最近一番さわっているのは行き当たりばったりで決めてるとしか思えない変態的文法を持つ AutoHotkey スクリプトだったりする。

product としてのコードを書く上ではこういう複雑さは忌避すべきものなのだろうが、趣味でやってる分、パズル的感覚というかコードを書くこと自体に楽しみを見いだせるということが重要なのだろう、きっと。ある意味では本末転倒かもしれないが。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...