Почему Erlang, как говорят, больше подходит для серверного программирования в webgames, чем Java и C++?

Я действительно не понимаю, как Erlang может быть более эффективным, чем C++?

27
задан Jonas 8 February 2012 в 06:37
поделиться

3 ответа

Erlang гораздо менее эффективен, чем C++. Сильной стороной Erlang является масштабируемость, а не эффективность. Он линейно масштабируется на нескольких процессорах и, благодаря своей модели программирования и связи, очень легко масштабируется на кластерах машин.

Чтобы было понятно, Erlang не будет масштабироваться больше, чем C++; он просто масштабируется легче, чем C++. На много легче. См. главы 5 и 6 Concurrent Programming in Erlang для очень хорошего объяснения, почему это так.

56
ответ дан 28 November 2019 в 04:15
поделиться

Я вижу несколько причин для этого:

  • Erlang разработан для параллелизма
  • Erlang разработан для распределенных систем
  • Erlang разработан для систем мягкого реального времени
  • Erlang разработан для обеспечения доступности

Однако он не подходит для обработки чисел, но имеет хорошую доступность для взаимодействия с C и C ++ и Другие языки. Используйте правильный инструмент для правильной работы.

Разработан для параллелизма

Erlang - это язык программирования, ориентированный на параллелизм, который хорошо подходит для приложений, которые могут быть сильно распараллелены, например, игровых серверов. Процессы Erlang намного легче и эффективнее взаимодействуют с процессами. Это означает, что приложение, реализованное на erlang, может иметь гораздо больше процессов, чем приложение на C ++ может иметь потоков. Также см. Мой вопрос Технически, почему процессы в Erlang более эффективны, чем потоки ОС .

Разработан для распределенных систем

Erlang также имеет встроенные функции, которые делают программиста более продуктивным при работе с распределенной системой.Существуют встроенные языковые примитивы для отправки и получения сообщений между процессами, и они используются таким же образом, если процесс расположен на другом ядре или компьютере. Также программисту не нужно заниматься маршалингом и сериализацией, когда сообщения пересылаются между процессами, что встроено в язык.

Разработан для систем мягкого реального времени

Erlang разработан для систем мягкого реального времени, и это полезно при создании игровых серверов. По сравнению с C ++ он имеет встроенное управление памятью, которое будет намного более продуктивным для программиста. C ++ и malloc будут страдать от проблем при использовании многих потоков и могут быть узким местом ( См. Презентацию Поддержка Erlang SMP - за кулисами в (14:00) ). По сравнению с Java, сборка мусора в Erlang выполняется для каждого процесса (гораздо меньшая единица), и это будет полезно в системе реального времени.

Разработан для обеспечения доступности

Erlang разработан для телекоммуникационных приложений, где доступность критична. Одна из функций доступности заключается в том, что приложения можно обновлять во время выполнения с горячей заменой кода. Это может быть полезно, если вы хотите обновить свой игровой сервер, пока он еще находится в сети.

Я бы порекомендовал посмотреть эту презентацию: Erlang - Программное обеспечение для параллельного мира

21
ответ дан 28 November 2019 в 04:15
поделиться

Когда Erlang позиционируется как лучший, чем C. Речь идет не об эффективности, речь идет об обработке ошибок и параллелизме. Сервер, написанный на Erlang с использованием правильных принципов OTP, автоматически будет иметь отличные способы восстановления после ошибок.

Можно сказать, что Erlang более эффективен для программиста при написании серверного приложения. И при запуске будет стабильнее.

9
ответ дан 28 November 2019 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: