SlideShare une entreprise Scribd logo
1  sur  17
関数型言語の再入門
プログラミング Erlang
@cev_cs
本間皇成
前準備
Erlang プログラミングをやってみたい方
http://www.erlang.org/download.html
その後環境変数でbinのパス
OR
apt-get install erlang
本日の予定
• Erlang 概要
• 関数型プログラミング
Erlang との出会い
Maz 氏の日記より
“ 次にくるトレンドは「並列」と「関数型」
両方を押さえた Erlang が本命 ”
ちょっと調べてみると・・
Twitter の内部にも Erlang が使われている!
既に実用化されている点からも、
勉強会でちょっと触ってみたい!
Erlang との出会い
Erlang の何がすごいのか?
並列処理の機能を念頭に置いて
設計されている!
並列処理の重要性
• 処理能力の向上
• 対障害アプリケーション
• スケーラビリティ
Erlang の並列処理
Erlang にはロックや同期メソッドがない!
↓
わずらわしい排他制御を考えなくてすむ
スレッド1 スレッド2
共有メモリ
5
1足して!
3足して!
6 8
6!? 8!?
ロックして共有メモリを変更できないようにしなきゃ・・
本来考えるべきこと
Erlang なら
こんなこと考える必要がない!
↓
関数型言語の特徴を
うまく利用しているため
ですが、今回は並列・分散プログラミングは扱いません。
関数型プログラミングとしての Erlang の説明です。
関数型言語
私たちの学科では Prolog を勉強しました
その他 Lisp , Schema , Haskell , F# , Scala
利点?
http://www.sampou.org/haskell/article/whyfp.html
関数型プログラミング
変数の違い
単一代入変数であることに注意!
大文字から始める
=はパターン照合処理
アトム
• 小文字から始まる
• アトムの値はアトムそのもの
タプル
• 各変数を1つにまとめたい時に使用
• C の構造体と目的は同じだが、型宣言は無し
P = { point , 45 , 30 }. % 代入
{ point , X , _ } = P. % 評価 _は無名変数
X . % -> 45
リスト
入れるものの個数が決まってない場合に使用
[ 1, 2, 3, 4, 5, 6 ]
[ H | T ] で表現
[ H | T ] = L
リストのヘッドを H に取り出し、
テイルを T に取り出す
ヘッド テール
確認!
• 次の式は成り立つでしょうか?
{ 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]
まとめ
• 関数型は知っておいて損はない
– この言語の素晴らしさに関して時間を割きました
• この時点で混乱すると次が意味不明になる
• 次は関数型っぽいことをやってく予定です

Contenu connexe

Plus de Kiminari Homma

Agu itr 20100901_communication
Agu itr 20100901_communicationAgu itr 20100901_communication
Agu itr 20100901_communication
Kiminari Homma
 

Plus de Kiminari Homma (18)

Smart Communication Award 2016 モバイル電話サポートSDK
Smart Communication Award 2016 モバイル電話サポートSDKSmart Communication Award 2016 モバイル電話サポートSDK
Smart Communication Award 2016 モバイル電話サポートSDK
 
コールセンターを知る
コールセンターを知るコールセンターを知る
コールセンターを知る
 
IPメッセージング勉強会「WebのリアルタイムとIPメッセージング」
IPメッセージング勉強会「WebのリアルタイムとIPメッセージング」IPメッセージング勉強会「WebのリアルタイムとIPメッセージング」
IPメッセージング勉強会「WebのリアルタイムとIPメッセージング」
 
私の考える Startup Geeks
私の考える Startup Geeks私の考える Startup Geeks
私の考える Startup Geeks
 
Twilio serveless architecture
Twilio serveless architectureTwilio serveless architecture
Twilio serveless architecture
 
スタートアップが AWS Lambda を導入した理由
スタートアップが AWS Lambda を導入した理由スタートアップが AWS Lambda を導入した理由
スタートアップが AWS Lambda を導入した理由
 
電話とは何か、そして Twilio の正体
電話とは何か、そして Twilio の正体電話とは何か、そして Twilio の正体
電話とは何か、そして Twilio の正体
 
Swift afterbeginner
Swift afterbeginnerSwift afterbeginner
Swift afterbeginner
 
Swift afterbeginner
Swift afterbeginnerSwift afterbeginner
Swift afterbeginner
 
Call cloud
Call cloudCall cloud
Call cloud
 
Agu itr 20100901_communication
Agu itr 20100901_communicationAgu itr 20100901_communication
Agu itr 20100901_communication
 
Rfid
RfidRfid
Rfid
 
Java script4
Java script4Java script4
Java script4
 
Java Script4
Java Script4Java Script4
Java Script4
 
Javascript3
Javascript3Javascript3
Javascript3
 
Jsonp
JsonpJsonp
Jsonp
 
可読性
可読性可読性
可読性
 
Java script1
Java script1Java script1
Java script1
 

Dernier

Dernier (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Erlang

Notes de l'éditeur

  1. 一方のスレッドがリソースの状態を変更したせいで、他方のスレッドで処理結果がおかしくなってしまう
  2. 変数が単一代入変数である点などから
  3. 基本的にはアトムを用いる 興味の無い変数は無名関数として_で表現する。