JavaScript開発を容易にするために CoffeeScript を使用しています。これは、JavaScriptにコンパイルされる簡潔な構文を持つ言語です。
では、C/C++ソースコードにコンパイルして、構文を簡素化したり、機能を強化したりする確立されたプログラミング言語は何ですか?
言語 Haxe は、C++、C#、Java、JavaScript、Python(実験的)、PHP、Flash、およびNekoVMに出力できます。
[〜#〜] ooc [〜#〜] は非常に新しいですが、かなりいいです。
HipHop があり、PHPプログラムをC++に変換します。
GHC(Glasgow Haskell Compiler)オプションを使用していました(-fvia-c
)Cにコンパイルします。
ただし、v7以降では、LLVMを使用して、外部Cコンパイラーを経由するのではなく、ネイティブコードを生成します。
引用 Qt ドキュメント:
メタオブジェクトコンパイラmocは、QtのC++拡張機能を処理するプログラムです。 mocツールは、C++ヘッダーファイルを読み取ります。 Q_OBJECTマクロを含む1つ以上のクラス宣言を見つけると、それらのクラスのメタオブジェクトコードを含むC++ソースファイルを生成します。とりわけ、信号とスロットのメカニズム、実行時の型情報、および動的プロパティシステムにはメタオブジェクトコードが必要です。 mocによって生成されたC++ソースファイルをコンパイルし、クラスの実装とリンクする必要があります。
だから、C++がC++になっているようなもので、探しているものに収まるかどうかはわかりません。
プログラミング言語IBM Informix 4GLは、Cコードへのマルチステップ変換を経て、独自のランタイムライブラリ、ESQL/C(Cの埋め込みSQL)ランタイムライブラリ、およびシステムのCライブラリとコンパイルおよびリンクされます。
program.4gl
-元のソースコードprogram.4ec
-ESQL/Cおよび拡張入力操作が組み込まれたCコードprogram.ec
-ESQL/Cが埋め込まれたCコードprogram.c
-純粋なCコードprogram.o
-オブジェクトコードprogram
-実行可能.4ec
フェーズは、一種の歴史的な事故です。元々、ESQL/Cコンパイラは拡張入力操作とESQL/Cの両方を処理しましたが、拡張操作がESQL/Cコンパイラから削除されたとき(ESQL/Cライブラリとコンパイラが大幅に書き換えられたとき)、拡張入力操作元のESQL/Cコンパイラからコードを処理するコードを作成することで処理されました。
かなりの数の人々が、別の言語からI4GLソースを記述するコードジェネレーターを作成したり、I4GLコンパイラーに送信される前に密接に関連するソースコードをI4GLにプリプロセスしたりしています。
Embeddable Common LISP(ECL) は、Common LISPをCにコンパイルできます。
LLVMのCバックエンドを作成できれば、ほとんど何でもCに変換できると思いますが、より深い質問は「なぜ?」今日これを行うツールがないのは、Cにコンパイルする場合、途中まで行って、代わりに中間のマシンコード言語をターゲットにしないのはなぜですか? (たとえば、LLVMまたはJVM)
昔は、まともなvm言語が不足していたため、Cにコンパイルするという考えはもう少し防御的でしたが、今日ではそれを行う正当な理由はあまりありません。とは言っても、特定のインタープリター言語を取り込んでC/C++にコンパイルしようとするプロジェクトはまだたくさんあります。たとえば、C++コンパイラへのpythonは次のとおりです。
ほとんどの主要なプログラミング言語は Turing-complete であるため、実際には同等であり、それらに記述されたプログラムは相互に翻訳できると主張することができます。
ただし、他の人が言ったように、Cコードを生成する(または開発の初期段階にあった)バックエンドが存在する言語はかなりあります。これは、言語実装からバイナリコード生成に伴う複雑さを取り除いたためです。 。これは、コードが実際に読み取り可能であることを意味するものではありません(意図しない)。コンパイルされた形式よりも読みやすいだけです。
リストへの私の貢献に関しては、 Lex および yacc "プログラム"(それらが考えられる場合)は通常Cコードに変換されます-恐ろしく絡み合った混乱、それでもCコードは...
ClangはC++をCにコンパイルできると聞いています。
ほとんどの言語を使用してCコードを生成できますが、実際に何をしようとしているかによって異なります。あなたは実際にコードを読むことができるようにしたいですか? Windowsアプリケーションを作成しようとしていますか?
学ぶのが簡単で普遍的に有用な言語を探しているなら、Pythonは常に良い選択であり、C/C++ができることは何でもできます。
OracleのPRO * C/C++は埋め込みSQL言語です。 C/C++にSQLステートメントを含めることができます。SQLステートメントは、必要なC/C++ SQLライブラリへの関数呼び出しで埋め込みSQLステートメントを置き換えるプリコンパイラーによって処理されます。プリコンパイラからの出力は標準C/C++であり、実行可能ファイルにコンパイルできます。
http://en.wikipedia.org/wiki/Pro*C
http://download.Oracle.com/docs/cd/B19306_01/appdev.102/b14407/toc.htm
Matlab(Embedded Matlab)のサブセットをCにコンパイルできます。埋め込みコーダーツールボックスが必要です。