2007年05月16日 22:45 [Edit]
そろそろerlangについて一言いっとくか
実は最近結構erlangを使っているので。
萎え - whatever erlang sucks
一貫性無さ過ぎな文法
変数束縛が
Variable = Value.
なのに、関数定義が
function(Aargument) -> blah, blah, blah.
てのはどうよ?しかも変数は大文字ではじめて関数は小文字ってわけわかめ。
しかも、 ->は関数だけではなく、
receive Message -> blah blah blah.
という風にも使う。確かにMessageをArgumentとして見れば、関数定義と似てはいるのだけど。
しかしそれなら、JavaScriptのaddEventLister()じゃないけど、receiveするという関数/メソッドを用意するだけでいいじゃん、とも思う。しかも、Messageを送る方は、
Receiver ! Message
とこれまた構文が異なるのだ。OOに慣れた身からすると、無駄に構文糖衣が多いというのか。
無名関数が醜すぎ
fun(Arg) -> blah, blah, blah end.
ってちっともfunじゃねえよ!それになんだ、このendってのは。
exportってexportしてねえじゃん
単にpublicにしているだけで。おかげで
reverse (1..32) # perl, et al. [1..32].reverse # ruby, et al.
が
lists:reverse(lists:seq(1, 32))
ですよ! funでないfun()とあいまって、mapとかつかいづらすぎ!
あと、モジュール名って階層構造に出来たっけ?
.(period)と,(comma)と;(semicolon)を使い分けている理由が
わからん。
その他
コメントが%だとか(もまいはPostScriptか!?)、-exportがDRYでないとかいろいろあるが....
萌え - whatever erlang rocks
それでも、軽量プロセスかわいいよ軽量プロセス。このデレだけで他のツンに耐えられる。
プロセスを使い捨てにするなんて、究極の富豪プログラミング。エラーは出て放置。無限ループにはいっちゃったプロセスも放置。それでも負荷はほとんどかからない。でもi().すると片付けたくもなってくるけど。
OOでインスタンスをこさえるような気軽さで、erlangではprocessをこさえる。これに慣れるのは大変だけど、一端慣れてしまうとすこぶる気持ちがいい。毛をひっこぬいてふっと吹くと分身がどっと表れる、孫悟空(ドラゴンボールの方じゃなくて西遊記の方)になった気分を手軽に味わえる。
でもそれなら、OOな並列環境ならさらに取っ付きやすさも増すのではとも思う。これについては別entryで書く予定。
まとめ - er, lang.
檜山正幸のキマイラ飼育記 - 僕もErlangを試してみたよ -- 軽量プロセスを中心にErlangが汎用言語として使いやすいとはとても思えないのですが、軽量プロセスを使った並列処理や、ノード(ネットワーク上のランタイム)間通信による分散処理などが、比較的容易に書けるのが魅力です。単に新参の(実際は古いのだけど)関数型言語として言語仕様を横並びで比較されるちゃうと、ちょっと見劣りする気がするな。Erlangの独特な個性のほうに注目すべきでしょうね、やっぱり。
檜山さんにこうきれいにまとめられるとこちらとしてはもう書く事はなさそうだけど、erlang使っていて感じるのは、階層(layer)分けがこれでいいのか、ということ。LispのreplにしろSqueakの環境にしろ、その環境で全部済ませるというのが私はどうも苦手。それよりもlayerが分かれている代わりに、異なるlayerをいったり来たりできる方がうれしい。
そんなわけで、今一番欲しいのは、他の言語/環境とのbinding。一応はescriptというものもあるのだけど、これは(今のところ)起動がくそ重くてerlangの魅力を著しく損ねる代物。Language::ErlangとかInline::Erlangとか誰か作ってくれないかなあ。workerを書く程度であれば、erlangのへんてこな文法でもいいけど、managerに相当する部分はもっと「ふつう」に書きたいし。
そう。Haskellに対するPugsのようなものが欲しい。Haskellはシンプル過ぎて「ふつう」に使いづらいが、erlangはその逆のような気がする。
erlangは、案外Tclのような受け入れられ方をするのではないか。Tclそのものに用があるというよりTkつかいたさにつきあい始めて、(Perl|Py|Ruby)/Tkが出来たら言語そのものの人気が下がって、しかしなくなりはしないというような。
そのTclにとってのTkなみの魅力が、軽量プロセスにはあります。
Dan the Broken Erlang Speaker