Я действительно не понимаю, как Erlang может быть более эффективным, чем C++?
Erlang гораздо менее эффективен, чем C++. Сильной стороной Erlang является масштабируемость, а не эффективность. Он линейно масштабируется на нескольких процессорах и, благодаря своей модели программирования и связи, очень легко масштабируется на кластерах машин.
Чтобы было понятно, Erlang не будет масштабироваться больше, чем C++; он просто масштабируется легче, чем C++. На много легче. См. главы 5 и 6 Concurrent Programming in Erlang для очень хорошего объяснения, почему это так.
Я вижу несколько причин для этого:
Однако он не подходит для обработки чисел, но имеет хорошую доступность для взаимодействия с C и C ++ и Другие языки. Используйте правильный инструмент для правильной работы.
Erlang - это язык программирования, ориентированный на параллелизм, который хорошо подходит для приложений, которые могут быть сильно распараллелены, например, игровых серверов. Процессы Erlang намного легче и эффективнее взаимодействуют с процессами. Это означает, что приложение, реализованное на erlang, может иметь гораздо больше процессов, чем приложение на C ++ может иметь потоков. Также см. Мой вопрос Технически, почему процессы в Erlang более эффективны, чем потоки ОС .
Erlang также имеет встроенные функции, которые делают программиста более продуктивным при работе с распределенной системой.Существуют встроенные языковые примитивы для отправки и получения сообщений между процессами, и они используются таким же образом, если процесс расположен на другом ядре или компьютере. Также программисту не нужно заниматься маршалингом и сериализацией, когда сообщения пересылаются между процессами, что встроено в язык.
Erlang разработан для систем мягкого реального времени, и это полезно при создании игровых серверов. По сравнению с C ++ он имеет встроенное управление памятью, которое будет намного более продуктивным для программиста. C ++ и malloc будут страдать от проблем при использовании многих потоков и могут быть узким местом ( См. Презентацию Поддержка Erlang SMP - за кулисами в (14:00) ). По сравнению с Java, сборка мусора в Erlang выполняется для каждого процесса (гораздо меньшая единица), и это будет полезно в системе реального времени.
Erlang разработан для телекоммуникационных приложений, где доступность критична. Одна из функций доступности заключается в том, что приложения можно обновлять во время выполнения с горячей заменой кода. Это может быть полезно, если вы хотите обновить свой игровой сервер, пока он еще находится в сети.
Я бы порекомендовал посмотреть эту презентацию: Erlang - Программное обеспечение для параллельного мира
Когда Erlang позиционируется как лучший, чем C. Речь идет не об эффективности, речь идет об обработке ошибок и параллелизме. Сервер, написанный на Erlang с использованием правильных принципов OTP, автоматически будет иметь отличные способы восстановления после ошибок.
Можно сказать, что Erlang более эффективен для программиста при написании серверного приложения. И при запуске будет стабильнее.