Submit Search
Upload
ゆとり向けErlang入門 (1): メッセージパッシングことはじめ
•
8 likes
•
4,000 views
S
sleepy_yoshi
Follow
ゆとり向けErlang入門.メッセージパッシングに関する資料.
Read less
Read more
Technology
News & Politics
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 44
Download now
Download to read offline
Recommended
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
Masanori Kado
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
諒介 荒木
優れた研究論文の書き方
優れた研究論文の書き方
Masanori Kado
論文の書き方・読み方
論文の書き方・読み方
Satoshi Miura
優れた研究提案書の書き方
優れた研究提案書の書き方
Masanori Kado
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
Lintaro Ina
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
Recommended
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
Masanori Kado
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
諒介 荒木
優れた研究論文の書き方
優れた研究論文の書き方
Masanori Kado
論文の書き方・読み方
論文の書き方・読み方
Satoshi Miura
優れた研究提案書の書き方
優れた研究提案書の書き方
Masanori Kado
論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
Lintaro Ina
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
Yoichi Ochiai
TRICK 2022 Results
TRICK 2022 Results
mametter
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
論文の書き方入門 2017
論文の書き方入門 2017
Hironori Washizaki
全探索
全探索
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
T. Suwa
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
SQiP2015-研究のデザイン入門
SQiP2015-研究のデザイン入門
Hironori Washizaki
ぷよぷよAIの新しい探索法
ぷよぷよAIの新しい探索法
Takaya Doki
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
研究法(Claimとは)
研究法(Claimとは)
Jun Rekimoto
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
グラフデータの機械学習における特徴表現の設計と学習
グラフデータの機械学習における特徴表現の設計と学習
Ichigaku Takigawa
論文に関する基礎知識2016
論文に関する基礎知識2016
Mai Otsuki
Pythonでキャッシュを活用する話①
Pythonでキャッシュを活用する話①
iPride Co., Ltd.
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
sleepy_yoshi
KDD2013読み会: Direct Optimization of Ranking Measures
KDD2013読み会: Direct Optimization of Ranking Measures
sleepy_yoshi
More Related Content
What's hot
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
Yoichi Ochiai
TRICK 2022 Results
TRICK 2022 Results
mametter
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
論文の書き方入門 2017
論文の書き方入門 2017
Hironori Washizaki
全探索
全探索
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
T. Suwa
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
SQiP2015-研究のデザイン入門
SQiP2015-研究のデザイン入門
Hironori Washizaki
ぷよぷよAIの新しい探索法
ぷよぷよAIの新しい探索法
Takaya Doki
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
研究法(Claimとは)
研究法(Claimとは)
Jun Rekimoto
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
グラフデータの機械学習における特徴表現の設計と学習
グラフデータの機械学習における特徴表現の設計と学習
Ichigaku Takigawa
論文に関する基礎知識2016
論文に関する基礎知識2016
Mai Otsuki
Pythonでキャッシュを活用する話①
Pythonでキャッシュを活用する話①
iPride Co., Ltd.
What's hot
(20)
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
TRICK 2022 Results
TRICK 2022 Results
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
論文の書き方入門 2017
論文の書き方入門 2017
全探索
全探索
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
明日使えないすごいビット演算
明日使えないすごいビット演算
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
静的型つき組版処理システムSATySFi @第61回プログラミング・シンポジウム
メタプログラミングって何だろう
メタプログラミングって何だろう
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
SQiP2015-研究のデザイン入門
SQiP2015-研究のデザイン入門
ぷよぷよAIの新しい探索法
ぷよぷよAIの新しい探索法
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
研究法(Claimとは)
研究法(Claimとは)
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
グラフデータの機械学習における特徴表現の設計と学習
グラフデータの機械学習における特徴表現の設計と学習
論文に関する基礎知識2016
論文に関する基礎知識2016
Pythonでキャッシュを活用する話①
Pythonでキャッシュを活用する話①
More from sleepy_yoshi
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
sleepy_yoshi
KDD2013読み会: Direct Optimization of Ranking Measures
KDD2013読み会: Direct Optimization of Ranking Measures
sleepy_yoshi
PRML復々習レーン#15 前回までのあらすじ
PRML復々習レーン#15 前回までのあらすじ
sleepy_yoshi
PRML復々習レーン#14 前回までのあらすじ
PRML復々習レーン#14 前回までのあらすじ
sleepy_yoshi
PRML復々習レーン#13 前回までのあらすじ
PRML復々習レーン#13 前回までのあらすじ
sleepy_yoshi
PRML復々習レーン#12 前回までのあらすじ
PRML復々習レーン#12 前回までのあらすじ
sleepy_yoshi
ICML2013読み会: Distributed training of Large-scale Logistic models
ICML2013読み会: Distributed training of Large-scale Logistic models
sleepy_yoshi
SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
sleepy_yoshi
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
sleepy_yoshi
PRML復々習レーン#11 前回までのあらすじ
PRML復々習レーン#11 前回までのあらすじ
sleepy_yoshi
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
sleepy_yoshi
PRML復々習レーン#10 前回までのあらすじ
PRML復々習レーン#10 前回までのあらすじ
sleepy_yoshi
PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5
sleepy_yoshi
PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1
sleepy_yoshi
PRML復々習レーン#9 前回までのあらすじ
PRML復々習レーン#9 前回までのあらすじ
sleepy_yoshi
PRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじ
sleepy_yoshi
SIGIR2012勉強会 23 Learning to Rank
SIGIR2012勉強会 23 Learning to Rank
sleepy_yoshi
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
sleepy_yoshi
ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...
ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...
sleepy_yoshi
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5
sleepy_yoshi
More from sleepy_yoshi
(20)
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2014勉強会: Large-Scale High-Precision Topic Modeling on Twitter
KDD2013読み会: Direct Optimization of Ranking Measures
KDD2013読み会: Direct Optimization of Ranking Measures
PRML復々習レーン#15 前回までのあらすじ
PRML復々習レーン#15 前回までのあらすじ
PRML復々習レーン#14 前回までのあらすじ
PRML復々習レーン#14 前回までのあらすじ
PRML復々習レーン#13 前回までのあらすじ
PRML復々習レーン#13 前回までのあらすじ
PRML復々習レーン#12 前回までのあらすじ
PRML復々習レーン#12 前回までのあらすじ
ICML2013読み会: Distributed training of Large-scale Logistic models
ICML2013読み会: Distributed training of Large-scale Logistic models
SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
SEXI2013読み会: Adult Query Classification for Web Search and Recommendation
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
PRML復々習レーン#11 前回までのあらすじ
PRML復々習レーン#11 前回までのあらすじ
SMO徹底入門 - SVMをちゃんと実装する
SMO徹底入門 - SVMをちゃんと実装する
PRML復々習レーン#10 前回までのあらすじ
PRML復々習レーン#10 前回までのあらすじ
PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#10 7.1.3-7.1.5
PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 6.3-6.3.1
PRML復々習レーン#9 前回までのあらすじ
PRML復々習レーン#9 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじ
PRML復々習レーン#7 前回までのあらすじ
SIGIR2012勉強会 23 Learning to Rank
SIGIR2012勉強会 23 Learning to Rank
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
DSIRNLP#3 LT: 辞書挟み込み型転置インデクスFIg4.5
ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...
ICML2012読み会 Scaling Up Coordinate Descent Algorithms for Large L1 regularizat...
PRML復々習レーン#3 3.1.3-3.1.5
PRML復々習レーン#3 3.1.3-3.1.5
Recently uploaded
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Recently uploaded
(7)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
ゆとり向けErlang入門 (1): メッセージパッシングことはじめ
1.
ゆとり向けErlang入門 (1): メッセージパッシングことはじめ
2010-03-02 id:sleepy_yoshi (SUHARA YOSHIHIKO)
2.
なんぞこれ? • ゆとり向けErlang入門 –
今回はメッセージパッシングの解説 • 対象読者 – 基本的なErlang が 可能であること – ゆとりという自覚があること – 5分間の学習時間に耐える覚悟があること STOP! 上記に当てはまらない方は ここで読むのをおやめください 1
3.
10秒で学ぶ メッセージパッシング
2
4.
Erlangではたくさんの プロセスが
に く 3
5.
各プロセスは 自分のポストを持つ
4
6.
プロセス間の通信は メッセージで われる プロセス間のメッセージ = 手紙
5
7.
すなわち
6
8.
プロセス間の通信は 手紙の送受信で われる
ある ある プロセス プロセス 7
9.
10秒で学ぶ メッセージパッシング
(終) 8
10.
(一言でいうと) メッセージパッシング
は だ! 9
11.
メッセージパッシングの れ
(2) ポスト (1) 手紙を に入る 発送 hello Pid1 Pid2 receive Pid2 ! hello. (3) 開封する Msg -> Msg end. 10
12.
Erlangシェルで確認 (1/2) • シェルのプロセスIDを知る:
self() • プロセスIDの指定方法: pid(x,x,x) – 自分に送信するのでself()でも い • メッセージを送信: <pid> ! <message> > self(). pid(0,31,0) ! hello <0.31.0> の値であり, > pid(0,31,0) ! hoge. 受信メッセージ ではないことに注意 hoge > pid(0,31,0) ! fuga. fuga > pid(0,31,0) ! piyo. piyo 11
13.
Erlangシェルで確認 (2/2) • メッセージの確認
– (1) receiveを使う – (2) flush()でダンプ > receive Msg -> Msg end. hoge > flush(). Shell got fuga Shell got piyo ok > 12
14.
イメージ図1: 手紙の送信 • 自分自身
(シェルプロセス) へ手紙を3通送信 シェル piyo piyo プロセス fuga fuga hoge hoge 13
15.
イメージ図2: 手紙の開封
last (2) flush()でダンプ piyo piyo シェルプロセス fuga fuga (1) receive文で一通開封 > receive hoge hoge Msg -> Msg end. first hoge 14
16.
自分 (シェル) 以外にも メッセージを送りたい!
15
17.
でもプロセスの作り方が わからない...
16
18.
そこで!
17
19.
5秒で学ぶ プロセスの作り方
18
20.
プロセスID
を返す spawn(モジュール名, 関数名, [引数,...]) 19
21.
spawn
20
22.
5秒で学ぶ プロセスの作り方
(終) 21
23.
プロセスの作り方 • spawn(モジュール名, 関数名,
[引数,...]) ソースコード Erlangシェル -module(yutori). 1> Pid = spawn(yutori, -compile(export_all). loop,[]). <0,38,0> loop () -> 2> Pid ! hello. receive olleh Msg -> olleh, 3> loop() end. 22
24.
プロセスの確認方法 • i() で生成したプロセスを確認できる
(先ほどの続き) 3> i(). ... <0.38.0> yutori:loop/0 233 3 0 yutori:loop/0 0 ... 23
25.
解説: loop() • 末尾再帰によってreceive文を
も -module(yutori). -compile(export_all). メッセージの開封後 loop () -> 再びloop()開始 receive Msg -> olleh, loop() end. 24
26.
解説: シェルプロセス • spawnによってプロセス生成
– PidにプロセスID保持 • 生成したプロセスにメッセージ送信 • プロセスからの返り値を受け取る 1> Pid = spawn(yutori,loop,[]). <0,38,0> 2> Pid ! hello. olleh 3> 25
27.
プロセスの生成はspawn
26
28.
プロセスの生成
(終) 27
29.
メッセージパッシングに
戻ります 28
30.
receive文の 基本ルール
29
31.
先に到着した手紙からチェック (1/3)
last piyo piyo > receive fuga fuga Msg -> Msg end. hoge hoge first hoge 30
32.
先に到着した手紙からチェック (2/3)
last piyo piyo > receive fuga fuga Msg -> Msg end. first fuga 31
33.
先に到着した手紙からチェック (3/3)
last piyo piyo > receive Msg -> Msg end. first piyo 32
34.
receive文が パターンマッチに 失敗する場合
33
35.
マッチする手紙がある場合 • マッチする手紙まで飛ばす
last piyo piyo > receive fuga -> aguf end. fuga fuga hoge hoge first aguf 34
36.
マッチする手紙がない場合 • マッチする手紙が無い場合待ち続ける
last piyo > receive piyo fuga -> agug end. hoge hoge first 永遠に待ち続けないためのタイムアウト設定 ⇒ afterキーワード 35
37.
手紙の返事を返したい!
36
38.
返事を書くためには?
返信先 (Pid1) の • 返信先を知る必要がある ことを知ってい る必要がある Pid1 Pid2 (方法1) あらかじめPid1のことを知っておく (方法2) 手紙に返信先を書いてもらう 37
39.
(方法1) あらかじめ返信先を知る • こんな感じで関数への引数として保持しておく
loop(From)-> receive Msg -> From ! olleh, loop(From) end. • spawnする際に引数で返信先を与える – : spawn(yutori,loop,[self()]). 返信先が 定されている場合に 38
40.
(方法2) 手紙に返信先を書いてもらう • メッセージに自プロセスIDを記述
– : Pid2 ! {self(), hello}. loop()-> receive {From,Msg} -> From ! olleh, loop() end. こんな感じで受け取る プロセス毎に返信可能 39
41.
まとめ
40
42.
学んだこと • メッセージの送信方法: ! •
メッセージの開封方法: receive – パターンマッチによる開封順序の違い • プロセスの作り方: spawn – 末尾再帰によるメッセージ待機 – メッセージの返信方法 • Erlangシェルの使い方 – pid(), flush(), i() 41
43.
習 • プログラミングErlang8
プログラミング この の1,000倍ためになります 42
44.
おしまい
43
Download now