9


5

PythonからCへのコードトランスレーターを作成しますか?

Pythonプログラムを使用してCプログラムを生成するコードトランスレーターを作成するように求められました。 この問題にどのようにアプローチできますか、それとも可能ですか?

4 Answer


24


Shedskin:http://code.google.com/p/shedskin/

Boost Python:http://www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html

PyCXX:http://cxx.sourceforge.net/

Cython:http://www.cython.org/

Pyrex:http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/

psyco:http://psyco.sourceforge.net/

RPython:http://code.google.com/p/rpython/


6


ここには根本的な疑問があります:基本的に、Cをバックエンドとして使用するPythonコンパイラを作成する意図なのか、それともプログラムをCに変換し、後でCを維持するつもりなのか?

出力として(本当にreい)Cを生成するコンパイラを書くのはおそらく簡単ではありません-コンパイラはめったにありませんし、Pythonのコードを生成することは他の多くの言語よりも難しいでしょう(特に動的型付けは難しいです)コンパイルするには、少なくとも非常に効率的な出力に)。 少なくとも、パーサーは一部の言語よりもはるかに簡単です。

「翻訳する」ということは、PythonをCに読みやすく保守しやすいものに変換することを意味する場合、それはまったく別の質問です-控えめに言っても、_実質的に_より困難です。 現実的には、機械翻訳には価値があるとは思えません。通常のPythonとCでの問題へのアプローチ方法には、まともな機械翻訳への希望が大きすぎるほど大きな違いがあります。


2


Shedskinをご覧ください。 それはまさに(C ++およびPythonとそのモジュールのサブセットに対して)行われます。 ただし、この特定の問題に対処する方法として貴重な洞察を提供できる必要があります(ただし、独自の問題を作成するのは簡単な作業ではありません)。


2


私の意見では、誰もCythonに言及していないと信じることは困難です。