Erlangと仲良くなりたい

iwanerlang,programming,twitter

はじめまして、iwanです。
インフラエンジニア3ヶ月弱です。

トライコーンのサービスの縁の下の力持ちになるべく、
日々、業務に励んでおります。

月初にテーマは決まってたものの、時間だけが過ぎてしまいました。
気張らず自分が今できることをコツコツと書いていきます。

今回は、昨今白熱し始めた、twitterにも使われているらしいと噂になった、Erlangを取り上げます。

Erlangの特徴は、並列処理です。って書いてる私自身もまだちゃんと理解できてませんが、、

ただ記事をコピペするのはアレですので、
Erlangの記事をリンクしておきます。

http://ja.wikipedia.org/wiki/Erlang
http://erlangworld.web.fc2.com/

今回は、定番の"世界よコニチワ!"をやってみましょう。

とりあえず、EPELからpackageひろってErlangを入れてみます。
環境はCentOS5です。

# yum install unixODBC
# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/5/i386/erlang-R12B-5.6.el5.1.i386.rpm

パッケージをインストールしたら、コマンド実行!

# erl
Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.6.5 (abort with ^G)
1>

なんか出てきましたね。
Erlangは対話型のインタプリタを使ってコードを実行します。

まずは、簡単な計算を実行してみます。
Erlangは式の終了は"."です。perlの";"みたいな感じなのでしょうか。
1> 2010.
2010
2> 3.14.
3.14
3> 5/2.
2.5
4> 2/3.
0.6666666666666666
5> 2*4.
8
6> 3.2*6.8.
21.76

続いて変数に代入を、
1> INT = 1 + 2 + 3,
1> INT + 4.
10
2> INT.
6
3> INT + 5.
11
4> int = 1 + 2.
** exception error: no match of right hand side value 3

Erlangでは小文字は変数として使えないみたいですね、マッチしない!とエラーを出力しているので、 = は代入ではなくパターンマッチの役割であることも推測できます。

もひとつ特徴としては、単一代入変数であるということ、

7> INT = 5.
5
8>INT = 6.
** exception error: no match of right hand side value 6
9> INT.
5

このように、変数への代入は1回限りなんですね。

それでは、今回のお題のコニチワ

1> Hello World!.
** 1: syntax error before: World **
1> hello World.
** 1: syntax error before: World **
1> "hello World".
"hello World"
2> A = "Hello".
"Hello"
3> B = " ".
" "
4> C = "world!".
"world!"
5>A+B+C.
=ERROR REPORT==== 24-Feb-2010::18:12:21 ===
Error in process <0.29.0> with exit value: {badarith,[{erl_eval,eval_op,3},{erl_eval,expr,5},{shell,exprs,6},{shell,eval_loop,3}]}
** exited: {badarith,[{erl_eval,eval_op,3},
{erl_eval,expr,5},
{shell,exprs,6},
{shell,eval_loop,3}]} **
"Hello world!"
7> A++B++C.
"Hello world!"

ドキュメントをまだ読んでいないので、エラーを出しましたが、"Hello world!"が表示できました。

というわけで、Erlangを理解するために並列処理を書いてみたい! と意気込んでおります。
Erlangとは永い付き合いになりそうです。

つ・づ・く

iwanerlang,programming,twitter

Posted by iwan