関数型言語 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, 興味深い)
という言語があるのかと
Re:てっきり (スコア:0)
今やパフォーマンスしか生甲斐が無いFortranの畑には
入りにくいと思われ。
これを機に関数型言語が広まると良いなあ (スコア:2, 参考になる)
てきとーにぐぐって [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)
Re:これを機に関数型言語が広まると良いなあ (スコア:1)
>Microsoftがそう言うのです。Microsoftを疑うのですか?」
Microsoftの言う事全てを盲目的に信じるのは危険だと思います。
Re:これを機に関数型言語が広まると良いなあ (スコア:1)
> Microsoftの言う事全てを盲目的に信じるのは危険だと思います。
Microsoft「市民nobuhirofujii、Microsoftを疑うことは反逆です。反逆者は死(ZAPZAPZAP...)
#参考:ブラックユーモアRPG「パラノイア」紹介 [so-net.ne.jp]
Re:これを機に関数型言語が広まると良いなあ (スコア:0)
正:Microsoftの言う事を信じるのは盲目的で全てにおいて危険だと思います。
Re:これを機に関数型言語が広まると良いなあ (スコア:1)
人の意見に反論するのはいいけど
その表記はないんじゃない?
私の意見は誤りであなたの意見は正しいのですか?
誤:.......
正:.......
とは正しい日本語の使い方や共通の認識など、正解があり、
それを誤認、誤用した場合などに使うものですよ。
人の意見に使う物ではない。
あなたも思っているだけでしょ?
Re:これを機に関数型言語が広まると良いなあ (スコア:0)
Microsoftに関してはいろんなことに目をつぶらないと結局仕事が進まないだもん…
--
そういう意味じゃないことは重々承知
Re:これを機に関数型言語が広まると良いなあ (スコア:0)
LINQはSQLもどきとして関数型を取り込んだし、Javaの偉い人も今のJavaをぶち壊して関数型にする?とか言っちゃうし、メジャーなLLは関数型っぽい機能がとっくに入ってるし。
オブジェクト指向の次の段階の成長は関数型との融合だと言ってる人もいますね。
さあ、みんなで勉強しよう。
F#では (スコア:1, おもしろおかしい)
Re:F#では (スコア:0)
Re:F#では (スコア:0)
仕事で使う (スコア:1)
情報,教育,開発環境,ライブラリが不足していたと思う.
ソフトウェア科学的な言語機能はもう十分(?)でソフトウェア工学的な環境が不十分とも言えるかな.
F#+Visual Studioがこれらを満たす為のきっかけになるとうれしいなぁ.
「.NETが使える」ではなく
「.NET相当のことが関数型のパラダイムで使える」であって欲しい.
J# (スコア:0)
Re:J# (スコア:2, おもしろおかしい)
なになに…
…思い出す必要ないらしいです。
Re:J# (スコア:1)
#iText.NETのお世話になっているけどAC
Re:J# (スコア:0)
変態的で機能的で良い言語なんです。Re:J# (スコア:0)
これコードの段階で暗号だよねと冗談で言った記憶があります
Re:J# (スコア:2, 参考になる)
array =: 1 2 3 4 5
mean =: (+/%#) array
フィボナッチ数を10個求める
10(,[:+/_2&{.)@]^:[1
うーん、うつくしい。
Re:J# (スコア:1, 参考になる)
純粋関数型、ではないわけか? (スコア:0)
完全だとすれば、.NETクラスのうち「副作用」がある奴も動くことになる。
→純粋関数型ではないことになる。
純粋関数型だとすれば、副作用がある奴は動かすわけにはいかない。
→.NETを完全に、とは言い切れない。
ということは今回のは純粋関数型じゃないんですね。
しょぼーん。
そういえば、LINQをマルチCPU(コア)に最適化すべく
並列実行可能な部分を自動的に抽出して処理してくれる
「PLINQ」ってのも、開発中だそうですね。
なにげにMSやるなあ…
#ライセンス的にはしばしば我々のテキであるMSだが、
#技術的な面(少なくとも先端っぷり)は見習ったほうがいいかも。
Re:純粋関数型、ではないわけか? (スコア:1)
Re:純粋関数型、ではないわけか? (スコア:2, 興味深い)
ちょっと古いので.NetでなくてCOMの話になっていますが、 純粋関数型言語であるHaskellの中からCOMオブジェクトを利用したり、COMオブジェクト自体をHaskellで書いたりできるよ、という話 "Calling hell from heaven and heaven from hell" [microsoft.com]が他ならぬMicrosoftから出ています。 容易に想像できるように、IO Monadの中で動作することで、純粋関数型言語でも矛盾なくIO動作を記述できることになっています。
というわけで、正格評価なF#だけでなく、遅延評価な言語も出してくれるといいのになあ。出るとすると、名前はH#とかになるんだろうか?
遅延評価(オフトピ) (スコア:2, 参考になる)
http://d.hatena.ne.jp/tanakh/20041010 [hatena.ne.jp]
Re:遅延評価(オフトピ) (スコア:2, 参考になる)
リンク先のtanakh氏のページを見てみました。さらにその先のリンク(shootoutのページ)がリンク切れのようなので、tanakh氏がどういう意図でその後のwcプログラムを書いたのかは良く分からないのですが、 高速化という観点で見ると、どうもtanakh氏はちょっと筋の悪い方向に進んでしまったように見えます(御本人が見て気を悪くされたらごめんなさい)。
元々、wcのような単純なバイト単位の処理は、むしろC言語のような「低級」な言語の尤も得意とする分野で、多くの「高級」言語ではオーバヘッド等で分が悪くなりがちです。
ところがそれをふまえて実際に試してみたところ、実はtanakh氏が試したものより、もうちょっと「素直」(?)なチューニングで、速度だけならC++やCよりさえ速い(?)Haskellコードを比較的簡単に得ることができました。というわけで、私はむしろ「wcほどC向きのプログラムでさえ、場合によってはHaskellに分がある」という印象を得ました。少なくとも、チューニングは「四苦八苦」というほどではありませんでした。(ま、Naiveに書くとCより遅いどころか、まともに動きさえしないのは確かなのですが。)
F#のストーリーで続きを書くとオフトピになりそうなので、日記 [srad.jp]の方にエントリを作りました。興味のある方はご覧ください。
Re:遅延評価(オフトピ) (スコア:0)
# 感想だけなんでAC
Re:遅延評価(オフトピ) (スコア:0)
リンク切れのやつをInternet Archiveから拾ってみました。
http://web.archive.org/web/20041013021651/http://shootout.alioth.debia... [archive.org]
http://web.archive.org/web/20041103192127/http://shootout.alioth.debia... [archive.org]
http://web.archive.org/web/20041103212640/http://shootout.alioth.debia... [archive.org]
# 元のサイトから
Re:純粋関数型、ではないわけか? (スコア:0)
複数CPUを有効活用させる方法は昔から行われている方法だと思うなぁ。
C#すら使いませんから (スコア:0)
Re:C#すら使いませんから (スコア:0)
だって、いいものなら社内で一番最初に使うでしょ?
RadeonのCCCの.net使用を止めてもらいたいAC