濃縮還元オレンジニュース

並行実行を制御できない言語は実システムには向かない

国立情報学研究所(NII)の佐藤一郎先生の日記から抜粋したものです。元ページにはパーマリンクがなく、2010年2月26日~28日の日記に該当します。

昨今の計算機のマルチコア化に伴い、並行処理について注目が集まってきています。そしてここ数年でErlangやScalaといったプログラミング言語が話題になり、並行処理を実現するために採用しているActorモデルについて、佐藤先生は「リバイバルを見るような感じ」と感想を述べています。そもそもActorモデル自体は1970年代に登場したもので、1990年前後に並行処理用オブジェクト指向言語の研究が盛んに行われていたそうです。また学生時代にErlangに触れたことがあったことから、これらについて「新しいプログラミング言語というよりも、昔のプログラミング言語で書いているという感覚」を受けるようです。

そしてActorモデルのようなシングルスレッド実行モデルは記述が容易である反面パフォーマンスが出ないため、結局は性能がより出るマルチスレッド実行モデルがもてはやされるのではないか、と評しています。また、並列Lispを含む並列関数型プログラミング言語についても、スレッド数が増えていくに従ってコンテキストスイッチのコストが大きくなるため、並行実行を制御できない言語は実システムに向かなく「マルチコア時代は関数型言語の時代」と言われているがそうでもない、と釘をさしています。

Javaの並列記述についても言及していて、スレッドをオブジェクトとして扱うことは評価していますが、synchronizedにより同期制御を言語として定義してしまったことには「非機能要件をクラス定義に埋め込まないほうがよかった」と良くない評価を下しています。

URLhttp://d.hatena.ne.jp/kazunori_279/20100301/1267405275

おすすめ記事

記事・ニュース一覧