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


この記事へのトラックバックURL

この記事へのトラックバック
オライリー矢野様より献本御礼。 Erlangプログラミング Francesco Cesarini / Simon Thompson / 佐藤嘉一訳 [原著:Erlang Programming ] ついにこの言語にも動物本が。
receive book -> 書評(book) end. % Erlangプログラミング【404 Blog Not Found】at 2010年07月24日 17:20
標題: Erlang, Oz/Mozart, Prolog, 単一化 ---  Erlangのこと、あれこれやってたから、弾さんのコメントがあった。 http://blog.livedoor.jp/dankogai/archives/50832431.html そろそろerlangについて一言いっと
Erlang, Oz/Mozart, Prolog, 単一化【ホットコーナーの舞台裏】at 2008年01月02日 10:43
404 Blog Not Found:そろそろerlangについて一言いっとくか とうとう弾さんまで(という言い方は失礼な気がしてきたが) Erlang を触り始めたらしい。 ちょっとだけ Erlang を弁護すると、"->" が関数定義と receive の両方に使われているのは、それなりに意味がある....
弾さんまで Erlang を触り始めたらしい【へ〜たのめも】at 2007年05月17日 13:05
この記事へのコメント
-> が関数定義とメッセージ受信に使われてるのはどっちもパターンマッチングとして扱ってるからでは?
Posted by rw at 2007年05月17日 12:12