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

Интеграция Erlang с С++

Какие интерфейсы существуют, чтобы связать Erlang с С++?

4b9b3361

Ответ 1

  • Встроенные реализованные функции: доступна в последней версии Erlang/OTP, позволяет реализовать любую из ваших функций в C.

  • Драйвер портов: вы можете связать код C с Erlang VM и получить доступ к нему с помощью команды port_command.

  • C Узлы: с помощью библиотеки ei вы можете имитировать виртуальную машину и поговорить с вашими виртуальными машинами Erlang, используя формат распространения Erlang.

Ответ 2

Ближайшая вещь, которую я знаю для взаимодействия Erlang с С++, - это EPAPI. Конечно, он полагается на проверенный и проверенный C erl_interface, который входит в стандартную комплектацию с дистрибутивом Erlang.

Ответ 3

В Zed отличный ответ, я бы добавил open_port(). Он позволяет вам запускать внешнюю программу и общаться с ней из Erlang, используя свой стандартный вход и выход. Вы можете использовать его как Unix-каналы, указав параметр {line, L}, а также параметр длины с префиксом {пакет, N}, который я считаю более безопасным и эффективным.

Преимущество этого над NIF и драйверами портов заключается в том, что ваш код Erlang полностью изолирован от кода C. Программа C может разбить свой собственный стек, двойные блоки памяти, ввести бесконечный цикл, что угодно. Ничто из этого не останавливает ваш код Erlang. В худшем случае вы закрываете порт Erlang и снова открываете его, если что-то становится грушевидным.

Ответ 4

Любой, кто интересуется аспектом интеграции erlang/С++, также может захотеть проверить эту статью: Переписывание Playdar: С++ в Erlang, огромная экономия:

Ive услышал много анекдотов и утверждений о том, сколько строк кода сохраняется, когда вы пишете в Erlang вместо [С++/другой язык]. Я рад сообщить, что теперь у меня есть опыт из первых рук и некоторые данные для обмена.

Я изначально написал Playdar на С++ (используя библиотеки Boost и Asio), начиная с февраля этого года. Мне посчастливилось работать с некоторыми опытными разработчиками, которые помогли мне смириться с С++. Мы были трое из нас, взламывая его регулярно вплоть до нескольких месяцев назад, и, несмотря на то, что были относительно новыми для С++, я говорю, что мы закончили с хорошо продуманной и надежной базой кода, все рассмотрено.