迅速な開発に使用できる C++ (perl など) のスクリプト言語はありますか?また、C/C++ プログラムに変換して展開のパフォーマンスを向上させるツールを使用できますか?
編集:
いくつかのコメントに基づいて、質問を明確にさせてください。スクリプトを変更せずに、スクリプトを C/C++ プログラムまたはバイナリに変換できるはずです。
C/C++ インタープリターを使用すると、C/C++ をスクリプト言語として使用できます。
Ch : http://www.softintegration.com/
無料の Standard Edition を備えた商用 C/C++ インタープリター。さまざまな一般的なライブラリとウィンドウ ツールキットをサポートしています。
CINT : http://root.cern.ch/drupal/content/cint
アクティブに開発されたオープン ソース (MIT ライセンス) C/C++ インタープリター。CERNのROOT 環境の一部として開発されました。多くの物理学者が使用。
ccons : http://code.google.com/p/ccons/
LLVMとその新しい C フロントエンド (clang)を使用するインタラクティブな C コンソール。積極的に開発中
UnderC : http://home.mweb.co.za/sd/sdonovan/underc.html
オープンソース (LGPL) C++ インタープリター。少し古いようです(2002年)。
注: これまでのところ、ChとCINTのみを試しました。リストをより完全にするためにcconsとUnderCを追加しました。
(ほとんど) C++ に非常に似ているスクリプト言語に興味がある人は、angelscript (ZLIB)を調べてみてください。
AngelCode Scripting Library (AngelScript とも呼ばれます) は、アプリケーションが外部スクリプトを介して機能を拡張できるように設計された、非常に柔軟なクロスプラットフォーム スクリプト ライブラリです。アプリケーション プログラマーとスクリプト ライターの両方にとって、使いやすいコンポーネントになるように最初から設計されています。
プロキシ関数を必要とせずに、標準の C 関数と C++ メソッドを呼び出せるようにするための努力がなされました。アプリケーションは、スクリプトが操作できる関数、オブジェクト、およびメソッドを登録するだけで、コードを操作する必要はありません。アプリケーションが内部的に使用する同じ機能をスクリプト エンジンでも使用できるため、機能を重複させる必要がありません。
スクリプト作成者にとって、スクリプト言語は広く知られている C/C++ の構文に従いますが (わずかな変更があります)、ポインタやメモリ リークを心配する必要はありません。ほとんどのスクリプト言語とは対照的に、AngelScript はホスト アプリケーションとのより効率的な通信のために共通の C/C++ データ型を使用します。
詳細については、http ://www.angelcode.com/angelscript/sdk/docs/manual/index.html をご覧ください。
C++用に設計された新しいパッケージChaiscriptがあります。それは比較的新しく、まだ完全に安定していません。
pawn は、C に似た構文を持つシンプルで型のない 32 ビット拡張言語です。ポーンの「ソース」プログラムは、実行速度を最適化するためにバイナリ ファイルにコンパイルされます。ポーン コンパイラは、後で抽象マシンで実行される P コード (またはバイトコード) を出力します。実行速度、安定性、シンプルさ、および小さなフットプリントは、言語と抽象マシンの両方にとって不可欠な設計基準でした。
この言語は c 構文に非常に似ているため、c++、c、c#、java を実行したことがある人なら誰でもそれを読むことができ、単純化されているため、コーダーはそれを読むことができません。この言語は現在、 halflife 1およびhalflife2サーバーに対するスクリプト作成など、あらゆる場所で使用されています。
多くのプロジェクトは、たとえば C++ と Python を組み合わせています。たとえば、 boost.pythonを参照してください。
私はRを好み、R から C++ へのRcppインターフェイスを使用します。
どちらの場合も、プロトタイピング用のスクリプト言語と、パフォーマンス用の C++ への簡単な「接着剤」を提供します。
Python の場合、psycoが役立つ場合があります。ただし、perl に相当するものがあるかどうかはわかりません。
タスクに使用する言語を選択するときは、その仕事に最も適した言語を選択する方が便利だと思います。通常の条件下でスクリプト言語が提供できる以上のパフォーマンスがジョブで要求される場合、コードを高速化するために後ろ向きに曲がるよりも、単に切り替える方が通常は優れています。
質問はさまざまな方法で解釈できます...
アプリケーションの一部を既に C++ でコーディングしており、最終的にパフォーマンスを向上させるために C++ コードに追加するモジュールまたはスクリプトを追加する必要がある場合は、堅牢で非常に完全なマルチプラットフォーム フレームワークであるQtを使用できます。
スクリプト(ECMAScript、Javascript の標準化バージョン) のサポートが含まれており、必要に応じてそこから C++ オブジェクトにアクセスできます。また、プラグインのサポートも提供します。
そのアプローチでは、3 つのステップで進めることもできます。
もう 1 つのオプションは、Python インタープリターをコードに埋め込むことですが、おそらくより多くの作業が必要になります。
GML : www.yoyogames.com
D プログラミング言語をスクリプトまたは高速コンパイル出力の両方として使用してコーディングできます。
これは、D とその利点について詳しく説明している記事 「The Case for D」です。
Cling は c++ clingのインタープリターです。
あなたの質問を理解しているかどうかはわかりませんが、C++ コードとやり取りできる独自のスクリプト言語を実装しようとしている場合は、boost::spirit をご覧ください。文法を指定するだけで、スクリプト言語は C++ で指定したことを実行できます。C++ 演算子を使用して文法を指定すると、非常に簡単で直感的になります。
それは私が最近のニーズに現在使用しているものであり、それはうまく機能するようです. 文法を指定すると、c++ オブジェクトに完全にアクセスでき、ユーザーは非常に単純な言語を習得できます (言語が c++ 自体である CINT と比較して)。
コンパイル時間は今のところ少し遅いですが、非常に複雑な言語を実装する必要がなければ、扱いやすいはずです (c++ のようなもののコンパイル時間は見たくありません)。また、最新バージョンのドキュメントは少し不足しています (最新バージョンは見つけるのが少し難しいです) が、比較的使いやすいので、必要に応じてチェックする価値があるかもしれません。