F#

タグの編集
投稿者 brv  () 投稿日時 2008/7/6 01:17:00
VB関連の話題ではないのですが、MicrosoftのF#という.NET Framework対応の関数型プログラミング言語という記事をネット上で見つけました。関数型言語が手続き型言語よりもすぐれている点がいまひとつ分かりません。あと、この言語がVisual Studioに追加されて広く普及するということが将来的にはあり得ますか?この言語を学ぶ意義はどこにあるのでしょう?教えてください。 
情報源 
http://ja.wikipedia.org/wiki/F_Sharp 
http://msdn.microsoft.com/ja-jp/magazine/cc164244.aspx
投稿者 るきお  () 投稿日時 2008/7/6 07:01:00
こんにちは。 
私もF#はいくらか聞きかじった情報しかありません。 
 
>関数型言語が手続き型言語よりもすぐれている点がいまひとつ分かりません。 
細かいプログラミング手法を抜きにして、完成するアプリケーションを考えると特にどちらが優れているということはないはずです。 
よくある説明ですが好みや、適材適所の発想で使い分けていくといいのではないでしょう? 
 
>この言語がVisual Studioに追加されて広く普及するということが将来的にはあり得ますか? 
ありえます。 
情報源は以下です。 
http://www.computerworld.jp/news/sw/83789.html 
 
>この言語を学ぶ意義はどこにあるのでしょう? 
私もこの言語のことがわからないので的確にお応えできませんが、視野を広げるという意味はありそうですね。 
私は当分手を出すつもりはありませんが、つまみぐい程度に遊んでみるかもしれません。 
 
マイクロソフトはこのところF#、IronPython、IronRubyといった言語を開発しており、phpの対応も進めています。さらにかなり情報が少ないのですがVisual Basic X(VBX)というVBの亜種(???)も開発中のようです。 
私は情勢が落ち着くまで静観の構えです。 
 
なお、関数型言語であるF#の研究の成果はすでにVisual Basic 2008にラムダ式という形で反映されているようです。 
このラムダ式はC#のyieldなどは関数型言語の発想を取り入れたものということです。
投稿者 brv(質問者)  () 投稿日時 2008/7/7 04:49:00
ありがとうございます。 
>マイクロソフトはこのところF#、IronPython、IronRubyといった言語を開発しており、phpの対応も進めています。 
初めて知りました。ありがとうございます。
投稿者 よねKEN  () 投稿日時 2008/7/7 18:37:00
>>2 
Microsoftが研究目的で開発している言語は、 
F#以外にも多数あります。 
 
Microsoftの研究は以下でいろいろ情報を得ることができます。 
http://research.microsoft.com/ 
 
上記のサイトがどんなサイトか?という点はWikipediaに概要が載っています。 
http://ja.wikipedia.org/wiki/Microsoft_Research 
言語だけでもCωをはじめとしていろいろ研究されていますね。
投稿者 るきお  () 投稿日時 2008/7/7 21:15:00
こんにちは。 
 
>http://research.microsoft.com/  
このサイト知らなかったです。 
興味深い内容ですね。 
英語なのが少しつらいですが…。
投稿者 魔界の仮面弁士  () 投稿日時 2008/7/8 09:18:00
>>0 
> この言語がVisual Studioに追加されて 
F# は既に、VS に組み込めるようになっています。  
最近のバージョンは知りませんが、少なくとも v1.9.3.14 は VS2005 に組み込める事を確認しています。 
 
個人的には、.NET の主流言語足りえるのは、恐らくは C# と VB ぐらいだと思いますし、F# という言語自身が普及するかどうかは分かりません。しかしながら、るきおさんも書かれていますように、その研究成果はラムダ式の実装などに生かされていますので、技術的な意味においては、その一部はすでに普及していると見る事もできるでしょう。 
 
 
>>1 
> 特にどちらが優れているということはないはずです。  
同感です。興味があるなら、それぞれの .NET 言語を僅かでも齧ってみると、それぞれの特色が見れて面白いかもしれませんよ。 
……Ook# などは微妙ですけれども。(^^; 
 
