米Microsoft Corp.は,開催中の「Professional Developers Conference 2009(PDC 2009)」のセッションで,開発中の並列処理記述言語「Axum」を解説した。Axumは.NET Frameworkで動作するプログラムを記述できる。言語仕様は比較的C++やC#に似ている。

 基本的なアイデアはWebから取ったという。「数億個のプロセサが動作し,数千の組織に属する数十万の開発者が時には互いに競合しながらプログラムを記述し,スケーラビリティがあって安定して使えるシステム。このような並列処理を実現しているシステムが,実はWebである」(Microsoft社Parallel Computing Platform,Software ArchitectのNiklas Gustafsson氏)。

 その並列性の源泉は,「それぞれのコンピュータが共有するメモリを持たない。依存関係が明確であり,システムの境界も明らかだ」(Gustafsson氏)。また非同期的な通信も必要であるという。

 そこで考案された言語がAxumだ。Axumの基本要素は大きく四つ。データを保持する主体である「Domain」と,データの受け渡しなどを代行して実行する「Agent」,データをやり取りする場である「Channel」,および,やり取りするデータの形式などを定めた「Schema」である。これらのうち,Domain同士は共有するデータを持たない。Domain間ではデータを直接共有することはなく,必要に応じてDomainに属するAgentがChannelを通じてデータをやり取りする。

 こうした並列処理の記述方法は,ほぼCSP(communicationg sequential process)に依拠している。この点は米Google Inc.が先日発表した「Go」と同じであり,ソフトウエア界の二大巨頭が同じ結論に達したといえよう。すなわち,ロックを基盤に据えた共有排他制御のメカニズムには限界があり,今後のマルチコア/メニーコア時代に向けたソフトウエア開発には対処できないことを意味している可能性が高い。