Skip to content

Instantly share code, notes, and snippets.

@fujimisakari
Last active April 18, 2017 16:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fujimisakari/ec8950e52919d2672662986488d4b934 to your computer and use it in GitHub Desktop.
Save fujimisakari/ec8950e52919d2672662986488d4b934 to your computer and use it in GitHub Desktop.

Erlangプログラミングについて

Erlangプログラミングを読みながら特徴を随時更新していく感じ

Erlangの特徴

  • 関数型プログラミング言語の中でも文法がとっつきやすい
  • 20年を越える歴史がある
  • 高度な信頼性が要求される通信機器の分野でも実績がある
  • OTPのフレームワーク
  • マルチコアコンピュータでより高速にプログラムを実行できる
  • 複雑な並列プログラミングを簡単に書ける

並列指向のプログラミング

Erlangのプログラムは人間の思考と対話をモデル化している

  • 人間
    • 相手と脳の記憶を共有することはできない
    • 相手に記憶を共有するには話しかけメッセージを送る
    • 相手はそれを聞き記憶を変化させる
    • 相手への話しかけから返答がなければ受け取ってくれたかはわからない
  • Erlangプロセス
    • 共有メモリはないく、各プロセスが専用のメモリを持っている
    • 別プロセスのメモリを変えるには、そのプロセスにメッセージを送る
    • 別プロセスがメッセージを受け取ってメモリ変更してくれたかはそのプロセスに問い合わせ or 返答がなければわからない

プロセスの特徴

  • 数十、数千、数十万の小さなプロセスを独立して動作できる
  • プロセスの生成と破棄は非常に高速
  • プロセス同士はメモリを共有せず、完全に独立している
  • メモリ共有がないので、使用中にロックする必要はない
  • プロセス同士が対話する唯一の方法はメッセージのやり取り(メッセージパッシング)
  • プロセス同士のメッセージ送信は非常に高速
  • どのオペレーティングシステムの上でもプロセスは同じように動作する
  • プロセス同士をリンクさせると、一方が死ぬとその理由をもう一方へ送信される
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment