ブログ

たけまる / talk


2008-12-11 Thu

_ Erlang Keynote - Armstrong on Software - Erlang & SMP [erlang][talk]

日本の Erlang な人たちで,ヨーロッパで行われた Erlang Conference の
発表をいくつか紹介したら面白いかなと思ったので,やってみます.

手始めということで,Erlang eXchange で行われた Joe
Armstrong さんのキーノートスピーチを紹介します.

Joe Armstrong, "Erlang Keynote: Armstrong on Software: Erlang &
SMP," Erlang eXchange 2008, June, 2008.

pdf
video

このスピーチでは,Erlang が注目されている理由を簡潔に紹介しています.
ややひいき目な感じもしますが,現在のコンピュータ環境で Erlang が選
ばれる理由は十分に説明されていると思います.

では,内容をかいつまんで紹介します.

発表者の Joe さんは,Erlang の生みの親であり,『プログラミング
Erlang』の著者でもあります.この本には,"Softwre for Concurrent
World" というサブタイトルが付けられています.このことからもわかるよ
うに,Joe さんは並行性 (concurrency) を重要な特徴と考えているようで
す.

Erlang とマルチコアプロセッサが同じ時期に注目され始めたのは,偶然で
はありません.Joe さんの言葉を借りると,「プロセッサのコアが増える
につれ,並行プログラムは速くなるが,逐次的なプログラムは (相対的に)
遅くなる」ためです.理想的には,Erlang を使うと,コアが N あれば N
倍速くなります.

障害耐性 (fault tolerance) においても,並行性などの Erlang の特徴が
有利に働きます.障害耐性を確保するためには,複数のコンピュータから
なる分散システムであることが必要です.これらを,message passing に
よる並行プログラムで動作させます.信頼性を高めるには,コンピュータ
は多いほどよいです.ということは,スケーラブルでなければなりません.

結局のところ,障害耐性,分散,並行性,スケーラビリティは切り離せな
い問題です.Erlang にはこれらが備わっています.

並行プログラムには,大きく二つのアプローチがあります.ひとつは,プ
ロセス間に共有メモリを用意する方法です.しかし,あるプロセスが誤っ
たデータを書き込むと,他のプロセスがクラッシュするかもしれません.
また,共有メモリの配置や伝送遅延,lock の問題もあります.

データの共有をやめて message passing を採用することで,これらの問題
を解決できます.MapReduce もそうですし,なにより人間は message
passing でコミュニケーションしています.副作用のない関数型言語こそ,
このパラダイムの実現に適しています.もちろん,Erlang は関数型言語
です.

最後に,コード例や,マルチコアプロセッサでの性能グラフが紹介されて
います.また,テレコムを中心とした利用例も示されています.

Referrer (Inside): [2008-12-12-1]