LISPUSER

LISPMEMOQ: How can you tell when you've reached Lisp Enlightenment?
A: The parentheses disappear. -- Anonymous

(top)  (memo)  (rss)

Lisp はなぜ成功しないか? (Why Lisp will never win)

http://perl.plover.com/yak/12views/samples/notes.html#sl-39 より.チョー訳.

Lisp ユーザーのコミュニティには多くのまずい点があります. comp.lang.lisp は私が今迄見てきたなかでもっとも病んだニュースグループの 一つです.この記事で一度に二つの深刻な問題を指摘しようと思います.

二〜三年ほど前に,comp.lang.lisp で「より多くの人々が Lisp を使わないの はなぜか?」という長い議論がおこりました.シルバは AWK のような仕事が できる「lisp スクリプト」ユーティリティーがあれば人々がカジュアルスクリ プティングに Lisp を使用するようになり,そこからより長期的なプロジェク トが始まるのではないかと示唆しました.彼の示したサンプルはこうです

awk 'BEGIN {FS=":"}; $6=="/sbin/nologin" {print $1}' /etc/passwd

これに対する反応は二つのパートで構成されています.一つは,「それは既に 可能だ」というものでした.

私は Lisp を(ほとんど Scheme ですが)カジュアルスクリプティングによく
使用します.一組のマクロと関数を使うだけで,その例を Common Lisp で表現
できます.

(with-lines-from-file (line "/etc/passwd")
  (let ((fields (string-split line :fs #\:)))
    (when (string= (aref fields 5) "/sbin/nologin")
      (format t "~A~%" (aref fields 0))))))

この解決策は AWK バージョンより少なくとも 2.5 倍長く,しかも, 一組のマクロと関数 を要求するのです! この作者が課題のポイントを外し ている以上に興味深いのは,この作者は無意識のうちにそうしたように見える事です.

つまり問題1 は,他人の価値や有益性に関する判断についての完全な無知です.

しかし,続く反応はさらに深刻な問題を抱えています.

しかし,本当のところどれほど多くの **one-liners** を書くことがある んだい?それほど多くはないよ.もし one-liner が役に立つくらい十分に 複雑になったら,Perl のトリッキーなコード圧縮記法はたいてい他の言語 で書いたのとほぼ同様の長さに展開されているさ.そして 6 週間か 6 ヶ 月語には Perl のパズルをデコードするより Lisp を読むほうが良いと思っ ているだろう.

どれくらい私が one-liners を書いているか?正確にはわかりませんが, 一日に数十くらいでしょう.しかし,私は特例かもしれません.我々は AWK は,それが実際の人々の要求に合わなかくなって完全に失敗し,暗がりの中 に消えていったを知っているからです(←これは皮肉です).そう,問題 2 は Lisp が効率的に解く事ができない問題に直面すると,その反応は それは本当の問題ではないあなたはその問題とくにはバカすぎる を混ぜたものになる,という事です.

もう一点 Perl に対する非難にたいして指摘しておきましょう.Perl がどのよ うにして関係してきたのか?シルバは Perl ではなく AWK について議論してい ました.しかし,comp.lang.lisp の人々は Perl についての議論を止めること はありませんでした.彼らはつねに Perl について議論していました. comp.lang.python で同様の事がおこったのを見たことがありますが,Perl に ついて議論する人を見つけることはほとんどありませんでした.これは comp.lang.lisp が病んでいて comp.lang.python が健全である事を示している と思います.Lisp ユーザーは Perl に関心があり,Python ユーザーは Python に関心があるからです.

Lisp が成功しない本当の理由は Lisp プログラマーは成功を望んでいないとい う事です.彼らはいつも「Lisp を使っている人が少ない,Lisp が認められて いない」という事について不満を言っています.しかし,彼らはニュースグルー プへの新参者をバカにしたりさらしものにしたりといった対応をとります. (グループのレギュラー陣はこの対応について疑問を持っていないでしょう. なぜなら彼らはバカでうるさいから!!)もし Lisp がポピュラーになったら, それは comp.lang.lisp の人々にとって最悪の悪夢となるでしょう.

Lisp は多くの面で優れた言語だです.しかし,Lisp の世界は大きな社会的問 題を抱えています.私はそれを助けたいと思いますが,私に何ができるでしょ う.なぜなら彼らはそういった事を他人から指摘される事を望まないからです. 少なくとも私からは….

という指摘.確かに,comp.lang.lisp はド初心者には怖いかも?で,

awk 'BEGIN {FS=":"}; $6=="/sbin/nologin" {print $1}' /etc/passwd

の例ですが,私ならどうするかなー.もしこういったテキスト処理を多用した くなったら

(awk :input "/etc/passwd"
     :begin (field-separator ":")
     :body  (when (string= (field 6) "/sbin/nologin")
              (print (field 1))))

とかかなー.一行じゃな済みませんが emacs から使うから記号で圧縮するより 読んでわかりやすいほうが好みですね.でも,シェル使ってるときは Perl の ワンライナーもよく使いますし,適材適所ですね.

posted: 2006/03/03 02:10 | permanent link to this entry | Tags: LISP

(top)  (memo)  (rss)