なお、(実験言語としてではなく)正式な有償/無償製品としてリリースされた .NET 対応言語としては、VB や C# 以外の有名どころとして、C++/CLI とか Managed C++ とか JScript.NET とか J# とか PowserShell などがありますね。 
 
 
> マイクロソフトはこのところF#、IronPython、IronRubyといった言語を開発しており 
IronPython を作ったのは、Microsoft では無いはずです。 
 
元々は、.NET と動的言語の相性の悪さを証明するために、Python の作者であるジム・ハグニン氏によって研究開発されていたものでした。が、予想に反して良く動くものになったので、オープンソースとして公開されるようになった物です。(その関係で、Microsoft.NET Framework のみならず、Mono Project 上への実装も行われています) 
なお、ジム氏はその後 Microsoft に入社し、現在は DLR(動的言語ランタイム)の開発に加わっているそうです。  
 
 
Ruby 系の .NET 実装の方は、私は良くは知りません。ただ、IronRuby と Ruby.NET という複数の流れがあるようですね。 
http://www.infoq.com/jp/news/2008/01/johnlam-responds  
http://www.itmedia.co.jp/enterprise/articles/0802/08/news042.html 
 
 
> phpの対応も進めています。 
こちらの情報は見つけられませんでした。 
 
これは、Phalanger の事でしょうか。それともマイグレーションの話を指しているのでしょうか。 
http://www.php-compiler.net/ 
http://www.microsoft.com/japan/msdn/asp.net/using/migrating/phpmig/phpmigasst.aspx
投稿者 魔界の仮面弁士  () 投稿日時 2008/7/8 09:21:00
>>2  
> Microsoftが研究目的で開発している言語は、  
> F#以外にも多数あります。 
多少毛色が異なりますが、C# の拡張機能となる [Spec#] とかもそうかも知れません。 
http://research.microsoft.com/specsharp/ 
http://www.divakk.co.jp/blog/aoyagi/archive/2004/11/17/631.aspx 
 
 
>>4 
> このサイト知らなかったです。 
MSR(research.microsoft.com)は研究機関であり、ここで培われた技術は次世代製品にフィードバックされていきます。特に F# は、言語仕様の整備が進められている段階ですし、今後も継続して開発される物であるとされていますね。 
http://www.infoq.com/jp/news/2008/04/FSharpPlans 
 
また、F# の前に Cω(シーオメガ)という、C# を機能拡張したような言語が同ラボで実験開発されていましたが、こちらの技術もまた、現行製品へと確実にフィードバックされています。Cωは .NET 1.1 をベースにしているにも関わらず、「ジェネリック」や「匿名メソッド」を実装していました(MSIL にジェネリックが実装されたのは、.NET 2.0 からです)。また、Cωは XML の直接埋め込み機能もサポートしており、この機能は(C#2008 への実装は中止されたものの) VB2008 に組み込まれる結果となりました。  
 
 
その他、非 Microsoft 製の物も含めるなら、国内外を含め、幾つもの言語実装があるようですね。 
A#(Ada), NetCOBOL(COBOL), Delphi, DotLisp(Lisp), PerlNET(Perl), S#(SmallTalk) などなど、他にも沢山。 
 
中には聞いた事すら無い言語もありましたし、私にはとても全部を把握する事はできそうに無いですが…。(^^;
投稿者 るきお  () 投稿日時 2008/7/8 21:45:00
>IronPython を作ったのは、Microsoft では無いはずです。 
失礼しました。 
このあたりはまだまだ認識不足のようです。 
 
php対応とはPHP on IISと、Expression Web 2でのphp対応を指しています。 
 
IIS7.0(onWindows Server 2008)でのphp標準サポート 
http://www.microsoft.com/japan/opensource/php/default.mspx 
 
Expression Webのphp対応とはどの程度のレベルなのかは掴んでいません。