コンパイラとインタプリタ

コンパイラ(compiler)インタプリタ(interpreter)は、 F#で書いたプログラムを実行するために必要なものです。 MicrosoftのF#の処理系はコンパイラとインタプリタを両方持っていますが 通常は、どちらか片方を使います。 ちょっとした作業やコードの確認にはインタプリタ ある程度ちゃんとしたプログラムには コンパイラを使うことが多いように思います。 インタプリタは、一つコードを打てば、 すぐに結果が返ってくるといった感じに対話的に使えるので 初めての方はインタプリタから慣れると F#を理解しやすいのではないかと思います。 まず、これらの定義を英語版のwikipediaのページから引用すると
コンパイラ
コンパイラとは、あるプログラミング言語で書かれたソースコードを 別のコンピュータの言語(多くはオブジェクトコードと呼ばれるバイナリの形式)に 変換するコンピュータプログラムのこと
インタプリタ
インタプリタとは、通常、あるプログラミング言語で書かれた プログラムを実行する(命令を動かす)コンピュータプログラムのことを意味し、 次のような種類がある  1.ソースコードを直接実行する  2.ソースコードを効率的な中間言語の形式に変換し、すぐに実行すること  3.インタプリタシステムの一部として用意されている、事前にコンパイラによって作成された   すぐに実行可能なコードを実行すること
となっています。 どこが違うのかというと コンパイラは元のプログラムを変換するだけなのに対し、 インタプリタはプログラムをすぐ実行する点が異なります。 F#では以前は コンパイラ:fsc.exe インタプリタ:fsi.exe という名前の実行ファイルになっていましたが、 現在はインタプリタはdotnet fsiコマンドで実行し、コンパイラはdotnet buildコマンドでf#プロジェクトとして実行する形に変わっています。 コンパイラを使うと、F#のソースコードをwindowsで実行出来る実行ファイルに変換してくれます。 この中身は、MSIL(Microsoft Intermediate Language)という中間言語になっていて CPUが直接実行出来る形式ではないものの 共通言語ランタイム(CLR:Common Language Runtime)というものを通じて CPUが直接実行出来る形式に変換され、実行されるという動作をします。 このあたりの詳細は MSDN:マネージ実行プロセスに記述があります。 この仕組みはF#だけではなく、 C#やVB.netなどの.Net Framework上で利用出来る言語共通になっています。