質問
これら2つのプロジェクトをそれぞれ調べたところ、どちらも非常に似ているようです。どちらもCLIの上で実行され、どちらもpythonスタイルの構文を持ち、標準のpythonライブラリの代わりに.NETを使用します。
では、それらの違いとそれぞれの利点は何ですか?
解決
主な違いは、Booは静的に型付けされていることです。つまり、変数の型は最初の割り当てで推論され、そこから固定されます。IronPythonには「実」通常のPythonコードの動的な動作。
IronPython は現在Microsoftによって公式にメンテナンスされており、はバージョン2.0の新しいDynamic Language Runtimeを対象としています。静的に型付けされているため、Booの方が高速かもしれません。 「本物」があまりないしかし、それを体験してください...
IronPythonは、多くのpython標準ライブラリも再実装するため、IronPythonで多くのpythonソフトウェアを変更せずに実行できます(例 Django )。
他のヒント
Booは静的に型付けされていますが、オプションのアヒル型付けがあります(私の経験では、これはかなりうまく機能します)。 Booは、「手首にやさしい」ように特別に設計されています。 -つまり、Shiftキーとキーの組み合わせを使用する必要性を最小限に抑えます。 SharpDevelop でIDEを適切にサポートしています。
明らかなように、BooはPythonから多くのインスピレーションを得ていますが、.NET機能を十分に活用できるように設計されています。
パフォーマンス面では、BooはIronPythonよりもわずかに高速であり、特にIronPythonの顕著な起動ラグがありません。
ブーはまだ未熟な言語であり、Pythonのコミュニティがありません。個人的には、本番環境での使用について少し注意が必要です。また、クラスから明示的なselfを削除するなど、Pythonからのすべての脱却にも同意しません。
IronPythonをまだ使用していませんが、Booについて知っていることは次のとおりです...
- BooはPythonに触発され、多くの構文上の類似点があります。違いについては、 http://boo.codehaus.org/Gotchas+for+Python+Usersをご覧ください。
- ブーはCLR専用に作成されました
- 静的に型付けされており、いくつかの利点があります
- DLLにコンパイルし、VBおよびC#プロジェクトで参照できます
- IDEでコード補完を取得します
- 言語自体が拡張可能な場合。 「構文マクロ」を作成できます。実際に言語に新しい要素を追加します。これにより、DSLを作成するのに適しています。
- IronPythonはまだ1.0ですが、まだ1.0ではありません。この言語はまだ苦しんでいますが、非常に使いやすいです。
次のような目的でBooを使用しました:
- スケジュールされたジョブのスクリプト作成。特に.NET APIにアクセスする場合、VBScript、BATファイルの優れた代替手段です。それ以来、私は主にPowershellに切り替えましたが、OS固有であり、より重い構文を持っているので、私はまだいくつかのものにBooを使用しています。
- 単体テストの作成
- 埋め込みスクリプト言語
ウィンストンのように、Booはオープンなコンパイラアーキテクチャにより非常に拡張性が高いと言われています。次の例をご覧ください。
- http:/ /ayende.com/Blog/archive/2008/05/27/The-magic-of-boo--Flexible-syntax.aspx
- http://www.infoq.com/articles/dsl-on- the-clr
- http://ayende.com/Blog/archive/ 2007/12/21 / Meta-Methods.aspx
- http: //ayende.com/Blog/archive/2007/11/24/Domain-Specific-Language-Losing-the-original-language.aspx
- http://ayende.com/Blog/archive/2007/10/14/By-the-DSL-guess-what-I-am-reading.aspx
- http://ayende.com/Blog/archive/ 2007/10/04 / Redefining-If.aspx
- http://ayende.com/ Blog / archive / 2007/09/21 / Playing-with-Boos-DSLs.aspx
BooとIronPythonの両方でアプリケーションを作成しました。私にとって、IronPythonはより堅牢な選択肢であり、CPythonポートで変更せずに作成したものの多くです。 .Net Frameworkを対象とする場合、最近のプロジェクトはすべて純粋なIronPythonでした。
ジム" defected"以来マイクロソフトにとって、IronPythonは最上位の言語に昇格しました。 Visual Studioもあります。
ここでVolkAに同意します。 Djangoを実行できることは大きなことです。 Booがそれをやり直すのに苦労するのは、まさにそのようなすばらしいフレームワークです。今日、それは言語が提供する構造よりも、言語が提供するフレームワークの問題です。また、Booは、サポートする構成においてPythonよりも多くの改善を提供していません。
主な違いは、私の意見では、 IronPython は成熟した言語の実装であるということです-一方、ブーは若く、あまり知られていません。