このトピックが StackOverflow で何らかの方法でカバーされていることは理解していますが、正確な答えをまだ理解できていません: IronPython を C# の Pythonic の代替として扱うことはできますか
私は毎日 CPython を使用しています。私は Zen が大好きです :) しかし、私の現在のタスクは、複雑な GUI と .NET を使用して実装したいその他の機能を備えた Windows 専用のアプリケーションです。
このトピックが StackOverflow で何らかの方法でカバーされていることは理解していますが、正確な答えをまだ理解できていません: IronPython を C# の Pythonic の代替として扱うことはできますか
私は毎日 CPython を使用しています。私は Zen が大好きです :) しかし、私の現在のタスクは、複雑な GUI と .NET を使用して実装したいその他の機能を備えた Windows 専用のアプリケーションです。
IronPythonは、「。NETで実行される他の言語」と同等ではありません。これは、この言語がサポートするCLRランタイム機能が大幅に少ないためです。
IronPythonクラスは「実際の」.NETクラスではないため、従来のCLRベースの言語からIronPythonコードを呼び出す場合は、DLRAPIを使用する必要があります。これは、本当に簡単な相互運用性が必要な場合は、DLRを「隠す」ための接着剤を書くのに行き詰まっていることを意味します。
Booは、CLRを対象としたはるかに完全なPythonに触発された言語です。その(動的に推測可能な)静的型付け(変数ごとにダック型付けに置き換えることができます)により、Booで記述されたライブラリを、C#やその他のCLRベースの言語からネイティブに使用することもできます。使用中の言語。
それは、C# について何が必要で、どれを置き換える必要があるかによって異なります。
C# を使用する理由が、かなり高性能な静的型付け言語が必要である場合は、そうではありません。IronPython はおそらく代替にはなりません。
それを使用する理由が単純に「.NET で実行され、.NET ライブラリにアクセスできるものが必要」である場合は、はい、 .NET で実行される任意の言語を使用してそれを置き換えることができます。
C に似た言語しか知らないプログラマーのチームと一緒に作業しているために C# を使用している場合、C# を IronPython に置き換えることも難しい場合があります。
それは、C# のどのような特徴に関心があり、代替品を見つける必要があるかによって異なります。
考慮すべきことの 1 つは、IronPython がその点でどのように動作するかわかりませんが、アセンブリの共通言語サブシステム (CLS)への準拠です。CLS 準拠により、任意の .Net 言語がコードのコンパイル済み DLL にアクセスできることが保証されます。つまり、たとえば C# では、符号なし整数である public または protected メソッドまたはパラメーターを使用することはできません。IronPython で CLS 準拠のコードを実現するのがどれほど簡単かはわかりません。2008 年の興味深いブログ エントリを見つけました。
「IronPythonをC#のPythonic代替品として扱うことはできますか?」という質問。jalfによってかなりよく答えられました。質問が「IronPythonはPythonic.NET言語ですか?」だった場合 しかし、答えは絶対にイエスです。禅の原則-特に。驚き最小の原則-IronPythonとCLRの統合にも絶対に当てはまります。
そうするなら.NET 4.0の方が楽だと思います。
新しくリリースされた IronPython 2.6.1 for .NET 4.0 を使用できると思いますが、
IronPython で C# を使用することはすでに簡単です。
ここでわかるように、.NET 4.0 を使用すると、(C# から IronPython を使用して) 逆の方法で簡単に実行できます。
可能だと思いますが、ブーの方が安全な方法であることに同意します。
「複雑な」UI は通常、それを「書く」のではなく、Visual Studio 内でポイント アンド クリックで構築する必要があります。すべてのコールバックとイベント コードは、単独で挿入されます。Python側ではそのようなことはほとんどありません。私はC#にまっすぐ行くと思います。
ただし、しつこいことが 1 つあります。あなたが真の Pythonista なら、静的型付けは非常にすぐに理解でき、ランダムな人に重いオブジェクトを投げ始めたいと思うでしょう。
その時点で、C# を使用して UI を構築し、ビジネス ロジックを実装するためのスクリプト エンジンとして IronPython を組み込むことを検討してください。それは許容できる中間点かもしれません。