阿部ブログ

日々思うこと

グーグルの新しいプログラミング言語「Go」開発の背景にあるもの

2009年11月25日 | 日記
グーグルが11月10日に新しいプログラミング言語Goを公開した。Goは、C/C++のようなコンパイルする言語が持つパフォーマンスと、Rubyなどスクリプト型言語が持つ開発スピードを合わせた資質を持つとされる。

今更ながら新たなプログラミング言語をグーグルが開発した背景には、C/C++など現状のプログラミング言語が内包する欠陥にある。例えばC言語の規格書(JIS X 3010-1993)の附属書には、「このような場合にはどのように動作するか保証できない」と言う未規定・未定義の動作119項目、その他文化圏固有の動作など82項目が列挙されている。

C言語は確かに融通の効く言語ではあるが、附属書に記載されている動作を実行するとプログラムが暴走し、予期しない結果を出すということだ。今後、社会的に重要なインフラ、自動車や航空機等の組込みシステムの開発において、必要とされる機能を実現するために組込まれるソフトウェアに高度の信頼性と厳格な厳密な安全性が当然要求されるが、プログラミング言語自体に欠陥があるため、開発されたソフトウェアの信頼性と安全性が担保されていない状況にある。

このような背景を踏まえ、Goには様々な仕組みが取り入られている。最大のポイントは、並列処理の記述にCSP(communicating sequential process)と呼ばれるプロセス代数のモデルを採用したことだ。CSPは形式手法(formal methods)という 、計算機科学における数学を基盤としたソフトウェア技法に依拠しており、ロックなど同期のメカニズムを使わずに並列処理を記述できる優れた特質を持つ。

この形式手法は、欧米において軍事、原子力、航空、鉄道などの重要インフラにおける制御システムや電子回路などのハードウェア設計などに適用されてきたが、近年では、OS、組み込みシステム、セキュリティなどの分野にも適用が始まっている。

今後、あらゆるデジタル装置が相互に情報連携するユビキタス環境になった時、現在の開発言語ではリアルタイムの並列処理に対応できず、予測できないエラーを起こす可能性が高い。形式手法に基づくCSPを採用したプログラミング言語Goは、信頼性の高い安全なソフトウェアを開発するプログラミング言語の1つとして、社会インフラの根幹を指支える重要な位置を占めるようになるだろう。