Erlang のおはなし (1)

SharedObjectの話を期待していたみなさん、ごめんなさい! 代打で登場したときだけ、少しプログラムの話にお付き合いください。

で、この Erlang(あーらん)というのは「関数型」と呼ばれているプログラミング言語の一つで、携帯でもおなじみエリクソンという会社が 1987 年頃から自社用に開発して使ってきました。現在は誰でも使えるので、公式サイトへ行って、Downloads のページから最新版をダウンロードするとよいでしょう。

インストールは、ふつうのアプリケーションと同じように、インストールするフォルダを指定するだけで殆ど終わります。インストールが終わると、Windows ならスタートメニューに「Erlang OTP ****」というメニューができるので、Erlang というショートカットを使ってください。すると、

こんな感じで DOS プロンプトみたいな画面が出てきます。これが、Erlang に命令するためのコンソール画面となっていて、プログラムを打ち込んで動かしてみたりできます。ちなみに、この画面を終了させるときは、終了ボタンを押してもよいですし、「1> 」と出ているところで halt(). と入力し Enter キーを押してもよいです。

では、このコンソール画面で少し色々試してみましょう。まず、数を入力してみます。例えば、

1> 1098778899

と、適当な数を入力してみて、最後にピリオドを入力してから Enter を押します。すると、いま入力した数がそのまま次の行に表示されたと思います。同じようにして、「3.141592613」とか「-08977678」とか、色々な数を入力して、ピリオドを入力し Enter を押してみましょう。どれもそのまま表示されますね。では次に、

2> 23 + 78.

とやってみると、ちゃんと 101 という答えが表示されたと思います。計算もできますね。Erlang では、普通の電卓などでは表示しきれない桁も扱えるので、

3> 8989808098099870908768769876598769 * 908237140923847230942137012398.

なんて計算も、ちゃんとやってくれます。

すると、こういう数を入れておく「変数」はどうやって使うんだろう? ということになりますね。Erlang では、変数は必ずアルファベットの大文字で始めることになっているので、

4> T = 64.

と書いてみましょう。すると、次の行にも 64 と表示されてめでたしめでたし。じゃあ、今度は変数を使って計算してみましょう・・・

5> T = 12.
** exception error: no match of right hand side value 12

・・・おっと? エラーですね。これは Erlang のようなプログラム言語の特徴とも言える点で、いちど値を振った変数には、二度と値を振れないのです。違う値を振りなおそうとすると、いったんこれまでの入力内容を全てクリアしなくてはなりません。

6> f().

と入力すると、変数と値の結びつきが開放されて、T = 12. というふうに新しい値を振れるようになれますが、それまで振ってきた値がすっかりなくなってしまうので、Erlang と直に対話しているコンソール画面ならでわの方法だというくらいに理解したほうがよいです。こんな具合で、

7> R = 123.
123
8> S = 55.
55

とやってから、R + S. と入力すると、ちゃんと 178 と表示されます。その他、

9> R*S/S*R+R*S*R*S*R-S+R*R*S*S/S/R/R*S/R+R.
5629137896.593496

こんな感じでどんどん計算します。

今回はこのあたりまでで終わります。電卓代わりくらいにはなるでしょうか・・・

追記: リンク集など

Erlang-users.jp
http://erlang-users.jp/
日本の Erlang ユーザのためのハブサイト。できたて。

www.trapexit.org
http://www.trapexit.org/
London Erlang Training and Consulting Ltd.

Open Source Erlang
http://www.erlang.org/
the Ericsson Computer Science Laboratory(本家)

Computer Science Laboratory
http://web.telia.com/~u83304791/
The Software Architecture Laboratory, SARC(出生地です)

http://armstrongonsoftware.blogspot.com/
Joe Armstrong(『プログラミング Erlang』の原著者。Erlang で学位をとった人)
http://www.klab.org/
KLab(クラブ)株式会社さん。ブログの記事がたいへん勉強になります。
http://d.hatena.ne.jp/m-hiyama/
檜山正幸さん
http://www.thinkit.co.jp/free/article/0711/4/4/
並列処理が可能な関数型言語「Erlang」
http://jp.rubyist.net/magazine/?0017-Legwork
Rubyist のための他言語探訪 【第 10 回】 Erlang(まつもとゆきひろさん)
http://gihyo.jp/dev/clip/01/orangenews/vol39/0004
濃縮還元オレンジニュース: これから15分でErlangを始めるための資料(リンク先の Scribd で翻訳が読めます)

コメント / トラックバック 2 件

この記事へのコメント・トラックバックを追いかけることができます。(RSS 2.0

  1. hiloki より:

    わ、本当に未知の言語です><
    とりあえず Erlang とググってみると、

    twitterブームの陰で注目を集める“Erlang” - @IT

    こういう記事が出てきたのでなんだかwktkなのです。
    面白いです。

  2. KWSN より:

    おはようございます、コメントありがとうございます。
    そうですね。Twitter が使っていることでも知られるように
    なりました。あと、Ruby のまつもとさんが紹介されていたり、
    最近『プログラミング Erlang』という本が出たりで、
    ブログの記事も増えてきているようです。

    構文自体はすごくシンプルなので(再帰とか高階関数の
    取扱いに注意すれば)、なにかここで公開できればと思って
    おりますです。

    こーいう内容でもよかったら、
    またよろしくお願いします。

コメントをどうぞ

トラックバック URL

トラックバック

このブログのフィード