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

Почему Эрланг сказал, что он больше подходит для серверного программирования на веб-играх, чем Java и С++?

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Предназначен для Concurrency

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

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

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

Предназначен для систем Soft Real Time

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

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

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

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

Ответ 3

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

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