3

私は2つ(1つ?)の言語を探しています。それらの1つは、いくつかの「環境」を実行できるホストであり、2つ目は、この環境で動作する「エージェント」のスクリプトを作成するために使用できます。

いくつかの詳細:

  1. ホストは、複数の「エージェント」(埋め込み言語のスレッド)を実行できる必要があります。理想的には、一度にすべてのスレッドによって実行される命令の数を制限できます(ただし、より高度な制御方法を歓迎します)。

  2. 埋め込まれたスレッドは、ホストによって明示的に公開されたオブジェクトにのみアクセスできる必要があります

  3. 埋め込まれたスレッドは分離する必要があります。共有メモリなし、すべての通信はホスト経由で行われます

  4. 埋め込まれた言語は、動的型付けを使用して、かなり単純にする必要があります

  5. ホスティング言語はかなり高レベルである必要があります

  6. パフォーマンスは主要な関心事ではありません

私はPythonがLuaを埋め込むホスト、たとえばLunatic Python、またはJVM言語のペア(Scala / Groovy?)であると考えていましたが、埋め込まれたスレッドを実際に分離できるかどうかはわかりません(2、3を参照)。だから私はアイデア、フレームワーク、成功した実装などを探しています...

4

5 に答える 5

4

あなたがリストした条件はそれほど限定的ではないと思います。6 つの要件に該当するホスト/スレッド スクリプト言語のペアの大きなリストが見つかるでしょう。

したがって、私の最も重要な推奨事項は、意図したユーザーが最も好む言語を選択することです。

これにアプローチするには、いくつかの方法があります。ホスト言語の選択を開始する場合は、次のオプションがあると思います。

C/C++ : スレッド言語をより自由に選択したい場合は、C または C++ ホストを使用すると、ほとんどのオプションが得られます。これは、ほとんどの解釈されたスクリプト言語が C/C++ で記述されており、埋め込みのための簡単なメカニズムを備えているためです。 C/C++ アプリケーションに。スレッド言語の選択肢は、Lua、Javascript、Python、Ruby、PHP、Basic、Scheme、Pascal、Lisp などです。

Java : Java をホスト言語として使用すると、組み込みに適した少数のスクリプト言語を使用できます。ここにリストがあります

.NET : Windows で実行する場合にのみ、これを使用します。そうでない場合は回避します。Java と同様に、.NET アプリケーションに組み込むことができるインタープリターのリストがあります。

他の何か: ホスト言語として C/C++ や Java が気に入らない場合は、どの種類のホスト言語を使用するかを決める必要があります。言語。あなたは Python を可能なホスト言語として提案しましたが、これは妥当な選択だと思います。ただし、Python で Lua を使用しないことをお勧めします。これは、言語 VM レベルでデバッグする必要がある場合、デバッグの悪夢になる可能性があります。代わりに、2 つの提案をすることができます。(1) スレッド言語にも Python を使用すると、システム全体で優れた統一言語が得られます。(2) Python で書かれたネイティブ インタープリターを備えたスクリプト言語を見つけます (私が知っているものは多くありません)。Python の代わりに、Ruby、PHP、またはホスト用のその他の主要なスクリプト言語を使用できますが、いずれの場合も「

ホスト言語を探す代わりに、まず組み込み言語を選択してから、その言語を組み込むことができるホスト言語を見つけることができます。あなたは組み込み言語として Lua を提案しましたが、これも非常に良い選択肢です。Lua を使用することに決めている場合は、C または C++ をホスト言語にする必要があると思います。これにより、最適な埋め込みエクスペリエンスが得られます。

要約すると、言語のペアを選択するには、次の 2 つのアプローチのいずれかをお勧めします。

(a) 組み込み言語インタープリターがホスト言語に実装されている言語のペアを選択します。例: Lua と C++、Javascript と C++、Python と C++、Scheme と C++、Jython と Java、JRuby と Java、Rhino と Java など。

また

(b) ホストとスレッドに同じ高レベルのスクリプト言語を選択し、組み込みのスクリプトを使用せずに統合プラットフォームで作業します。例: Python と Python、Lua と Lua、Ruby と Ruby など。

検索頑張ってください!

于 2011-10-25T06:02:03.263 に答える
1

また、特にSBCLの実装を通じてCommonLispを使用することもできます。

于 2011-10-24T16:59:05.383 に答える
0

この質問が数年前のものであることは知っていますが、ObjectScript言語をお勧めします。

ObjectScript、略して OS は、新しいプログラミング言語です。無料、クロスプラットフォーム、軽量、組み込み可能、​​オープンソースです。JavaScript、Lua、Ruby、Python、PHP など、複数の言語の利点を組み合わせています。OS は Javascript の構文、lua の「複数の結果」機能、Ruby の構文シュガー、PHP と Ruby の魔法のメソッドなどを備えています。

于 2014-12-03T00:11:05.677 に答える