web-dev-qa-db-ja.com

C / C ++ソースにコンパイルされるプログラミング言語ですか?

JavaScript開発を容易にするために CoffeeScript を使用しています。これは、JavaScriptにコンパイルされる簡潔な構文を持つ言語です。

では、C/C++ソースコードにコンパイルして、構文を簡素化したり、機能を強化したりする確立されたプログラミング言語は何ですか?

57
Jeff

言語 Haxe は、C++、C#、Java、JavaScript、Python(実験的)、PHP、Flash、およびNekoVMに出力できます。

15
M.Stoffregen

Vala および Genie は、GObject型システムを使用してCコードにコンパイルする言語です。私はそれらを使用したことはありませんが、面白そうです。 GObjectはGTKで使用される型システムですが、GTKから分離できると思います。

13
Sean

[〜#〜] ooc [〜#〜] は非常に新しいですが、かなりいいです。

9
tsg

HipHop があり、PHPプログラムをC++に変換します。

8
GWW

GHC(Glasgow Haskell Compiler)オプションを使用していました(-fvia-c)Cにコンパイルします。

ただし、v7以降では、LLVMを使用して、外部Cコンパイラーを経由するのではなく、ネイティブコードを生成します。

8
stusmith

引用 Qt ドキュメント:

メタオブジェクトコンパイラmocは、QtのC++拡張機能を処理するプログラムです。 mocツールは、C++ヘッダーファイルを読み取ります。 Q_OBJECTマクロを含む1つ以上のクラス宣言を見つけると、それらのクラスのメタオブジェクトコードを含むC++ソースファイルを生成します。とりわけ、信号とスロットのメカニズム、実行時の型情報、および動的プロパティシステムにはメタオブジェクトコードが必要です。 mocによって生成されたC++ソースファイルをコンパイルし、クラスの実装とリンクする必要があります。

だから、C++がC++になっているようなもので、探しているものに収まるかどうかはわかりません。

7

プログラミング言語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にプリプロセスしたりしています。

4

Embeddable Common LISP(ECL) は、Common LISPをCにコンパイルできます。

4
sigjuice

LLVMのCバックエンドを作成できれば、ほとんど何でもCに変換できると思いますが、より深い質問は「なぜ?」今日これを行うツールがないのは、Cにコンパイルする場合、途中まで行って、代わりに中間のマシンコード言語をターゲットにしないのはなぜですか? (たとえば、LLVMまたはJVM)

昔は、まともなvm言語が不足していたため、Cにコンパイルするという考えはもう少し防御的でしたが、今日ではそれを行う正当な理由はあまりありません。とは言っても、特定のインタープリター言語を取り込んでC/C++にコンパイルしようとするプロジェクトはまだたくさんあります。たとえば、C++コンパイラへのpythonは次のとおりです。

http://shed-skin.blogspot.com/

3
Mikola

ほとんどの主要なプログラミング言語は Turing-complete であるため、実際には同等であり、それらに記述されたプログラムは相互に翻訳できると主張することができます。

ただし、他の人が言ったように、Cコードを生成する(または開発の初期段階にあった)バックエンドが存在する言語はかなりあります。これは、言語実装からバイナリコード生成に伴う複雑さを取り除いたためです。 。これは、コードが実際に読み取り可能であることを意味するものではありません(意図しない)。コンパイルされた形式よりも読みやすいだけです。

リストへの私の貢献に関しては、 Lex および yacc "プログラム"(それらが考えられる場合)は通常Cコードに変換されます-恐ろしく絡み合った混乱、それでもCコードは...

1
thkala

ClangはC++をCにコンパイルできると聞いています。

0
Kerrek SB

ほとんどの言語を使用してCコードを生成できますが、実際に何をしようとしているかによって異なります。あなたは実際にコードを読むことができるようにしたいですか? Windowsアプリケーションを作成しようとしていますか?

学ぶのが簡単で普遍的に有用な言語を探しているなら、Pythonは常に良い選択であり、C/C++ができることは何でもできます。

0
Chriszuma

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

0
dave

Matlab(Embedded Matlab)のサブセットをCにコンパイルできます。埋め込みコーダーツールボックスが必要です。

0
edgar.holleis