7

スクリプト機能を既存のコードベースに追加することを検討しており、さまざまなパッケージの長所と短所を比較検討しています。Lua はおそらく最も明白な選択肢ですが、経験に基づいて他の提案があるかどうか疑問に思っていました.

スクリプトは特定のイベントでトリガーされ、一定期間常駐する場合があります。たとえば、起動時に、スクリプトは、プログラムがユーザーにいくつかのボタンとして提示するいくつかのオプションを定義する場合があります。これらのボタンのいずれかを選択すると、プログラムは、さらにイベントが発生する可能性がある場所をスクリプトに通知します。

これらは唯一の実際の要件です。

  1. ソースからコンパイル可能なクロスプラットフォーム ライブラリである必要があります
  2. スクリプトは、登録されたコード側の関数を呼び出せる必要があります
  3. コードはスクリプト側の関数を呼び出せる必要があります
  4. C/C++ コードベース内で使用されます。
4

9 に答える 9

3

私自身の経験に基づく:

  • Python。私見これは良い選択です。多くのユーザーがいるかなり大きなコードベースがあり、彼らはそれをとても気に入っています。
  • ルビー。これを使用するGoogleSketchupなどの本当に素晴らしいアプリがいくつかあります。Sketchupプラグインを作成して、かなりいいと思いました。
  • Tcl。これは昔ながらの埋め込み可能なスクリプト言語として選択されていますが、最近はあまり勢いがありません。それは高品質ですが、彼らはハッブル宇宙望遠鏡でそれを使用しています!
  • ルア。私はそれを使って赤ちゃんのことをしただけですが、IIRCは浮動小数点の数値型しかないので、それがあなたが扱うデータにとって問題ではないことを確認してください。

私たちはスクリプトの黄金時代に生きることができて幸運です。そのため、人気のあるものから選択した場合、悪い選択をするのは難しいです。

于 2008-08-19T00:52:54.027 に答える
1

Luaは、私が今まで使用したコードベースにバインドするための最も簡単なCAPIを備えています。実際、私は通常、手作業でビンディングをすばやくロールします。一方、他の人のための小枝のようなジェネレータなしでそうすることを考えないことがよくあります。また、通常、他の言語よりも高速で軽量であり、コルーチンは他のほとんどの言語が提供しない非常に便利な機能です。

于 2008-08-19T00:56:27.093 に答える
1

元の質問では、Tclを「T」と表現していました。

Tclは、最初から組み込みスクリプト言語として設計されました。それ自体がファーストクラスの動的言語に進化しましたが、それでも埋め込み言語として世界中で使用されています。BSDライセンスの下で利用できるので、ほぼ無料です。また、ほとんどすべての最新のプラットフォームでコンパイルされ、多くはそれほど最新ではありません。また、デスクトップシステムで機能するだけでなく、モバイルプラットフォームで利用できるバリエーションもあります。

Tclは「グルー」言語として優れており、パフォーマンスを重視する関数をCで記述しながら、アプリケーションのパフォーマンスが重要でない部分に対するスクリプト言語の利点を活用できます。

Tclには、おそらく最も簡単なクロスプラットフォームGUIツールキットの1つであるファーストクラスのGUIツールキット(Tk)も付属しています。また、SQLiteや他のデータベースと非常にうまく連携し、かなり前からUnicodeのサポートが組み込まれています。

スクリプトインターフェイスが顧客に利用可能になる場合(単にエンジニアがスクリプトレベルで作業できるようにするのではなく)、言語全体を管理するルールは全部で12しかないため、Tclは非常に簡単に習得できます。 tcl 8.6の)。実際、Tclは、ドメイン固有言語を発明する方法として輝いています。これは、エンドユーザーのスクリプトソリューションとして使用されることがよくあります。

于 2008-09-18T14:16:47.637 に答える
1

AngelScript

プロキシ関数を必要とせずに、標準のC関数とC++メソッドを呼び出すことができます。アプリケーションは、スクリプトが処理できるはずの関数、オブジェクト、およびメソッドを登録するだけで、コードでこれ以上何もする必要はありません。アプリケーションが内部で使用するのと同じ機能をスクリプトエンジンでも使用できるため、機能を複製する必要がありません。

スクリプトライターの場合、スクリプト言語はC / C ++の広く知られている構文に従いますが(マイナーな変更があります)、ポインターやメモリリークについて心配する必要はありません。

于 2008-08-19T04:34:48.277 に答える
1

Spidermonkeyで少し遊んでみました。あなたの状況では、少なくとも一見の価値があるようです。Luaについても良いことを聞いています。JavaScript スクリプト言語を使用することについての大きな議論は、多くの開発者が既にそれを知っており、最初から快適に使用できるようになるということです。一方、Lua は少し習得に時間がかかる可能性が高いです。

私は完全に肯定的ではありませんが、スパイダーモンキーはあなたの4つの要件を満たしていると思います.

于 2008-08-18T23:11:01.347 に答える
1

私はこの目的のために Python を広範囲に使用してきましたが、後悔したことはありません。

于 2008-08-18T23:16:54.987 に答える
0

おそらく、最新のスクリプト/バイトコード言語を使用できます。

新製品の増大する苦痛に我慢したいのであれば、ParrotVMを使用することができます。このページにリストされているすべての言語ではないにしても、多くの言語をサポートしています。残念ながら、まだ完了していませんが、実稼働環境での使用を妨げるものはありません。

于 2008-08-21T22:51:31.657 に答える
0

すでにいくつかの優れた提案がありましたが、Perlを呼び出すこともC /C++を呼び出すこともできます。

于 2008-08-19T04:39:59.827 に答える
0

おそらくほとんどの人は、自分が最もよく知っているスクリプト言語について言及していると思います。私の見解では、Tcl は C とのインターフェイス専用に設計されているため、問題のドメインは言語に合わせて作られています。ただし、Python、Perl、または Lua は問題ないと思います。おそらく、現在のチームに最もなじみのある言語を選択する必要があります。これにより、学習時間が短縮されます。

于 2008-09-24T19:33:34.040 に答える