MSの新言語「F#」は関数型プログラミングがベース

Microsoftは、ソフトウェア開発分野の次の大物として関数型言語に狙いを定めている。

» 2007年11月06日 20時10分 公開
[Darryl K. Taft,eWEEK]
eWEEK

 Microsoftが開発中の新言語「F#」の名前は、関数型プログラミング(Functional Programming)の頭文字「F」を取ったものだ。

 F#(「Fシャープ」と読む)はMicrosoft Researchで生まれた関数型言語であり、同社では並列処理に取り組む開発者や、金融、科学技術、学術などの分野の開発者をターゲットとしてこれを製品化する予定だ。

 10月にカナダのモントリオールで開催された「Object-Oriented Programming, Systems, Languages and Applications 2007」カンファレンスにおいて、Microsoftの言語部門の指導者であるジム・ハグニン氏、アンダース・ヘイルスバーグ氏およびエリック・メイジャー氏は、モントリオールに来る前に英国のケンブリッジに立ち寄り、F#プロジェクトの責任者を務めるMicrosoftの研究者、ドン・サイム氏を訪れたことについて話した。Microsoftはカンファレンスの直前に、この技術を研究段階からVisual Studioの下で製品形態に移行するという計画を明らかにしていた。

 このイベントの夕食会で、筆者はMicrosoftのC#のプログラムマネジャーを務めるマッズ・トーガーソン氏から、F#について詳しい話を聞く機会を得た。同氏はF#の製品化計画を後押ししてきた人物である。

 C#の中心的開発者の一人であるヘイルスバーグ氏はカンファレンスで、関数型プログラミングとその影響力が再び脚光を浴びていると語った。関数型プログラミングでは、演算を数学的関数の評価として扱い、状態データや可変データは使用しない。関数型言語としては、APL、Erlang、Haskell、Lisp、ML、Oz、Schemeなどがある。Microsoftのメイジャー氏はHaskellの開発者の一人である。

 「今後プログラミングで重要性が高まると予想される手法の多くが、並列性や分散プログラミングなど関数型スタイルのプログラミング方式の恩恵を受けるのは明らかだ」とトーガーソン氏は話す。

 この問題について、Microsoftのデベロッパー部門のコーポレート副社長を務めるS・ソーマ・ソマセガー氏はブログ記事の中で、「C#のラムダ式や.NET 2.0のジェネリックなどの言語機能のルーツは関数型言語にあり、LINQ(Language Integrated Query)は関数型プログラミング手法が直接ベースとなっている」と述べている。

 さらにソマセガー氏は、「関数型言語から得られるアイデアの多くは、データとオブジェクトとの間のインピーダンスミスマッチや、マルチコア/並列コンピューティング分野の課題など、業界が今日直面している最も重要な課題の幾つかに対処するのに役立っている」と記している。

 モントリオールのカンファレンスでは、Javaの開発者であるSun Microsystemsのフェロー、ジェームズ・ゴスリング氏が、関数型プログラミングの問題点として、それを習得する能力または意欲があるのは、コミュニティーのごく一部の開発者だけであると指摘した。

 トーガーソン氏も、「Haskellなど現在使われている関数型言語は独自の世界を形成している。これらの言語は非常に自己完結的であり、周囲の世界との相互運用性に乏しい。APIへの依存度が高まり、リッチなライブラリなどの外部機能を多用する今日のプログラミングの世界では、これは問題だ」と指摘する。

 しかしF#の魅力は、Microsoftがこれを同社のCLR(Common Language Runtime)上で動作する新たな言語として開発している点にある。

 「F#は関数型プログラミングの伝統から生まれ(それゆえ「F」なのである)、ML言語系統の流れを色濃く反映しているが、C#、LINQ、Haskellの特徴も備えている。F#は開発当初から、.NET向けの第一級言語になることを目指してデザインされた」とソマセガー氏は語る。「つまり、F#はCLR上で動作し、オブジェクト指向プログラミングの要素を取り入れており、.NET Frameworkとのスムーズな連携を実現する機能を備えているということだ」。

 トーガーソン氏によると、F#は関数型プログラミングの手法を「非常に実利的」に取り入れた言語だという。「F#は、オブジェクト指向プログラミング全盛の中でわれわれがすっかり忘れてしまった一部のプログラマーのニーズに応えることができる。数値演算、科学技術プログラミング、財務プログラミングなどを手がける人々は、その分野の専門知識を持ちながらも、彼らがプログラミングで使うツールは比較的限定されている」と同氏は話す。

 さらにトーガーソン氏は、「F#は開発者がステートレスな方法、つまり求めるものを指定し、それを得る手段を指定しないという方法でプログラムしやすくなる。手段の部分を抽象化しやすいのである。このため、コードの実行方法を正確に定義する余地がそれだけ大きくなる。実行ロジックをコードの意図から分離できるからだ。これは並列処理をきめ細かくコントロールする必要があるときに役立つ」と説明する。

 同氏によると、F#はVisual BasicやC#の後継言語として位置付けられていないという。「F#は異なる市場で受け入れられるものと期待している。現在、その市場では当社の力は非常に弱い」。

 ソマセガー氏によると、MicrosoftではF#言語をVisual Studioに全面的に統合するとともに、今後もF#の改良を続ける予定だという。「わたしの考えでは、F#もCLRに対応した第一級のプログラミング言語の1つだ」。

 サイム氏は自身のブログの中で、次のように記している――「Microsoftが当面フォーカスする作業としては、言語デザインのバージョン1を仕上げること、コンパイラ、ツール、Visual Studioプロジェクトシステムを改良すること、言語仕様を完成すること、そして関数型プログラミングに適した分野でF#を真に強力な言語にするのに必要なライブラリとツールでこの言語を強化することである」。

 サイム氏のグループでは、F#チームを強化するために開発者を雇い入れているという。

Editorial items that were originally published in the U.S. Edition of “eWEEK” are the copyrighted property of Ziff Davis Enterprise Inc. Copyright (c) 2011. All Rights Reserved.

注目のテーマ