既存のコードベースでサポートするスクリプト言語はどれですか?

StackOverflow https://stackoverflow.com/questions/15349

  •  08-06-2019
  •  | 
  •  

質問

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

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

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

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

解決

私自身の経験に基づいて:

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

私たちは幸運にもスクリプトの黄金時代に生きているので、人気のあるスクリプトのいずれかを選択すれば、間違った選択をすることは困難です。

他のヒント

ちょっと遊んでみました クモザル. 。少なくともあなたの状況では検討する価値があるようです。Lua についても良いことを聞いています。JavaScript スクリプト言語を使用することについての大きな議論は、多くの開発者がすでにそれを知っており、おそらく最初から使いやすいのに対し、Lua は少し学習曲線が必要になる可能性が高いということです。

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

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

Lua は、私がこれまで使用した中でコード ベースにバインドするための最も単純な C API を備えています。実際、私は通常、バインディングを手で素早く巻きます。一方、多くの場合、次のようなジェネレーターがなければそうすることは考えられません。 しゃがむ ほかの人のため。また、通常、代替手段よりも高速かつ軽量です。 コルーチン これは、他の言語ではほとんど提供されていない非常に便利な機能です。

エンジェルスクリプト

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

スクリプト作成者にとって、スクリプト言語は広く知られている C/C++ の構文 (若干の変更はあります) に従いますが、ポインターやメモリ リークを心配する必要はありません。

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

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

Tcl は「接着」言語として優れており、アプリケーションのパフォーマンスにそれほど重要ではない部分についてはスクリプト言語の利点を活用しながら、パフォーマンス重視の関数を C で作成できます。

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

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

すでにいくつかの優れた提案がありましたが、Perl は C/C++ に呼び出すこともできる、または C/C++ に呼び出すこともできるということだけを述べておきたいと思いました。

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

新製品の成長に伴う痛みを我慢したい場合は、 オウム VM。このページにリストされているすべてではないにしても、多くの言語がサポートされています。残念ながらまだ完成していませんが、それでも実稼働環境での使用を止める人はいません。

おそらくほとんどの人は、最もよく知っているスクリプト言語を挙げると思います。私の観点からすると、Tcl は C とのインターフェイスに特化して設計されているため、問題の領域はその言語に合わせて調整されています。ただし、Python、Perl、または Lua が適切であると確信しています。学習時間を短縮できるため、現在のチームに最も馴染みのある言語を選択する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top