Erlang은 무엇으로 작성 되었나요?


111

Ericsson의 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

로부터 얼랑 자주 묻는 질문 :

10.6 최초의 Erlang 컴파일러는 어떻게 작성 되었습니까?

(또는 : Erlang은 어떻게 부트 스트랩 되었습니까? ) Joe의 말 :

먼저 Erlang을 실행하는 추상 기계를 설계했습니다. 이것을 JAM 머신이라고합니다. JAM = Joe의 추상 기계.

그런 다음 Erlang에서 JAM 및 에뮬레이터로 컴파일러를 작성하여 시스템이 작동하는지 확인했습니다. 둘 다 프롤로그로 작성되었습니다.

동시에 Mike Williams는 JAM 용 C 에뮬레이터를 작성했습니다.

그런 다음 Erlang에서 erlang-to-jam 컴파일러를 다시 작성하고 프롤로그 컴파일러를 사용하여 컴파일했습니다. 결과 개체 코드는 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 2015 년

@csyangchen 없음, 이것은 라인 카운터 파일 유형 감지에서 위양성입니다.
Hauleth

WX 바인딩의 일부는 C ++로 작성됩니다.
Roger Lipscombe

-1

Java가 Java로 작성되었다고 말할 수 없기 때문에 Erlang이 처음에는 C / C ++로 작성되었다고 말할 수 있습니다 ....하지만 프레임 워크와 일부 라이브러리입니다. Erlang은 선호하는 프로그래밍 언어이며 Telecom 시스템에 적합합니다. 신속성을 유지하기 위해 (예 : chat-bots) 컴파일러 또는 PreProcessor가 Erlang으로 작성되었음을 알고 있습니다. 그러나 언어의 다른 기능은 저수준 언어로 작성됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.