7

Ada (95, 2005) から C へのソースからソースへのコンバーター (翻訳者) はありますか? それらはどれくらい充実していますか (Ada のすべての機能を gnu c99 + pthreads + POSIX に変換できますか)?

このような ada-to-c トランスレータを重要なアプリケーションで使用することは可能ですか?

PS: C++ への翻訳者 (gnu 拡張で 2003 年まで) も大歓迎です。

PPS: 「gnu c99」という場合、C99 + ほとんどの gnu 拡張機能がサポートされていることのみを意味し、GCC を意味するものではありません。

4

2 に答える 2

9

私は、オープンソースの Ada-to-C トランスレータを知りません。私が知っていた唯一のものは、SofCheck のもので、かなり優れていたと伝えられています。

その後、SofCheck は AdaCore に買収されました。翻訳者を求めて AdaCore の Web サイトを簡単に検索しましたが、何も見つかりませんでした商用ソリューションを追求することが実行可能な選択肢である場合は、sales@adacore.com で問い合わせることができます。(少なくとも価格を取得します。)

于 2012-05-30T13:42:38.240 に答える
2

このアプリケーションに Ada を使用する非常に強い理由がない限り (たとえば、顧客がそれを要求したり、使用したい Ada でコーディングされた大きなアプリケーションが既にある場合など)、単純に噛むだけで痛みが大幅に軽減される可能性があります。よく練られた C99 または C++ でソリューションを箇条書きにしてコーディングしてください。

どうしてもというのであれば、Sofcheck の翻訳者が最適かもしれません。彼らは長い間それに取り組んできました。

それに失敗すると、Ada コンパイラの ASIS 出力から始まるトランスレータを作成する可能性があります (?)。Ada には非常に正確なセマンティクスがあり、不用意に Ada でコードを記述し、変換して実行する場合は、このセマンティクスを保持することをお勧めします。出力を最終顧客にとって「きれい」にしたい場合は、さらに多くの作業が必要になります。(長期のメンテナンスを考慮してください)。Ada のランデブーをシミュレートするためのコードの実装は、意味的に複雑であると同時に非同期であるため、かなりトリッキーになるのではないかと思います。このアプローチの本当の欠点は、手間がかかることです。たぶん、あなたの生活を続けて、Ada 以外の何かでアプリケーション自体をコーディングするだけで、それほど労力はかからないでしょう。

不十分な言語翻訳と代替方法に関する私の警告を参照してください。

于 2012-05-30T13:51:34.720 に答える