話だけ聞くと非常に魅力的だ部門より。
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, 興味深い)
という言語があるのかと
これを機に関数型言語が広まると良いなあ (スコア: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記事 [slashdot.jp])、その後特に目立った動きもなく、「結局作ってみただけで放置なのかなー」と思っていたので、 今回本当に正式統合されるのならば嬉しいです。
Microsoft製品に正式統合されることで、関数型言語の認知度が上がるといいなあ。 ついでにMicrosoftが関数型言語の宣伝をばりばりやってくれると、きっとそのうち職場でも大手を振って関数型言語を使えるようになるんだ……(ほわわわ……(以下妄想))
「なんだお前、わけの分からん言語でプログラム書きやがって……」
「おや? 上司、不幸そうですね。関数型言語はすばらしい言語です。Microsoftがそう言うのです。Microsoftを疑うのですか?」
「……もちろんすばらしい言語だ! Hail Microsoft! 幸福はプログラマの義務です!」
……ん? なんか変なディストピアが混じっt(ZapZapZap)
F#では (スコア:1, おもしろおかしい)
仕事で使う (スコア:1)
情報,教育,開発環境,ライブラリが不足していたと思う.
ソフトウェア科学的な言語機能はもう十分(?)でソフトウェア工学的な環境が不十分とも言えるかな.
F#+Visual Studioがこれらを満たす為のきっかけになるとうれしいなぁ.
「.NETが使える」ではなく
「.NET相当のことが関数型のパラダイムで使える」であって欲しい.
Re:J# (スコア:1)
#iText.NETのお世話になっているけどAC
親コメント
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#のストーリーで続きを書くとオフトピになりそうなので、日記 [slashdot.jp]の方にエントリを作りました。興味のある方はご覧ください。
親コメント
Re:J# (スコア:2, おもしろおかしい)
なになに…
…思い出す必要ないらしいです。
親コメント
Re:J# (スコア:2, 参考になる)
array =: 1 2 3 4 5
mean =: (+/%#) array
フィボナッチ数を10個求める
10(,[:+/_2&{.)@]^:[1
うーん、うつくしい。
親コメント