作者: 機械伯爵
日時: 2003/2/1(22:10)
 ども、機械です。

 少し前に、Lispの権威(?)の方(Paul Graham)が、
「PythonはLispに近づいてるが、まだまだだな」的なコ
トを書いて、Python陣営の人に反論食らってましたが、
別所でもLispユーザからPythonへの以降の話があったり
と、結構この2つの言語の比較について興味がある人、
いるみたいです。

※余談ですが、件のLispの権威の方がRubyを知ったら、
  間違いなくPythonの進化形として認めたんじゃないか
  なぁ・・・まつもとさん、Lisp好きだとか書いてたし、
  RubyにはLispっぽい文法、沢山あるし・・・

 しかしPython陣営からすれば、なぁんか有難迷惑な雰
囲気のようで・・・PerlからPythonへの以降はコミュニ
ティー挙げて歓迎してるのに、Lispユーザは敬遠してる
みたいですね。

 理由はたぶん単純なことでしょう・・・Pythonが難し
くなりすぎるのを恐れてる、とゆーところでしょうか。

 Lisp系言語というのは、非常に合理的な言語だと思い
ます。

 トップダウン式に分解していくLispの分析方法は、特
に複雑な計算やアルゴリズムの分野では、非常にすっき
りとした流れで考えていくことが出来ます。

※また余談ですが、化学分野の熱化学方程式などはForth
  式(RPN)が使いやすいです。

 ただ問題は、この数学的な思考が「出来る人」と「出
来ない人」が存在する、ということです(正確には、出
来ないとゆーより、面倒くさいからしたくない、という
べきか・・・)

 昔のコンピュータと異なり、現在では様々な分野でコ
ンピュータが利用されています。

 プログラムの目的も、難しい計算をとくためのみなら
ず、様々なデータ処理や作業といった「一見計算に見え
ない(実は計算なんですが)」作業のためのものも増え
てくるわけです。

 数学的な思考が出来る人なら、Lispで簡単に解くわけ
ですが、非数学的思考な人は、数学的に問題を考えるこ
とから始めなければならず、ちっとも作業がおわらない、
ということになるわけです。

 一方、Pythonは、そもそも教育用言語から発展してき
たという経緯があり、敷居を少しでも低くしておこうと
努力がなされた言語です。

 ですから、インタープリタ(ヴァーチャルマシン?)
の実行効率がとんでもなく悪いとか、シンプルな記法を
行うには文法が足りないとか言われながらも、「とりあ
えずこんだけありゃプログラムは書けるぢゃ」といった
点を死守してまいりました。

※そのせいかしらないけど、結局PEP(Python拡張案)で
  も、for文による回数指定ループ書式は加えられなかっ
  た・・・アレくらいはあっても良いと思うのだけど・
  ・・代わりに私の苦手なイテレータが加わった・・・

 よって、一種エレガントなLispの記法も「なんか難し
く見えるから」という理由で、Pythonにふさわしくない
として、現在は少しずつほかの記法に転換されつつあり
ます。

※今ではちょっと古くなってしまった「Programming 
  Python」でも、すでにlambda式やその仲間(map,apply,
  filter,reduce)の扱いは、慎重に行うよう警告がなさ
  れてきましたが、PEPでは、これらをリストの内包表現
  で置き換えようとしています(これがlambda一門より
  簡単かどうかは、ものすごく疑問なのだけど・・・)

 Pythonは、多分「泥臭い」言語のままでしょう。

 それは、プログラミング言語として洗練されることが
すなわち「ユーザを選ぶ」ことでもあるのを、知ってい
るからだと思われます。

 Lispが専門の先生が学生にプログラミングを教えるの
にPythonを使ったように(LispプログラマのためのPython
入門)、とにかく、Lispでは理解できないという人は確実
に存在する以上、Pythonのような「ヌルい」言語は必要
なのでしょう。

 Paul Graham氏はプログラマであって教師ではないので、
このことを理解するのは難しいでしょう。

 人間には様々なタイプがいて、同氏が「間抜け」呼わ
ばりする人間の中には、単に「プログラマとしての素質
は無い」だけで、他の分野では優れた能力を持ってる人
もいるわけです。

 でもって、そんな人たちが「パソコン(個人用コンピ
ュータ)」でプログラムしちゃいけないと、誰が決めた
のか。

 プロ(職人)の道具はプロ(職人)用・・・しかし、
日曜大工ならぬ日曜プログラマとして、日常の雑事を解
決するのにプログラミングをすることに意味ないといわ
れるのか・・・

 さらにプログラミングのプロでなくても、「プロジェ
クト」のプロはいますし、そのような方がプロトタイプ
としてプログラミング言語を使ったモデルを書けること
は、そんなに軽視されるべきなのか・・・

 プロのプログラマとアマチュア(兼業)プログラマの
共通語として、Pythonのような簡易言語が使われること
の意味を、もっと考慮すべきだと私は思います。

 Lispはプロのプログラマの道具として、数学者の計算
ツールとして、さらにハッカーの教養としてなくてはな
らないものですが、プログラミング自体の範囲が広がっ
た今、Lispだけではなんともカヴァーしきれないところ
があるわけです。

 Pythonは簡潔さ、すなわち力は求めていません。

 そしてそれは、「従来の意味での」プログラミング言
語の価値は無い、ということかもしれません。

 まぁしかし、世の中、コンピュータの利用範囲が広が
った以上、プログラミング言語の利用価値だって広がっ
てるんです。

 そこに、存在価値がある、とPythoner(巨蛇教信者)は
思うわけです。



<以下、全て日本語訳版。オリジナルはリンクでみてね>

Lisp プログラマのための Python 入門
http://www.unixuser.org/~euske/doc/python/python-lisp-j.html

技術野郎の復讐---Revenge of the Nerds---
http://www.shiro.dreamhost.com/scheme/trans/icad-j.html

「技術野郎の復讐---Revenge of the Nerds---」への反響
http://www.shiro.dreamhost.com/scheme/trans/icadmore-j.html

PythonとLispの関係について
http://www.shiro.dreamhost.com/scheme/trans/IsPythonLisp-j.html