Erlang được viết bằng gì?


111

Việc triển khai Erlang và Erlang / OTP của Ericsson được viết và biên dịch bằng gì? Là lắp ráp, C hay Erlang chính nó?

Cập nhật 1: Cảm ơn DrJokepu. Nếu tôi hiểu chính xác, trình biên dịch nguồn-to-VM của Erlang được viết bằng chính Erlang. Nhưng VM được viết bằng C.

Cập nhật 2: Hynek-Pichi-Vychodil đã chỉ ra rất nhiều chi tiết.

  • Trình điều khiển tương tác VM và HW: trong C.
  • Trình biên dịch (sang VM) và thư viện: trong Erlang.
  • Tiện ích mở rộng: Có thể bằng bất kỳ ngôn ngữ nào bằng cách viết một cổng hoặc một nút Erlang bằng ngôn ngữ đó.

17
Erlang là mã nguồn mở. Hãy kiểm tra mã và xem qua!
rfunduk

Câu trả lời:


140

Bản thân Erlang được viết bằng Erlang. Am thanh la? Có, bởi vì nó chỉ đúng một phần. OK, hãy xem nó chi tiết hơn:

  1. Bộ tiền xử lý Erlang được viết bằng Erlang.
  2. Trình phân tích cú pháp Erlang được viết bằng Erlang.
  3. Trình biên dịch Erlang sang BEAM (máy ảo mã byte) được viết bằng Erlang.
  4. Trình biên dịch Erlang sang HiPE (phần mở rộng VM gốc) được viết bằng Erlang.
  5. Erlang VM BEAM và HiPE được viết chủ yếu bằng C.
  6. Trình điều khiển được liên kết chủ yếu được viết bằng C. (Chúng được cắm vào máy ảo và phục vụ giao tiếp với thế giới bên ngoài.)
  7. OTP được viết bằng Erlang.
  8. Các cổng hoặc nút khác có thể được viết bằng bất kỳ ngôn ngữ nào.

91

Từ Câu hỏi thường gặp về Erlang :

10.6 Trình biên dịch Erlang đầu tiên được viết như thế nào?

(hoặc: Erlang được khởi động như thế nào? ) Theo lời của Joe:

Đầu tiên tôi thiết kế một máy trừu tượng để thực thi Erlang. Đây được gọi là máy JAM; JAM = Máy trừu tượng của Joe.

Sau đó, tôi viết một trình biên dịch từ Erlang sang JAM và một trình giả lập để xem máy có hoạt động hay không. Cả hai điều này đã được viết trong phần mở đầu.

Đồng thời Mike Williams đã viết một trình giả lập C cho JAM.

Sau đó, tôi đã viết lại trình biên dịch erlang-to-jam trong Erlang và sử dụng trình biên dịch prolog để biên dịch nó. Mã đối tượng kết quả đã được chạy trong trình mô phỏng C. Sau đó, chúng tôi bỏ đi phần mở đầu.


1
Cảm ơn! Nguồn cho trích dẫn này là gì?
Max Heiber

15
  • 65,9% mã erlang được viết bằng Erlang.
  • 13,4% erlang được viết bằng XML.
  • 13,6% erlang được viết bằng C.
  • 1,4% erlang được viết bằng C ++
  • ...

Bạn có thể xem thống kê trực tiếp và cập nhật trong trang web ohloh , báo cáo này được tạo từ kho lưu trữ chính của erlang git.


Tôi chỉ tò mò những phần nào được viết bằng c ++.
csyangchen

@csyangchen không có, đây là phát hiện loại tệp bộ đếm dòng dương tính giả.
Hauleth

Các phần của ràng buộc WX được viết bằng C ++.
Roger Lipscombe

-1

Tôi có thể nói rằng Erlang ban đầu được viết bằng C / C ++ vì tôi không thể nói rằng Java được viết bằng java .... nhưng Đó là khung và Một số thư viện. Về Erlang, Vì nó là ngôn ngữ lập trình ưa thích và phù hợp với hệ thống Viễn thông ... để duy trì tính nhanh chóng (ví dụ: trong chat-bot) Tôi biết rằng trình biên dịch hoặc Bộ xử lý tiền của nó được viết bằng Erlang. Nhưng Các tính năng khác của ngôn ngữ được viết bằng ngôn ngữ Cấp thấp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.