Erlang

711 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
711
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

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

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

    ×