Чтение о параллелизме в Erlang напоминает мне инструментарий Akk для параллелизма . Оба дают вам инструменты для предотвращения или ограничения условий гонки . Но вы можете отправлять ссылки на изменяемые данные другим процессам, используя инструментарий Akka, который по-прежнему небезопасен. Я считаю Akka полезным инструментом, но он не обеспечивает защиту от неупорядоченного доступа к объектам и данным, что приводит к гоночным условиям, тупику и / или голоду. Это не мешает вам писать небезопасный код, так как Java или C # защищают вас от написания большинства утечек памяти, которые вы можете писать в C ++ (вы все равно можете создавать утечки памяти в Java, обманывая сборщик мусора, но это меньше проблемы, чем необходимость помнить, чтобы освободить каждый байт, который вы выделяете).
Гарантирует ли Erlang степень правильности, производительности и надежности в параллельном программировании? Я думаю, что операционные системы обеспечивают защиту при доступе к системным ресурсам (при условии, что авторы драйверов хорошо выполнили свою работу). Базы данных ACID обеспечивают защиту для чтения и обновления. Так что, похоже, это решаемая проблема. Или универсальное безопасное решение стерло бы прирост производительности, который обеспечивает параллелизм? Другие языки или наборы инструментов обеспечивают параллельную безопасность, которую Эрланг делает (или не делает)?
Это дополнительный вопрос к комментарию @ Malfist к ответу @ user1249 на Какой язык программирования генерирует наименьшее количество труднодоступных ошибок? ,
источник