Подтвердить что ты не робот

Что написано в Эрланге?

Что такое реализация Erlang и Erlang/OTP от Ericsson, написанная и скомпилированная? Является ли сборка, C или Erlang самой?

Обновление 1: Спасибо DrJokepu. Если я правильно понимаю, компилятор Erlang source-to-VM написан в самом Erlang. Но VM написано на C.

Обновление 2: Hynek-Pichi-Vychodil отметил много деталей.

  • VM и HW взаимодействующие драйверы: в C.
  • Компилятор (для VM) и библиотеки: в Erlang.
  • Расширения: возможно на любом языке, написав порт или Erlang node на этом языке.
4b9b3361

Ответ 1

Сам Эрланг написан в Эрланге. Звучит странно? Да, потому что это отчасти верно. Осмотрите его более подробно:

  • Препроцессор Erlang написан в Erlang.
  • Парсер Erlang написан в Erlang.
  • Компилятор Erlang для BEAM (байт-код VM) написан в Erlang.
  • Компилятор Erlang для HiPE (собственное расширение VM) написан в Erlang.
  • Erlang VM BEAM и HiPE написаны в основном в C.
  • Входящие драйверы написаны в основном на C. (Они подключены к виртуальной машине и поддерживают связь с внешним миром.)
  • OTP написан в Erlang.
  • Другие порты или узлы могут быть записаны на любом языке.

Ответ 2

Из Часто задаваемые вопросы Erlang:

10.7 Как был записан первый компилятор Erlang?

(или: как был загружен Erlang?). Джо слова:

Сначала я разработал абстрактную машину для выполнения Эрланг. Это называлось Машина JAM; JAM = Joe Аннотация Машина.

Затем я написал компилятор из Erlang в JAM и эмулятор, чтобы увидеть, машина работала. Оба эти написанный в прологе.

В то же время Майк Уильямс написал C для JAM.

Затем я переписал erlang-to-jam компилятор в Erlang и использовал пролог компилятор для его компиляции. Полученный результат объект-код запускался в эмуляторе C. Затем мы выбросили пролог.

Ответ 3

  • 65.9% кода erlang написано в Erlang.
  • 13.4% erlang написано в XML.
  • 13.6% erlang написано на C.
  • 1.4% erlang написано на С++
  • ...

Вы можете просмотреть статистику в реальном времени и обновления на ohloh, этот отчет создается из основного репозитория erlang git.