Developerサイトに移行します。見た目やトピックエリアなど更新されますが、開発者に必要とされるコンテンツを引き続き提供していきます。プログラミング入門https://www.ibm.com/developerworks/jp/views/global/libraryview.jsp?series_title_by=erlang+プログラミング入門このシリーズの続きに乞うご期待。プログラミング入門このシリーズの続きに乞うご期待。並行プログラミング従来の関数型プログラミング言語でのプログラミングで常に必要とされてきたのは、複数のプログラムを同時に実行するのではなく、単一のプログラム内で複数のプロセスを同時に実行する機能を実装するように方法を変えることです。伴う問題は、情報を更新するために使用するスレッドが、現在処理中のデータと情報だけに作用することを確実にしなければならないという点です。つのファイルを更新するプロセスが、そのファイルに対して何度も実行されるのは望ましくありません。なると、プロセスを繰り返す過程でファイルが壊れてしまう危険があるからです。データを共有しません。データを共有する代わりに、メッセージを使用してコンポーネント間でデータを交換します。メッセージを使用して、個々のコンポーネントによるデータの変更を制限すれば、データの同時変更に関する問題の解消につながります。データを直接変更するのではなく、データを変更するにはメッセージを送信するようにすることで、個々の変更を切り分け、同時更新をより困難にするというわけです。よるシステムはエラーに対処し、必要な場合にはエラーからリカバリーできるようになっています。内部では、並行性の問題に対処するために、プロセスと呼ばれる小さくて軽量の実行可能プログラムを作成します。仮想マシンによって内部で作成されて管理されます。スレッドよりも遥かに軽量になります。これらの多数の小さなプロセスを自動的に作成して使用することによって動作するため、比較的単純なプログラムであっても、何千あるいは何百万ものプロセスを実行するのが通常です。動作する仕組みにおいて、この莫大な数のプロセスを管理することが重要な部分となってきます。プロセス間でデータを送信するためのメッセージング・システムも組み込まれています。このメッセージング・システムは、現在実行中のプロセスの数によらず、極めて効率的な方法でメッセージをプロセスに分散するように設計されています。メッセージ実装による副次効果は、メッセージを内部で送信できるだけでなく、ネットワーク全体にまで送信できることです。複数のインスタンスでメッセージを共有することによって、複数のマシンを範囲とした分散プログラミングをサポートすることができます。プロセス・システムは極めて軽量であることから、プロセスは至って単純かつ容易に作成することができます。それは、オーバーヘッドがないため、オーバーヘッドに伴う影響を心配する必要がほとんどないからです。これは、アプリケーションを支援するためならば、どのような理由であっても新しいプロセスを作成できることを意味します。関数に渡す引数のリストです。