2009-04-30 11 views
13

標準のPythonインストールに付属のチュートリアルを使用して、私はPythonを学びました。著者がPythonについて語っている利点の1つは、「おそらく、拡張言語を使用できるプログラムを作成し、アプリケーションの新しい言語を設計して実装したくない」ということです。私の質問は、私は対話的にPythonを使って拡張することができるプログラムを(C#を使って)設計しようとしています(これは可能ですが、.netプログラムのための "シェル"または "インタラクティブ"モードを作成する必要があると思います) )?.NETアプリケーション用のインタラクティブシェルを作成し、python/iron pythonのようなスクリプト言語を組み込みます。

対話型シェルを持つ.NETプログラムを設計する方法に関する指針がありますか。私は、シェルでPythonスクリプトを使用して、プログラムを「拡張」または相互作用させたいと考えています。

EDIT:この質問は、部分的に私もこの「コンパイラサービスとして」機能を持っていると思うC#4.0、彼はインタラクティブCSHARPコマンドプロンプトを示したところPDC 2008年にミゲル・デ・Icaza氏によって与えデモに由来します。私はそれを見て、インタラクティブなシェルを持つ.NETのウィンドウやWebプログラムを設計するのがいかにクールだと思ったのですか?Pythonのようなスクリプト言語を使って、プログラムによって提供される機能を拡張することができます。

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

+0

私と同じ質問:http://stackoverflow.com/questions/801432/how-to-create-idle-like-function-to-winforms-application/801443#801443 – Harriv

+0

あなたはPythonNETを使ってC# PythonとPythonからC# – denfromufa

答えて

12

IronPythonのように聞こえます。

IronPythonスクリプトを呼び出してC#コードを呼び出すことができるだけでなく、C#の簡単なスクリプトホストを設定することはかなり簡単です。 CodePlexサイトには、これを行う方法を示すサンプルと例があります。これはあなたがIronPythonの、IronRubyのをホストすることができ、または何だろう -

例やサンプルのためのもう一つの良いサイトは、例えば、一般的なDLR中心の方法ではいえ、あなたは非常に疑問に答える専用ironpython.info

here is a pageですサポートしたいDLR言語

これまで私は、プライベートインストールScrewTurn Wikiの中にIronPython環境を作成するためにこれらの例を使用しました。これは非常に表現力の高いWikiテンプレートを作成し、一般的に非常に有用であることを証明しました。

+0

Erikのリンクをありがとう。スクリプトホストをC# – Developer

+0

からどのように設定できるかを調べています。 =) –

0

私はあなたが私はあなたの質問に答えることができない「延長」またはプログラム

と対話

で何を意味するのか分かりません。あなたは例を挙げることができますか?

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

あなたはPythonのような、.NETおよび言語拡張は、おそらく鉄のpythonオーバーBoo好きになるでしょう。 Booには、オープンソースのインタラクティブシェルも付属しています。

私はそれはハード、それが作成することに使用されるようではありません

「あなたが設計し、 アプリケーションのためのまったく新しい言語を実装したくない」

に反対シンプルなDSL実装に数日かかることはありません。ほんの数時間です。興味深い選択肢かもしれない。

+0

"extend"または "interact"とは、あなたが提供したリンクのシェルに非常に似ているシェルを意味します。このシェルは、プログラムの現在の状態とシェルについての洞察を与えるコマンドを実行できるようにします私はプログラムによって提供されるいくつかのメソッドを消費し、いくつかのスクリプトを書くことによってそれを拡張することができました... – Developer

1

拡張言語としてのPythonは「Pythonの埋め込み」と呼ばれます。

あなたは、基本的にpython intepreterを呼び出してpythonソースを実行させることで、C++からpythonモジュールを呼び出すことができます。これはembeddingと呼ばれます。

これはCとC++で動作し、おそらくC#でも同様に動作します。

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

+0

ありがとうございました!!!私は、Pythonを拡張言語として使用するという私の考えを記述するための適切な用語を見つけるのに苦労していました。 – Developer

+0

.NETアプリケーションにCPYthonを埋め込むのではなく、IronPythonを使用することをお勧めします。 – Harriv

3

私は同じ問題の解決策を探して、そしてIronTextBoxを発見された:http://www.codeproject.com/KB/edit/irontextbox2.aspx

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

1

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

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

このlinkは、あなたに良い概観を提供するコードプロジェクト記事を処理します。

関連する問題