Rabbit Slide Show

蛇とビーム

2015-09-12

Description

ErlangVM for Pythonista

Text

Page: 1

蛇とビーム

Page: 2

ヽ(´・⾁・`)ノ
にくです
農業とITをつなぐベンチャーで
働いています
コンサドーレ札幌が好きです

Page: 3

発表の目的
必要なときに   ErlangVM   を思い出
して
選択肢として含められるようにす
ること

Page: 4

サッポロビームの⽅から
                              
ErlangVMに載っている⾔語に関す
る話題やそうでない話題でわいわ
いやる集まりです.
だいたい毎週⽊曜⽇にやっていま
す.
このまえ   80   回目でした

Page: 5

ビーム(Beam)
                                                              
        はBogdan/Björnさんの
Erlang抽象マシン(Bogdan/
Björnʼs   Erlang   Abstract  
Machine)を表しています。この
名前はVM自⾝の名前です。

Page: 6

ErlangVM
そもそもは   Erlang   という⾔語のた
めに作られ,育てられた   VM

Page: 7

Erlang
そもそもは   ERICSSON   という会
社で作られた⾔語

Page: 8

ERICSSON
スウェーデンにある通信機器メー
カー

Page: 9

通信機器ソフトに求められる
処理を並⾏してたくさん⾏う
障害をのりきって動く
バージョンアップ中にも動く
それなりに速く動作する

Page: 10

ErlangVM   もまた
処理を並⾏してたくさん⾏う
障害をのりきって動く
バージョンアップ中にも動く
それなりに速く動作する

Page: 11

⽇本だと
                                                    
ドワンゴさんのニコニコ⽣放送は  
Erlang   で運用されているみたい

Page: 12

(`・⾁・)<よさそう
フフ,そうでしょうとも.

Page: 13

(´・⾁・)<知らないなあ
アッ……ハイ
すごくよく話題に登るわけではな
い

Page: 14

出自が異なる
                                                                       
Python   は   C   由来(たぶん?)
Erlang   は   Prolog   由来
C   で⾒慣れた構⽂とは少し違う

Page: 15

Erlang   コードの例
運転免許の例
                 
                       
                                      
         
               
          
慣れると特に困らない(みたい

Page: 16

Elixir   コードの例
                    
                                                      
                             
   
ErlangVM   で使える⾔語   Elixir
速度ペナルティはない
多少みたことある感じ

Page: 17

今回は   Elixir   で説明します
僕が慣れているため
当然   Erlang   でも同じことができ
ます

Page: 18

処理を並⾏してたくさん⾏う
                           
                            
                             
好きな⾔語で実装してみよう

Page: 19

処理を並⾏してたくさん⾏う
                     
                          
                                                     
                                                     
                                                                 
                                                       
                                            
                                                        
                                                          
                                         
                                                       
         
        
     
   

Page: 20

処理を並⾏してたくさん⾏う
                     
                      
                                                     
              
                                
                                      
                               
                                                      
                     
            
                      
           
         
                                  
                               
       
     
   

Page: 21

処理を並⾏してたくさん⾏う
                                                 
実⾏する
                                                            
                                                   
                                                                             
                                                            

Page: 22

処理を並⾏してたくさん⾏う
                          
                       
                      
                      
                      
                       
                       
                
                 
                          
                
                 
                     
                          
                
                 
                          
                
                 
                     
                          
                
                 
                          
                
                 
                     
                          
             

Page: 23

障害をのりきって動く
                              
                
                  
            
好きな⾔語で実装してみよう

Page: 24

障害をのりきって動く
                                                                      
Erlangの⼀般的なポリシーをお教
えします:「クラッシュするなら
させておけ」です。(略)
下にネットが敷いてある綱渡りの
ようなものです。

Page: 25

障害をのりきって動く
Let   it   crash
(クラッシュするならさせておけ)
(`・⾁・)<   信じて作る

Page: 26

障害をのりきって動く
                       
               
             
                                                                                        
                                                         
             
                     
                               
                 
     
                                       
                                    
                         
     
                                  
                              
       
     
   

Page: 27

障害をのりきって動く
                         
                                
         
                   
                          
            
   
                          
            
   
                               
               
   
         
   
                          
                                 
                                                                 
                                                       

Page: 28

障害をのりきって動く
(´・⾁・)<   障害のりきれなかた

Page: 29

障害をのりきって動く
                              
                
                        
                  
            

Page: 30

障害をのりきって動く
                                                                      
Erlangの⼀般的なポリシーをお教
えします:「クラッシュするなら
させておけ」です。(略)
下にネットが敷いてある綱渡りの
ようなものです。
(´・⾁・)<ネット敷いてなかた

Page: 31

障害をのりきって動く
ErlangVM   においてのネット
それは   Supervisor   (監視者)
Worker   が綱から落ちたら再挑戦
させてくれる

Page: 32

障害をのりきって動く
                                  
                
                                                           
                   
                    
                
                             
     
             
                                               
     
   

Page: 33

障害をのりきって動く
                         
                                        
         
                   
                          
            
   
                          
            
   
                               
               
         
   
         
                          
            
   

Page: 34

障害をのりきって動く
                              
                
                  
            
(`・⾁・)<   障害のりきれた!

Page: 35

バージョンアップ中にも動く
                                  
                
好きな⾔語で実装してみよう

Page: 36

バージョンアップ中にも動く
                    
                      
               
          
                                                                           
                                                               
                                                
                     
                          
     
   

Page: 37

バージョンアップ中にも動く
                    
                      
               
          
                                                                           
                                                               
                                                
                      
                          
     
                                       
                                                         
                     
     
   

Page: 38

バージョンアップ中にも動く
                         
                            
                   
                             
 
                             
 
                              
   
                             
                                                        
                                                      
           
                                                      
                              
   
                             
   
                             
  

Page: 39

それなりに速く動作する
Erlang   だとプロセスの分離  
spawn   を多用する
Python   だとだいたい   Thread  
といえるかな……
多用する   spawn   はどのくらい速い
のか

Page: 40

それなりに速く動作する
                
                                                               
                        
                                                                   

Page: 41

それなりに速く動作する
                                 
             
      
    
                                           
                                                                                

Page: 42

それなりに速く動作する
Python   100   万個のスレッドを
作るのに   84.5   秒.
ErlangVM   100   万個のプロセス  
(   スレッドのようなもの   )   を作る
のに   9.13   秒
10   倍くらい速いみたい

Page: 43

それなりに速く動作する
注意:   ErlangVMは普通のCPU処
理は遅いみたいです

Other slides