erlang - 한글 - 얼랭이




Erlang은 무엇으로 쓰여 있습니까? (2)

Erlang 자체는 Erlang으로 작성되었습니다. 이상하게 들리니? 네, 부분적으로 만 사실이기 때문에 그렇습니다. 확인해보십시오.

  1. Erlang 전처리 기는 Erlang으로 작성되었습니다.
  2. Erlang 파서는 Erlang으로 작성되었습니다.
  3. Erlang 컴파일러는 Erlang으로 BEAM (바이트 코드 VM)을 작성합니다.
  4. Erlang에서 HiPE (네이티브 VM 확장자) 컴파일러는 Erlang으로 작성되었습니다.
  5. Erlang VM BEAM 및 HiPE는 주로 C로 작성됩니다.
  6. 링크 된 드라이버는 주로 C로 작성됩니다 (VM에 연결되어 외부와 통신합니다).
  7. OTP는 얼랭으로 작성되었습니다.
  8. 다른 포트 또는 노드는 모든 언어로 작성할 수 있습니다.

Ericsson의 Erlang 및 Erlang / OTP 구현은 무엇이며 어떻게 작성되고 컴파일됩니까? 어셈블리, C 또는 얼랭 자체가 있습니까?

업데이트 1 : DrJokepu에게 감사드립니다. 내가 올바르게 이해한다면 Erlang source-to-VM 컴파일러는 Erlang 자체로 작성되었다. 그러나 VM은 C로 작성됩니다.

업데이트 2 : Hynek-Pichi-Vychodil은 많은 세부 사항을 지적했습니다.

  • VM 및 HW 상호 작용하는 드라이버 : C.
  • 컴파일러 (VM 용) 및 라이브러리 : Erlang.
  • 확장 기능 : 해당 언어로 포트 또는 얼랭 노드를 작성하여 모든 언어로 가능합니다.

Erlang FAQ에서 :

10.7 Erlang 컴파일러는 어떻게 작성 되었습니까?

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

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

그런 다음 Erlang에서 JAM으로 컴파일러를 작성하고 에뮬레이터를 사용하여 기계가 작동하는지 확인합니다. 이 두 가지 모두 프롤로그에 기록되었습니다.

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

그런 다음 Erlang에서 erlang-to-jam 컴파일러를 다시 작성하고 프롤로그 컴파일러를 사용하여 컴파일했습니다. 결과 오브젝트 코드는 C 에뮬레이터에서 실행되었습니다. 그런 다음 우리는 프롤로그를 버렸다.





bootstrapping