matarillo.com

The best days are ahead of us.

9 F# 1.0, 2004~2006 -- 概要

2021-09-25 00:00:21

.NET Genericsを2004年半ばに完成させた後、その年の残りの時期にはF# の改善に関する作業に集中しました。 その時点では、.NETはMicrosoftの中で非常に重要な位置を占めていましたし、布教のための莫大な努力のおかげで広範囲に及ぶ社外での成功を達成しました: Windowsプラットフォーム用のほとんどのプログラミングは、世界中でC# と.NETに移行しました。 .NETへの大きな移行は社内でも起こりました。 Windowsチームは、Windowsの「シェル」の書き換えや、 Windows Presentation Foundation、Windows Communication Foundation、Windows Workflow Foundationのように主要な.NETプロジェクトを多数作成するなど、 大きなイニシアチブを開始しました。

2005年1月5日に、私の最初のMSDN(Microsoft Developer Network)ブログエントリー1でF# 1.0のプレリリースが宣言されました[Syme 2005]。 2005年3月、レドモンド(訳注:米国本社)で開催されたMSRの内部見本市である “TechFest” で、F# 1.0が初めてデモされました。

F# は2004年から2006年までの開発できわめて重要な動きがありました。 トライアルの成功に基づき、そしてByron Cookの支援を得て、MSRマネージャーのLuca Cardelliはプロジェクトに開発者支援を追加することに同意しました。 2005年2月10日には社内募集を出すことができ、 2005年3月24日にJames Margetsonが加わって、インターン(Dominic Cooney、2004年5月~7月、Gregory Neverov、2006年6月~8月)と一緒に小さなチームを結成しました。 社内外の小規模なユーザーコミュニティが成長し、プロジェクトへの信頼が形成され始めました。 この時期にF# に行われた技術的な追加は次のとおりです。

  1. Camlに似たコア言語プログラミングモデルの完成(2004)
  2. .NETジェネリクスをターゲットにする(2004)
  3. 初期化グラフの追加(2004)
  4. .NETとの相互運用性のための、メソッドオーバーロードの解決およびオブジェクト式の追加(2004)
  5. オーバーロードされた算術演算をHindley-Milner型推論に適合する方法で処理するための「静的に解決された型パラメーター」の追加(2005)
  6. オブジェクトプログラミングのためのクラス/インターフェース構成体の追加(2005)
  7. 暗黙のクラス構築の追加(2006)
  8. 字下げを認識する「軽い」構文(2006)の追加
  9. Hindley-Milner型推論におけるサブタイピングの扱いの追加(2006)
  10. クォートによる実行時メタプログラミングの追加(2006)
  11. F# のREPLであるF# Interactiveの追加(2006)
  12. 初期のVisual Studioツール(2006)
  13. ブートストラップ化(2006)
  14. Monoを使ったLinux上での実行(2006)

この言語を「実証」するために、SPiM(Stochastic Pi Machine、確率的π算法機械)、Static Driver Verifier、およびTerminatorプロジェクトを含む、MSRの既存のOCamlコードベースに目を向けました。 これらのテストは成功しました。たとえば、SPiMにWindowsベースのGUIを追加することができました。 その時期に、James Margetsonは、Andrew Phillips、Jakob Lichtenberg、Byron CookによるこれらのプロジェクトでのパフォーマンステストとF# の内部使用のサポートを担当しました。 Margetsonはまた、F# 用の最初のREPLを実装し、F# スクリプティングとREPLを使用したインタラクティブ開発の説得力のあるデモを数多く作成しました。 その中には、有名な “DirectX” のスクリプト環境で3Dグラフィックスのシーンをインタラクティブに構築するという、遊び心を示したものもありました(図4を参照)。 私とMargetsonはドキュメンテーションとリリースに責任がありました。当時のMSRの担当マネージャーはAndrew HerbertとLuca Cardelliでした。

図4. 初期のF# 普及活動に用いられた “DirectX 3D” のデモ(スクリーンショットは著者によるもの)

この時期のF#の成果は、MSR Cambridgeの言語研究者たちの「意見の一致」によるものではなく、むしろ初期実装に一連の設計を追加することを追求していた私と共同研究者たちの結果でした。 そしてそれは、同僚、ユーザー、WG2.8(訳注:情報処理国際連合IFIPの関数型プログラミングワーキンググループ)などの研究者ネットワーク、そして生まれてきた世界的なコミュニティからのフィードバックの助けを借りていました。 メーリングリストやブログの回答で行われた、外部コミュニティでの設計議論は励みになり、社内外の採用は着実に増えていました。


インデックスへ戻る


  1. 当時、MSDNでの個人ブログは経営陣からも奨励されており、F# に関わる人たちにとって、開発者たちの間で好印象なMicrosoftというブランドを利用するための前向きな方法であることがわかっていました。 ↩︎