13

標準のpythonインストールに付属するチュートリアルを使用してpythonを学習していました。著者が python について述べている利点の 1 つは、「拡張言語を使用できるプログラムを作成したことがあり、アプリケーション用にまったく新しい言語を設計および実装したくない」ということです。 Python を使用してインタラクティブに拡張できるプログラムを (C# を使用して) 設計します (これを可能にするには、.net プログラム用にある種の「シェル」または「インタラクティブ」モードを作成する必要があると想像します)。 ) ?

対話型シェルを持つ .NET プログラムを設計する方法についての指針はありますか。次に、シェルでpythonスクリプトを使用して、プログラムを「拡張」または対話したいと思います。

編集:この質問は、PDC 2008 で Miguel de Icaza がインタラクティブな csharp コマンド プロンプトを示したデモに部分的に由来しています。C# 4.0 には、この「サービスとしてのコンパイラ」機能もあると思います。私はそれを見て、インタラクティブなシェルを備えた .NET で Windows または Web プログラムを設計できたらどんなにクールだろうと考えました。また、Python のようなスクリプト言語を使用して、プログラムが提供する機能を拡張できます。

また、Steve Yegge のエッセイの 1 つを読んで、この種の機能について考え始めました。彼は、永遠に生きるシステムについて語っています。

4

6 に答える 6

12

これはIronPythonの優れた使い方のように思えます。

C# から簡単なスクリプト ホストをセットアップして、IronPython スクリプトへの呼び出しを許可したり、IronPython が C# コードを呼び出したりできるようにするのは、かなり簡単です。CodePlex サイトには、これを行う方法を示すサンプルと例があります。

例とサンプルのもう 1 つの適切なサイトは、ironpython.info です。

一般的な DLR 中心の方法ではありますが、これはまさにあなたの質問に答える例専用のページです。これにより、IronPython、IronRuby、またはサポートしたい任意の DLR 言語をホストできます。

私は過去にこれらの例を使用して、ScrewTurn Wikiのプライベート インストール内に IronPython 環境を作成しました。これにより、非常に表現力豊かな Wiki テンプレートを作成でき、一般的に非常に役立つことが証明されました。

于 2009-04-30T19:45:40.223 に答える
3

同じ問題の解決策を探していたところ、IronTextBox が見つかりました: http://www.codeproject.com/KB/edit/irontextbox2.aspx

現在のバージョンでは少し調整が必要ですが、必要なものはすべて揃っているようです。最初にコンパイルしてから、シェルからスコープにアクセスしたい変数を追加しました。

于 2009-04-30T20:53:52.930 に答える
1

拡張言語としてのPythonは、「EmbeddingPython」と呼ばれます。

基本的にPythonインタープリターを呼び出して、Pythonソースを実行させることにより、C++からPythonモジュールを呼び出すことができます。これは埋め込みと呼ばれます。

これはCおよびC++で機能し、おそらくC#でも同様に機能します。

いいえ、「シェル」は必要ありません。Pythonはインタラクティブにすることができますが、それはまったく要件ではありません。

于 2009-04-30T20:05:49.597 に答える
1

これは、C#アプリケーションのスクリプトにIronRubyを追加することに関するブログ投稿へのリンクです。

http://blog.jimmy.schementi.com/2008/11/adding-scripting-to-c-silverlight-app.html

この原則は、IronPythonを使用する場合にもうまく機能します。

于 2009-04-30T20:15:16.737 に答える
1

新しい言語の学習を避けることが目標である場合は、CSScript.Netおよび C# または VB で記述された埋め込みスクリプトをアプリケーションに使用できます。CSScript を使用すると、CLR に完全にアクセスできます。スクリプト実行の 3 つの異なるモデルがサポートされているため、現在のアプリ ドメイン内のオブジェクトを参照するスクリプトを実行したり、リモート処理を使用して実行したり、シェルとして実行したりできます。

現在、アプリケーション オブジェクトを設定するための「グルー」コードとして CCScript を使用しています。これは、Boo を使用する場合と似ています。

このリンクをクリックすると、概要を説明するコード プロジェクトの記事が表示されます。

于 2009-06-27T11:33:14.207 に答える
0

私はあなたが何を意味するのか分かりません

「拡張」またはプログラムと対話する

だから私はあなたの質問に答えることができません。例を挙げていただけますか?

mono には、オープン ソースのインタラクティブな C# シェルがあります: http://www.mono-project.com/CsharpRepl

Python、.Net、および言語拡張が好きな人は、おそらくBoo over Iron python を気に入るはずです。Boo には、オープン ソースのインタラクティブ シェルも付属しています。

私は同意しません

「アプリケーション用にまったく新しい言語を設計して実装したくない」

単純な DSL を作成することは、以前ほど難しくありません。実装に数日もかからず、数時間で完了します。面白い選択肢かもしれません。

于 2009-04-30T19:52:54.357 に答える