スクリプト言語をC、C ++、またはJavaに変換して、コードを書き直さずにIDEで実行できるようにすることはできますか?
5 に答える
理論的には、スクリプト言語を C、C++、または Java コードに変換することは可能です。これを行う理論的に有効な方法は、インタープリターのソース コードを取得し、それが実行されるスクリプトにハードコードすることです。結果として得られるコードは、「指定されたソース コードで C/C++/Java で記述されたインタープリターを実行する」ことになります。
実際には、通常、元のコーディング スタイルを維持しながら、スクリプト言語から他のターゲット言語に翻訳する良い方法はありません。各言語には独自の構造、イディオム、および特異性があり、ソース スクリプト言語からターゲット言語に翻訳する際に、元の構造の多くが失われます。とはいえ、パフォーマンス上の理由からこの種の変換を行うプロジェクトは数多くあります。たとえば、Facebook の HipHop コンパイラは、効率的な理由から PHP を C++ に変換します。ただし、結果のコードは人間が読むことを意図したものではありません。
要するに、はい、それは可能ですが、きれいなコードになる方法ではありません。
Python から C++ へのトランスレータの例については、shedskinを参照してください。完璧ではありません。翻訳できるコードにはいくつかの制限があります。しかし、一般的には機能します。
この場合、そうする主な理由は、他の既存の C++ ソフトウェアとの統合の速度と容易さです。
C++、Java、Javascript、C#、およびその他のいくつかの言語に翻訳できるHaxeと呼ばれるプログラミング言語があります。この言語は比較的最近登場したもので、できるだけ多くのターゲット言語に翻訳されるように設計されています。
理論的には、可能です。スクリプト言語と「仮想マシン」をサポートする言語によっては、これを (半) 自動的に行うツールがあります。言語の解釈が多ければ多いほど、コードを翻訳できる可能性は低くなります (たとえば、HTML Web ページをネイティブ C に翻訳するのは、matlab コードを C や C++ に翻訳するのとは対照的に、ばかげています)。一般に、コードを変換するための汎用ツールは、生成されたコードをコンパイルして実行できるほど十分に優れていることはめったにありません。非常に多くの場合、ほとんどの構文変換 (基本的に検索と置換操作) と、より高度な処理を実行します。しかし、ほとんどの場合、まだやらなければならない重要な作業があります (Google トランスレータを使用して Web ページをある言語から別の言語に翻訳するなど)。
しかし、私の意見では、コード変換は非常に危険なビジネスであると言えます。ほとんど知らないコードを手動で書き直すと、タイプミスやその他の間違いを犯しやすくなります。自動翻訳ツールは、その面でもそれほど優れたパフォーマンスを発揮しません. そして、コードを翻訳したら、バグがあればどうしますか? どのようにそれらを見つけることになっていますか? それらを修正しますか?実際のコードについてほとんど知らない場合。これは急速に悪夢のような体験になる可能性があります。過去にやったことがありますが、もうやらないでください!
ところで: 別の言語で記述されたプロジェクト内でスクリプト言語で記述されたコードを使用する場合は、あるコードを別の言語に翻訳する代わりに、言語のインターフェイスを検討することをお勧めします。ほとんどのプログラミング言語とスクリプト言語には、他の言語 (DLL や COM/ActiveX コンポーネントなど) とのインターフェイス機能があります。可能な限り、元の言語でコードを保存することをお勧めします。
C の場合、C に少し似たスクリプト言語がいくつかあります。おそらくそれが出発点です。ルアーが思い浮かびます。
Java には、単純化された Java コードをスクリプトとして実行するスクリプト言語 beanshell/bsh があります。しかし、そこから Javacode を作成するには、それを書き直す必要があります。これを自動的に実現するプロセスがどれほど簡単かはわかりません。
別のアプローチは次のとおりです。Cインタープリターを作成して、Cコードをスクリプに使用できるようにし、必要なときにコンパイルするだけです。