パスワードを忘れた? アカウント作成
16557 story

関数型言語 F# が Visual Studio に統合される? 30

ストーリー by mhatta
話だけ聞くと非常に魅力的だ 部門より

OCaml 勉強中の Yak! 曰く、

Open Tech Press でも既報ですが、Computerworld.jp によれば、米国 Microsoft が関数型言語「F#」を「Visual Studio」に統合する計画だそうです。元ソースはデベロッパ部門副社長 S.Somasegar 氏のブログで、正式なリリース・スケジュールは明らかにされていません。
F# は Microsoft Research Group が開発した関数型言語で、Python のような対話的スクリプト、MATLAB のような対話的データ可視環境の基礎、ML のような強力な型推論と型安全性、OCaml と共有したクロスコンパイリング互換コア、C# のようなパフォーマンスプロファイルを持ち、.NET が完全に利用できるとされています。
関数型言語由来の機能の別言語への導入(例:C# でのラムダ式)や、Haskell、OCaml の日本語書籍の出版など、関数型言語の認知度は上がりつつあると思いますが、ML が機械言語と訳されてるぐらいですし、IT 界隈限定としてもまだまだ認知度は低いような気もします。
F# の Visual Studio 統合によって関数型言語の爆発的普及が進むのか、それともやっぱりマイナーな存在で有り続けるのか。皆さんの周りの関数型言語の利用、認知度、あるいは F# 経験者の方はその使用感などお聞かせください。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • てっきり (スコア:2, 興味深い)

    by Anonymous Cowboy (6205) on 2007年10月28日 23時33分 (#1240920)
    FORTRANを野放図に拡張したF++を捨てて、SmallTalk風によく整理して拡張しなおしたF#
    という言語があるのかと
    • by Anonymous Coward
      Smalltalkのように何事も動的にやりまくる言語は、
      今やパフォーマンスしか生甲斐が無いFortranの畑には
      入りにくいと思われ。
  • てきとーにぐぐって [google.co.jp]みても分かる通り、実はMicrosoft Researchは関数型言語に関して、以前から多くの貢献をしてきています。

    そんなわけで、1998年にHaskellの偉い人Simon Peyton Jones [microsoft.com]教授がGlasgow UniversityからMicrosoft Researchに移った時は、「Microsoftが遂にHaskell互換技術を本格導入!」てなエイプリルフールのジョーク記事 [haskell.org]が出たりしました。 これがウソから出たマコトになってきているのだとすれば良いことだと思います。

    (* F#はOCaml同様正格評価なので、Haskell互換技術とは言えませんが。*)

    F#自体は2003年ごろよりMicrosoftからダウンロード可能だったわけですが(当時の/.J記事 [srad.jp])、その後特に目立った動きもなく、「結局作ってみただけで放置なのかなー」と思っていたので、 今回本当に正式統合されるのならば嬉しいです。

    Microsoft製品に正式統合されることで、関数型言語の認知度が上がるといいなあ。 ついでにMicrosoftが関数型言語の宣伝をばりばりやってくれると、きっとそのうち職場でも大手を振って関数型言語を使えるようになるんだ……(ほわわわ……(以下妄想))
    「なんだお前、わけの分からん言語でプログラム書きやがって……」
    「おや? 上司、不幸そうですね。関数型言語はすばらしい言語です。Microsoftがそう言うのです。Microsoftを疑うのですか?」
    「……もちろんすばらしい言語だ! Hail Microsoft! 幸福はプログラマの義務です!」
    ……ん? なんか変なディストピアが混じっt(ZapZapZap)

  • F#では (スコア:1, おもしろおかしい)

    by Anonymous Coward on 2007年10月29日 13時38分 (#1241268)
    Cと協和しないな。
  • by cljack (22418) on 2007年10月29日 17時48分 (#1241416)
    関数型言語を仕事(ある程度の規模を複数人で開発し,ある程度の信頼性・保守性を満たすソフトウェア)で使うには,
    情報,教育,開発環境,ライブラリが不足していたと思う.
    ソフトウェア科学的な言語機能はもう十分(?)でソフトウェア工学的な環境が不十分とも言えるかな.
    F#+Visual Studioがこれらを満たす為のきっかけになるとうれしいなぁ.

    「.NETが使える」ではなく
    「.NET相当のことが関数型のパラダイムで使える」であって欲しい.
  • by Anonymous Coward on 2007年10月28日 20時52分 (#1240735)
    ってのもタマには思い出してください・・・。
    • Re:J# (スコア:2, おもしろおかしい)

      by Tsann (15931) on 2007年10月29日 9時13分 (#1241099)
      思い出してみよう…Visual J# ホームページ [microsoft.com]はここ。
      なになに…
      よって将来バージョンの Visual Studio では J# 言語および JLCA ツールは提供されません。

      …思い出す必要ないらしいです。
      親コメント
    • 忘れてもらったほうが世のため、人のためだと思う。

      #iText.NETのお世話になっているけどAC
      親コメント
    • by Anonymous Coward
      そいつとJavaのせいですっかり影が薄くなってしまったJ言語の事も忘れないで下さい。
      変態的で機能的で良い言語なんです。
      • by Anonymous Coward
        APLベースのやつだっけ?
        これコードの段階で暗号だよねと冗談で言った記憶があります
        • Re:J# (スコア:2, 参考になる)

          by Anonymous Coward on 2007年10月29日 10時21分 (#1241126)
          平均値を求める
          array =: 1 2 3 4 5
          mean =: (+/%#) array


          フィボナッチ数を10個求める
          10(,[:+/_2&{.)@]^:[1

          うーん、うつくしい。
          親コメント
  • by Anonymous Coward on 2007年10月28日 21時51分 (#1240799)
    >.NET が完全に利用できるとされています。

    完全だとすれば、.NETクラスのうち「副作用」がある奴も動くことになる。
    →純粋関数型ではないことになる。

    純粋関数型だとすれば、副作用がある奴は動かすわけにはいかない。
    →.NETを完全に、とは言い切れない。

    ということは今回のは純粋関数型じゃないんですね。
    しょぼーん。

    そういえば、LINQをマルチCPU(コア)に最適化すべく
    並列実行可能な部分を自動的に抽出して処理してくれる
    「PLINQ」ってのも、開発中だそうですね。
    なにげにMSやるなあ…

    #ライセンス的にはしばしば我々のテキであるMSだが、
    #技術的な面(少なくとも先端っぷり)は見習ったほうがいいかも。
    • 純粋な関数型でも副作用がなければI/Oできないので.NETが利用できることは反則ではないと思う。
      親コメント
      • by kr (10950) on 2007年10月29日 6時10分 (#1241058) 日記

        ちょっと古いので.NetでなくてCOMの話になっていますが、 純粋関数型言語であるHaskellの中からCOMオブジェクトを利用したり、COMオブジェクト自体をHaskellで書いたりできるよ、という話 "Calling hell from heaven and heaven from hell" [microsoft.com]が他ならぬMicrosoftから出ています。 容易に想像できるように、IO Monadの中で動作することで、純粋関数型言語でも矛盾なくIO動作を記述できることになっています。

        というわけで、正格評価なF#だけでなく、遅延評価な言語も出してくれるといいのになあ。出るとすると、名前はH#とかになるんだろうか?

        親コメント
        • by Anonymous Coward on 2007年10月29日 11時13分 (#1241155)
          きちんとパフォーマンスを出そうとすると、wc程度でも四苦八苦する羽目になるみたいなので、実用言語に遅延評価を含めるのは難しいのかも。
          http://d.hatena.ne.jp/tanakh/20041010 [hatena.ne.jp]
          親コメント
          • by kr (10950) on 2007年10月30日 1時26分 (#1241599) 日記

            リンク先のtanakh氏のページを見てみました。さらにその先のリンク(shootoutのページ)がリンク切れのようなので、tanakh氏がどういう意図でその後のwcプログラムを書いたのかは良く分からないのですが、 高速化という観点で見ると、どうもtanakh氏はちょっと筋の悪い方向に進んでしまったように見えます(御本人が見て気を悪くされたらごめんなさい)。

            元々、wcのような単純なバイト単位の処理は、むしろC言語のような「低級」な言語の尤も得意とする分野で、多くの「高級」言語ではオーバヘッド等で分が悪くなりがちです。

            ところがそれをふまえて実際に試してみたところ、実はtanakh氏が試したものより、もうちょっと「素直」(?)なチューニングで、速度だけならC++やCよりさえ速い(?)Haskellコードを比較的簡単に得ることができました。というわけで、私はむしろ「wcほどC向きのプログラムでさえ、場合によってはHaskellに分がある」という印象を得ました。少なくとも、チューニングは「四苦八苦」というほどではありませんでした。(ま、Naiveに書くとCより遅いどころか、まともに動きさえしないのは確かなのですが。)

            F#のストーリーで続きを書くとオフトピになりそうなので、日記 [srad.jp]の方にエントリを作りました。興味のある方はご覧ください。

            親コメント
    • 並列処理が期待できそうな部分に対して、特別な記法やライブラリを用いた記述を行うことで、
      複数CPUを有効活用させる方法は昔から行われている方法だと思うなぁ。
  • by Anonymous Coward on 2007年10月29日 0時38分 (#1240977)
    覚える言語が増えすぎているので、取捨選択したほうが良いと思うんですけどねぇ。
    • MSの技術の場合、MS-Officeに使われない(まだ使われていない)ものは手を出さないでいいかと。
      だって、いいものなら社内で一番最初に使うでしょ?

      RadeonのCCCの.net使用を止めてもらいたいAC
typodupeerror

※ただしPHPを除く -- あるAdmin

読み込み中...