O que está escrito em Erlang?
-
23-08-2019 - |
Pergunta
O que é a implementação de Erlang e Erlang / OTP da Ericsson escrito e compilado em? É é montagem, C ou Erlang si?
Update 1: Graças a DrJokepu. Se bem entendi, Erlang compilador fonte-para-VM está escrito em si Erlang. Mas a VM é escrito em C.
Update 2: Hynek-Pichi-Vychodil apontou um monte de detalhes
.- VM e HW interagindo drivers:. Em C
- Compiler (a VM) e bibliotecas:. Em Erlang
- Extensões:. Possível em qualquer idioma, escrevendo um porto ou um nó Erlang nesse idioma
Solução
si Erlang é escrito em Erlang. Soa estranho? Sim, porque é apenas parcialmente verdadeiro. olhar OK para ele com mais detalhes:
- Erlang pré-processador é escrito em Erlang. parser
- Erlang é escrito em Erlang.
- Erlang compilador para BEAM (byte-code VM) é escrito em Erlang.
- Erlang compilador para HiPE (extensão nativa VM) é escrito em Erlang.
- Erlang VM BEAM e HiPE é escrito principalmente em C.
- Linked-in drivers são escritos principalmente em C. (Eles estão conectados a VM e serve comunicação com o mundo exterior.)
- OTP é escrito em Erlang.
- Outro portos ou os nós podem ser escritos em qualquer idioma.
Outras dicas
A partir da Erlang FAQ :
10,7 Como o primeiro compilador Erlang são escritos?
(ou:? como foi Erlang bootstrapped ) Em palavras de Joe:
Em primeiro lugar eu projetei uma máquina abstrata para executar Erlang. Isto foi chamado a JAM máquina; JAM = Resumo de Joe Máquina.
Então eu escrevi um compilador de Erlang para JAM e um emulador para ver se o máquina funcionou. Ambos estes foram escrito em Prolog.
Ao mesmo tempo, Mike Williams escreveu um C emulador para o JAM.
Então eu reescrevi o erlang-se jam compilador em Erlang e utilizado o Prolog compilador para compilá-lo. o resultante código de objecto foi executado no emulador C. Em seguida, jogou fora prolog.
- 65,9% de código de Erlang é escrito em Erlang.
- 13,4% de Erlang é escrito em XML.
- 13,6% de Erlang é escrito em C.
- 1,4% de erlang é escrito em C ++
- ...
Você pode ver um ao vivo e atualizar estatísticas em Ohloh local , este relatório gerar a partir principal erlang git repositório.