6

自分のプログラミング言語用のコンパイラを作りたいです。人気のあるバックエンドの選択肢は、C、Java、LLVM、JVM バイトコード、.Net バイトコード、gcc、アセンブリのようです... ここでは、バックエンドとして Go の可能性を検討しています。

Goは明らかに高速な言語であり、ガベージ コレクションがあり、コンパイル時間も高速です。また、移植可能で無料です (BSD スタイルのライセンス)。これらすべてにより、Go はコード生成のターゲットとして適切な選択になると思います。おそらく、他のオプションよりも優れていると思います...だから、まだそれを行っている人を見つけられないことに驚いています。

Go はコード生成に適しているでしょうか? そうしている既存のプロジェクトを指摘できますか、それとも存在しない理由を説明できますか? または、Go 言語をバックエンドとして使用した経験はありますか? 私が気づいていない欠点はありますか?

(私は特に Go here に興味があります。別のバックエンド オプションを指すだけではありません。すでに答えている質問があります。)

4

3 に答える 3

6
  • Go をバックエンドとして使用している言語プロジェクトは知りません。
  • Go、コンパイラのバックエンドや IR として設計されていません。
  • Go低レベル (GC などを除いて少し C に似ている) であり、IMO は、Go が提供するものと類似/同等/近いセマンティクスを持つ一部の言語/言語クラスのバックエンドとして使用できます。
  • あなたが設計している言語についてもっと知りたいです;-)
于 2012-08-18T11:37:11.467 に答える
0

Goで書かれたコンパイラとGoのサブセットのアセンブリであると説明されているGoGoと呼ばれるこのプロジェクトがあります。基本的には、Goの簡略版のようです。自分の言語を解析するように変更することから始めることができると思います。

また、独自のコンパイラを備えたGoのスクリプト言語のようなサブセットも覚えています。GoScriptと思っていたのですが、同じ名前のプロジェクトが3つ以上あるようで、見つかりませんでした。

私はそれをして、あなたの経験を共有すると思います。ただし、バックエンドではなく、Goが中間言語になります。少なくともそれはあなたがやりたいと思うことです。

乾杯!

于 2012-08-18T17:26:00.593 に答える
-1

言語のバックエンドとして Go を使用する場合、言語は Go に非常に似ています。

実装できるようになります

  • ルーチンに行く
  • チャンネルに行く
  • GC

あなたは持っていないでしょう

  • スレッド

Goはとても良い言語です。Go よりも優れた言語を作成するために何を追加できるかわかりません。

于 2012-08-18T10:01:24.090 に答える