Erlangは何で書かれていますか?


111

エリクソンのErlangとErlang / OTPの実装は、どのように書かれてコンパイルされていますか?アセンブリ、C、またはErlang自体ですか?

更新1:DrJokepuに感謝します。私が正しく理解していれば、ErlangソースからVMへのコンパイラはErlang自体で作成されています。ただし、VMはCで記述されています。

更新2:Hynek-Pichi-Vychodilは多くの詳細を指摘しました。

  • VMとHWが相互作用するドライバー:C
  • コンパイラ(VMへ)およびライブラリ:Erlang。
  • 拡張機能:ポートまたはErlangノードをその言語で記述することにより、任意の言語で可能です。

17
Erlangはオープンソースです。コードをチェックして、見てみましょう!
rfunduk

回答:


140

Erlang自体はErlangで書かれています。奇妙に聞こえますか?はい、それは部分的に真実であるためです。それをもっと詳しく見てみましょう:

  1. ErlangプリプロセッサはErlangで書かれています。
  2. ErlangパーサーはErlangで書かれています。
  3. BEAM(バイトコードVM)へのErlangコンパイラはErlangで書かれています。
  4. HiPE(ネイティブVM拡張)へのErlangコンパイラはErlangで書かれています。
  5. Erlang VM BEAMとHiPEは主にCで書かれています。
  6. リンクされたドライバーは主にCで書かれています(それらはVMに接続され、外部との通信に使用されます)。
  7. OTPはErlangで書かれています。
  8. 別のポートまたはノードは任意の言語で記述できます。

91

Erlang FAQから:

10.6最初のErlangコンパイラはどのように書かれたのですか?

(または:Erlangはどのようにしてブートストラップされましたか?)Joeの言葉で:

まず、Erlangを実行する抽象マシンを設計しました。これはJAMマシンと呼ばれていました。JAM = Joe's Abstract Machine。

次に、ErlangからJAMまでのコンパイラーとエミュレーターを作成して、マシンが機能するかどうかを確認しました。これらは両方ともプロローグで書かれました。

同時に、Mike WilliamsがJAM用のCエミュレーターを作成しました。

次に、Erlangでerlang-to-jamコンパイラーを書き直し、prologコンパイラーを使用してコンパイルしました。結果のオブジェクトコードは、Cエミュレーターで実行されました。その後、プロローグを捨てました。


1
ありがとう!この見積もりの​​出典は何ですか?
Max Heiber

15
  • erlangコードの65.9%はErlangで書かれています。
  • erlangの13.4%はXMLで記述されています。
  • erlangの13.6%はCで書かれています。
  • erlangの1.4%はC ++で書かれています
  • ...

あなたはohlohサイトでライブとアップデートの統計を見ることができ、このレポートはメインのerlang gitリポジトリから生成されます。


私はちょうどc ++で書かれている部分に興味があります。
csyangchen

@csyangchenなし、これはラインカウンターのファイルタイプ検出での誤検知です。
Hauleth

WXバインディングの一部はC ++で記述されています。
Roger Lipscombe

-1

Erlangは、Javaがjavaで書かれているとは言えないので、最初はC / C ++で書かれたと言えますが、それはフレームワークと一部のライブラリです。Erlangについては、それが優先プログラミング言語であり、テレコムシステムに適しているため...(チャットボットなどで)迅速性を維持するために、コンパイラーまたはプリプロセッサーがErlangで記述されていることを知っています。しかし、言語の他の機能は低水準言語で書かれています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.