お店のコメント(スペック情報を含む場合もあり)
出版社/著者からの内容紹介
プログラミング言語「Erlang」のバイブルを翻訳。
Erlang(アーラン)とは、近年再評価されて注目を集めている関数型プログラミング言語です。
本書は、並行プログラミングに有効な言語として急速に一般にも認知され始めたErlangのバイブル的な解説書を翻訳するもの。
原著者はErlangの初期の頃からの開発者の一人。
著者からのコメント
Joeより 我々が暮らすこの世界は並列に動いている。
実世界に存在する他のものと同じように振る舞うプログラムを書きたかったら、プログラムも並行構造になることだろう。
並行アプリケーションを書くために設計された言語を使えば開発はすごく簡単になる。
Erlang のプログラムがモデル化しているのは、我々が考えたりコミュニケーションする様なのだ。
Joe Armstrong 訳者序文
本書を手に取ったあなたがプログラミングをゼロから学ぼうという人ならば、非常に幸運だ。
なぜなら、現在主流のC++ やJava といった言語の概念にとらわれることなく、シンプルでありながら強力なプログラミング言語を学べるからだ。
あなたがプログラミングの経験者でも同様に幸運だ。
なぜなら、これまでのプログラミングの経験に加えて、Erlang というすばらしい道具を活用できるようになるからだ。
さて、近年のWeb をベースとしたシステムの発展は、これまで通信機器など高可用性を重視する用途以外ではあまり知られていなかったErlang に新たな注目を浴びせることになった。
Webは基本的に開かれたシステムであるため、比較的簡単にサービスを構築して公開することができる反面、大量のアクセスをさばかなければならない状況も起きやすい。
いわゆるC10K 問題である。
10K = 10000 個のクライアントからのアクセスをいかにして切り回すかはいまや多くのエンジニアの頭を悩ます問題となっている。
C10K 問題は20 世紀の間に提起されていたのだから、それからさらにWeb が発展した現在ではどのような状況であるかは推して知るべしである。
前述のC10K のサイトを見てもわかるように、その解決策はマルチスレッドプログラミングを駆使した煩雑なものが多い。
これでは本来提供したいサービスのことを考えるための余裕がなくなってしまう。
また、オペレーティングシステムが提供するスレッド環境はコストが高いものが多く、クライアント1 つにスレッドを1 つ割り当てるような贅沢な使い方ではとても10000 個のクライアントをさばくことなどできない。
Erlang ならばそんな贅沢もまったく問題ない。
余計なことを考えずにサービスを作ることに集中できるのだ。
また、処理能力を増やすためのハードウェア側からのアプローチとしては、従来は駆動クロックの高速化が一般的であった。
しかし、主に熱の問題から現在の半導体の駆動クロックは数GHz で頭打ちになると考えられているため、その代わりに処理装置を増やす方向、つまりマルチプロセッサ化やマルチコア化に拍車がかかっている。
ここ数年でマルチプロセッサやマルチコアのマシンは個人でも手に入れられるようになってきたが、その上で動作するソフトウェアの方はまだまだハードウェアを生かしきれていないのが実情だ。
では、どうすれば並列ハードウェアを生かしたソフトウェアを作ることができるのだろうか? 一般には、pthread などに代表されるいわゆるマルチスレッドプログラミングのためのライブラリやフレームワークを使うことが多いだろう。
しかし、競合条件を正しく見極めて排他制御を正しく適用するのはなかなか難しく、熟練したプログラマでさえも間違いを犯しがちだ。
実際、訳者もマルチコアマシン用のオペレーティングシステムを開発しているが、それでも自分自身がその手の同期バグを仕込んでしまうことがあるし、もっと注意深い人々でもミスは皆無ではない。
人間は誰でもちょっとした間違いをしてしまうものだから、ここはコンピュータの方でなんとかすべきところだ。
残念ながら、C やC++、Java、それにPerl やRuby、Scheme などの言語には、そのような間違いをしないような仕組みは備わっていない。
後付けの仕組みや実験的な取り組みはあるが、実用的ではなかったり、実績に乏しい。
その点、Erlang はもともと並列処理を念頭に置いて設計されているから、変数の排他制御の問題などは本質的に存在しない。
それはErlang が関数型プログラミング言語の特徴をうまく生かしているからだ。
関数型プログラミングというと身構えてしまう人もいるかもしれないが、実はそんなに難しくない。
それどころか、プログラムは命令型プログラミング言語で書かれたものよりもずっとわかりやすい。
実のところ、Erlang は関数型プログラミング言語の中でも文法がとっつきやすく、関数型プログラミングの入門にも適している。
ところで、並列指向プログラミングはErlang の最も大きな特徴だが、実はErlang の強みはそれ以外にもある。
「関数型」でしかも「並列指向」と来れば、研究室を出たことのない、実績に乏しいプログラミング言語であるかのような印象を抱く人もいるかもしれない。
しかし、Erlang には20 年を超える歴史があり、高度な信頼性が要求される通信機器の分野でも実績がある。
そのような実績はもちろんErlang の基本設計の見通しの良さによるところも大きいが、忘れてはならないのはOTP というフレームワークの存在である。
詳しくは本書の後半の解説に譲るが、OTP は信頼性の高いシステムを作るためのノウハウがつまっている。
大規模なシステムを構築し、長年にわたって更新しつつ運用していくためのいわばデザインパターンと言える。
また、本書で取り上げているのはOTP のごく一部でしかなく、そのほかにも実際のシステム構築において培われた興味深い機能があるので、本書の次のステップとして覗いてみるのもよいのではないだろうか。
Erlang は歴史のある言語だが、今現在も進化を続けている。
本書はErlang OTP R11B5 というリリースを元にしているが、本書発行の時点で既に次のR12B0 というリリースが出ている。
今回のリリースは以前のリリースとの互換性を保っているので、本書で解説していることはそのまま通用するはずである。
ただし、R12B0 ではエラーメッセージがわかりやすいように変更されているため、エラーメッセージについてはかなり異なる部分がある。
なお、本書の翻訳にあたって、誤解を生じない範囲であえて用語の統一を図らなかった部分がある。
原著でも読みやすさを優先して1 つの概念をいくつかの言葉で言い換えており、翻訳でもその方針に従っている。
特に、並列(parallel)と並行(concurrent)は厳密にはそれぞれ異なる概念を指す言葉であるが、原著同様統一していない点に注意されたい。
最後に、多忙な中で本書をレビューし、有益なコメントをくださった平岡和幸、檜山正幸、堀玄、向井淳の各氏にこの場を借りてお礼を述べさせていただきます。
また、オーム社開発局の方々にも各面でのサポートをいただき、感謝しております。
その他、ここで逐一お名前を挙げることはできませんが、さまざまな方からのご協力の下に本書を作ることができました。
ありがとうございました。
2008年2月
榊原一矢
商品の説明をすべて表示する
商品ジャンル
本 ≫ コンピュータ・IT ≫ プログラミング
商品名
最終調査日時
2017/06/17 (Sat) 03:58:19
価格の変動(直近3回 : ¥0は未調査回)
取得日時
販売価格
ポイント
実質価格
在庫状態
2017/06/17 (Sat) 03:58:19
¥4,752
0 %
¥4,752
2010/01/28 (Thu) 02:21:03
¥4,620
0 %
¥4,620
2009/08/31 (Mon) 01:16:27
¥4,620
1 %
¥4,574
サイト内キーワード検索
商品名の検索は通常の商品検索ボックスで。
コメントやスペックなどから検索したい場合はこちらから。
コメントやスペックなどから検索したい場合はこちらから。
広告