erlang

17
関関関関関関関関関 関関関関関関関 Erlang @cev_cs 関関関関

Upload: honmadayo

Post on 22-Jun-2015

746 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Erlang

関数型言語の再入門

プログラミング Erlang

@cev_cs

本間皇成

Page 2: Erlang

前準備Erlang プログラミングをやってみたい方

http://www.erlang.org/download.htmlその後環境変数で bin のパス

OR

apt-get install erlang

Page 3: Erlang

本日の予定• Erlang 概要

• 関数型プログラミング

Page 4: Erlang

Erlang との出会い

Maz 氏の日記より

“ 次にくるトレンドは「並列」と「関数型」

両方を押さえた Erlang が本命 ”

Page 5: Erlang

ちょっと調べてみると・・

Twitter の内部にも Erlang が使われている!

既に実用化されている点からも、勉強会でちょっと触ってみたい!

Erlang との出会い

Page 6: Erlang

Erlang の何がすごいのか?

並列処理の機能を念頭に置いて設計されている!

Page 7: Erlang

並列処理の重要性

• 処理能力の向上

• 対障害アプリケーション

• スケーラビリティ

Page 8: Erlang

Erlang の並列処理

Erlang にはロックや同期メソッドがない!

わずらわしい排他制御を考えなくてすむ

Page 9: Erlang

スレッド1

スレッド2

共有メモリ5

1足して!

3足して!

6 8

6!? 8!?

ロックして共有メモリを変更できないようにしなきゃ・・

本来考えるべきこと

Page 10: Erlang

Erlang ならこんなこと考える必要がない!

↓関数型言語の特徴を

うまく利用しているため

ですが、今回は並列・分散プログラミングは扱いません。関数型プログラミングとしての Erlang の説明です。

Page 11: Erlang

関数型言語

私たちの学科では Prolog を勉強しましたその他 Lisp , Schema , Haskell , F# , Scala

利点?http://www.sampou.org/haskell/article/whyfp.html

Page 12: Erlang

関数型プログラミング

変数の違い 単一代入変数であることに注意!

大文字から始める

  =はパターン照合処理

Page 13: Erlang

アトム

• 小文字から始まる

• アトムの値はアトムそのもの

Page 14: Erlang

タプル

• 各変数を1つにまとめたい時に使用

• C の構造体と目的は同じだが、型宣言は無し

P = { point , 45 , 30 }. % 代入{ point , X , _ } = P. % 評価 _ は無名変数X . % -> 45

Page 15: Erlang

リスト入れるものの個数が決まってない場合に使用

[ 1, 2, 3, 4, 5, 6 ][ H | T ] で表現

[ H | T ] = L リストのヘッドを H に取り出し、テイルを T に取り出す

ヘッド

テール

Page 16: Erlang

確認!• 次の式は成り立つでしょうか? { 123 , abc } = { X , abc }.

成功!  X |-> 123{ X, Y } = { 333, ghi, 12}.

失敗  タプルの形が異なる{ X, Y, X} = { { abc, 12 } , 40, { abc, 12 } }.

成功! X|-> { abc,12 } , Y |-> 40[ A, B , C | T ] = [ a, b, c, d, e ]

成功! A|-> a , B|-> b, C|-> c, T|->[d,e]

Page 17: Erlang

まとめ

• 関数型は知っておいて損はない– この言語の素晴らしさに関して時間を割きまし

• この時点で混乱すると次が意味不明になる

• 次は関数型っぽいことをやってく予定です