プログラミングErlang7章を読んで。プログラミングErlang7章を読んで。並行処理とアクターモデルについて考えてみた2019-12-07プログラミングErlang7章を読んで。本読んだぞ並行処理について人間なら誰でも並行処理を理解している。Erlangのプログラミングは人間の思考と対話をモデル化している。人間はそれぞれメッセージを送ることによって通信し合う独立した存在として動く。誰かが死ねば、他の誰かが気づいてくれる。ArmstrongプログラミングErlangより引用1つのコンピューターで出来ることには限りがある。高度な処理をしたいと思った時には並行処理や並列処理を行う必要がある。並行?なにそれ、めちゃくちゃ難しそう...と感じてしまうが、プログラミングErlangを読む限り、そう焦る必要はないらしい実際に我々、人間が日々、暮らしているこの世界でも並行処理が行われているたとえば、誰かと話をしている時。自分が友人に昨日の愉快な出来事を語る。その話を友人は相槌を打ちながら聞いてくれる。この何気ない日常のやりとりでさえも並行に処理が行われていることに気づく自分が話をするという動作をするのと同時に相手は話を聞いて相槌を打つという動作を行なっている。これを創造主の視点から見てみると、あたかも二人が同時に、すなわち並行に処理をしているように見える。我々人間が1つのプロセスという単位で動いていると見なすことが出来るこれが人間の日常生活は並行処理に溢れているという一例だ並行処理と並列処理の違い以下のブログにて詳細に解説がされていた。自身の言葉で並行と並列について違いをまとめておこうyohei-a.hatenablog.jp違いを説明するのに5人の人間に命令を出すというケースを例にしてみる。5人の人間に高速で順次、あたかも同時に見えるような速度で命令を順次出していくような処理を並行処理。5人の人間に本当に同時に命令を出すような処理を並列処理と考えるさらに砕いた例で説明をすると、1つの脳みそで順次、5人の話を同時に聞く聖徳太子と5つの脳みそで同時に5人の話を聞く宇宙人をイメージしてもらえれば分かりやすいのではないだろうかErlangにおける並行処理の方法のちに解説をするがErlangでは並行処理のためにプロセスが採用されており、互いの内部状態はメッセージを送り合うことで更新する。このようなモデルをアクターモデルと呼ぶまた、プロセスとは別に共有メモリを使用するスレッドという処理単位を用いて並行処理を行うものもある。知っているもので例をあげればgolangのgoroutineはスレッドを用いて処理を行うただ、どのようにしてアクターモデルという思想が精査され出来上がったのかが気になったので、調べてみたアクターモデルすでに既出でアクターモデルについて解説している優良な記事が多いので詳しい話はそちらに任せて、ざっくりと概要と説明が出来るレベルに内容をまとめておこうアクターモデルにおいて、全てのものはアクターである。これはオブジェクト思考における、全てのものはオブジェクトであるという考え方と非常に似ている。そのため、アクターモデルは並行指向オブジェクトプログラミングとも言われるようだアクター同士はメッセージを送り合う事が可能であり、逆に言えばやり取りの方法はメッセージを送り合う事のみに限定されている。互いのアクター同士でメッセージを送る事が可能なのかというと、それぞれのアクターはメールボックスとアドレス(言うなればメールアドレス)を持っており、自分宛に受け取ったメッセージをメールボックスにスタックするこのメッセージを順次処理していくことになる。受け取ったメッセージをトリガーにして、様々な処理を行えばアクターモデルプログラミングが可能になるまたアクター自身は別のアクターを生成することが出来る理論や歴史はwikipediaなどに情報が転がっているのでそちらを参照してほしいja.wikipedia.org感想このような概念が1970年代に、近未来に起こりうるであろう、分散コンピューティング、並行処理を予測して形作られてきていたということに驚きを隠せない。一度は1990年代に衰退したアクターモデルが現代になって複雑になりすぎたデータを処理するため、再び注目されていると...。熱い...それにしても、このプログラミングErlangが面白い。16:49プログラミングErlang7章を読んで。ヶ月)22歳の新卒エンジニアです。elixirという言語に惹かれています。人より少し自転車を漕ぐのが速めです。無駄なことを覚えるのが得意です。(2)月別アーカイブ広告はてなブログをはじめよう!takamizawa46さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。