kiyoka.2007_02_08 RSSPLAIN

Related pages: !kiyoka.blog.list !kiyoka.blog.2007_02
555555555555555555555555555555555555555
5

[プログラミング] バベル案内

5

バベル案内EXTについて。

5

このエッセイは、C、C++、Lisp、Java、Perl、Ruby、Pythonの言語の紹介になっています。

5

多少乱暴だけど、言っていることは説得力があり概ね賛同できます。

5

 

5
 バベル案内EXT
5
 Lispを学ぶのは簡単ではない。大きな飛躍がいるのだ。Cみたいなプログラム
5
 をLispで書けるというのでは十分でない。そんなのは無意味だ。CとLispはス
5
 ペクトルの反対の端に位置している。他方が上手く扱えない領域で大きな力を
5
 発揮するのだ。
5
 Cがコンピュータがどう動作するかのモデル化に最も適した言語とすると、
5
 Lispは計算というものがどう振る舞うかをモデル化するのに最も適した言語だ。
5

 

5

そう、Lispはスペクトルの反対側に位置しているんです。

5

だからこそ、C言語とLispの両方を学ぶ必要があると思います。

5

ここで言っていることは私の経験と大体一致しています。

5

ただ、気になる所もあります。

5

 

5
Rubyを持ち上げすぎ(この著者は最初にRubyが好きと書いていますが)
5

Rubyは言語仕様が安定しないという部分でビジネスに使えないという事実があります。

5

その辺は適用範囲によっては結構問題になります。

5
PHPが紹介されていない。
5

取りあげるに足らないということでしょうか...(笑)

5

 

5

私のまわりでは本当にLispユーザーのサンプル数が少ないので実態が良く分からなかったのですが、

5

これを読むと、Lispという言語が日本国外においてもあまりに特殊のようですね。

5

Amazonの初期のメンバーのほとんどがLispを使っていたというのは、輝かしい過去の出来事として語られています。

5

これは、オールドタイプがどうこうとか、世代間のギャップが関係しているわけではなさそうです。

5

すごいエンジニアは大抵、Lisp『も』使っているということでしょうか。

5

そんなわけで、私は仕事ではPythonを関数型言語として使いながら、いつかLispに優しい世の中がくることを願いつつLispのマクロの練習をコツコツやる日々です。

5

 

5

 

5

COMMENTじょりちょこ

僕はRubyを仕事に使っています。

Perlでやっていたような仕事は、すべてRubyによって置き換えることができる、というのは自分の実感としても完全に同意できます。

Rubyはバージョンアップごとに言語仕様が変わるので、ビジネスには使えない、という意見にも同意します。もっとも、だったらPHPはもっと使えない、というのが僕の実感ですが。。

5

COMMENTkiyoka

じょりちょこさん、コメントありがとうございます。

Rubyの件は同じ意見ということで問題ないですね。

PHPの件ですが、これがなかなか曲者で...

マーケティングが上手くて、本当はPHPという名前を変えてもいいくらい言語仕様が変わっていくのは御存知の通りで、現場ではリスクが大きいという評価なんですが、それに反して意思決定権を持っている人のマインドシェアが高いんですね。

そんなこんなでPHPを使うという話が自然発生的に決まってしまうという。汗;)

Zendのビジネスセンス、マーケティングセンスには脱帽です。

PHPのコンパイラはSchemeで書いてあるそうですが、ユーザーにはそんな素振りを見せずPHPの素晴らしさをうまく宣伝していく。

Javaの例を引き合いに出すまでもなく、言語ビジネスは宣伝のうまさで左右されるいわば化粧品ビジネスのような感じになってしまったのでしょうか。

エンジニアとしては常に実際に手に取って一つ一つ評価する態度を忘れないようにしないといけないですね。

5

COMMENTじょりちょこ

PHPが人気あるのは、マーケティングセンス以外のところにも、理由はあると思います。

(1) (プログラミング一般を知らない人が)Webアプリケーション開発に取り組もうとしたとき、もっとも敷居が低い。

(2) 性能が高い。

(3) 言語仕様はともかく、即物的に役に立つ関数が豊富に用意されている。

(4) レンタルサーバで利用しやすい。

特に(1)の理由で、プログラマを確保しやすいのがマネージャー的にはありがたいところです。おそらく現時点ではJavaプログラマーの次に確保しやすいのがPHPプログラマーだと思います。

RubyはPerlを完全に置き換えられるのですが、Ruby on RailsがあってもPHPを完全に置き換えることはできません。HTMLしか知らない人が見よう見まねでサンプルコードをいじりながら習得していくというやり方がPHPでは可能です。Rubyではそれができないのです。eRubyでPHPを置き換えるということは可能かも知れませんが、やはりそれは無理なのです。(2)〜(4)の要件がクリアされないからです。

PHPはPerlによるCGIプログラミングを完全に置き換えることができたのです。HTMLしか知らない人がPerlによるCGIプログラミングを習得するより、PHPを習得する方が明らかに容易です。

Joel on SoftwareにExcelがどうしてLotus 1-2-3を置き換えることに成功したかの話が出てきます。Lotus 1-2-3のファイルの読み書きとマクロの実行のすべてがExcelでできるようになったとき、つまりLotus 1-2-3でできたことのすべてがExcelでも可能になったとき、勝負はついたのです。PerlとRubyの対比、PerlによるCGIプログラミングとPHPの対比を見ると、プログラミング言語においても同じことが言えるような気がします。

5

COMMENTkiyoka

ありがとうございます。

じょりちょこさんのおかげでkiyoka日記全体の内容が濃く有意義になっている気がします。^_^

じょりちょこさんの意見に納得です。肝は(1)の要件ですね。

PHPの人気はWebに特化した所にあるのでしょうね。

Webプログラミング言語の勝負ではRubyやPerlに勝利していると思います。

問題は人気の弊害が別の所に出るという点です。

初めてスクリプト言語としてPHPを知った人はPHPを汎用スクリプト言語だと思ってしまう事もある(あった)という点です。

(それはZendの責任では無いんですが...)

Apacheログ解析やDBのバッチ処理などをPHPで作られていて、後で(私が)苦労させられたという経験があります。

そんな経験を多くしているせいで言語の選定などに気を使わない人に対して警戒するようになってしまいました。^_^;

Joel on Softwareには言語の長所短所について実りのない議論をして時間をムダにしなくてもよいという話も有りますが、やっぱりどんなものにも程度というものがありますよね。

そんな気がする今日このごろです。

5

COMMENT@aka

Python は名前しか知らないんですけど...

> Pythonを関数型言語として使いながら

「関数型言語」として使えるんですか? 凄い!

5

COMMENTkiyoka

> 「関数型言語」として使えるんですか? 凄い!

厳密には、*ある程度*関数型言語のスタイルで書くことができるという意味です。

私が関数型と書いているのは、副作用が無いとかlambdaを使った関数合成が出来るとか、関数型言語の持つ機能の内、ごく一部の機能に限っての話です。

*ある程度*と書いたのは、Pythonのsort関数には『副作用あり』のバージョンしか無いとかいろいろ制限があるので、注意しないと関数型スタイルが壊れるのです。

Python 2.5では副作用なしのsortもサポートされたりして、もっと関数型スタイルでプログラミングできるようになるそうです。

但し、この関数型スタイルの話に限って言えば、Rubyのほうが、より副作用の無いメソッドが多く用意されているような気がしますので、Pythonならではというわけではありません。

5

...comment disabled...