Почему говорят, что Erlang больше подходит для серверного программирования в веб-играх, чем Java и C ++? - PullRequest
27 голосов
/ 14 июля 2010

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

Ответы [ 3 ]

56 голосов
/ 14 июля 2010

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

Для ясности, Erlang не будет масштабироваться на больше , чем C ++;он просто масштабируется легче, чем C ++.А лот проще.См. Главы 5 и 6 Параллельное программирование на Erlang для очень хорошего объяснения, почему это так.

21 голосов
/ 14 июля 2010

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

  • Erlang предназначен для параллелизма
  • Erlang предназначен для распределенных систем
  • Erlang предназначен для Soft RealTime Systems
  • Erlang предназначен для доступности

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

Предназначен для параллелизма

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

Предназначен для распределенных систем

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

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

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

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

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

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

9 голосов
/ 14 июля 2010

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

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

...