Leer acerca de la concurrencia en Erlang me recuerda el conjunto de herramientas de concurrencia de Akka . Ambos le brindan herramientas para prevenir o limitar las condiciones de carrera . Pero puede enviar enlaces a datos mutables a otros procesos utilizando el kit de herramientas de Akka, que aún no es seguro. Veo a Akka como una herramienta útil, pero no proporciona protección contra el acceso fuera de orden a objetos y datos que conducen a condiciones de carrera, punto muerto y / o inanición. No le impide escribir código inseguro de la forma en que Java o C # lo protege de escribir la mayoría de los tipos de pérdidas de memoria que puede escribir en C ++ (aún puede crear pérdidas de memoria en Java engañando al recolector de basura, pero es menos de un problema que tener que recordar liberar cada byte que asignes).
¿Erlang garantiza un grado de corrección, rendimiento y solidez en la programación concurrente? Creo que los sistemas operativos proporcionan protección al acceder a los recursos del sistema (suponiendo que los escritores de controladores hicieron bien su trabajo). Las bases de datos ACID proporcionan protección para lecturas y actualizaciones. Entonces parece que este es un problema solucionable. ¿O una solución segura genérica borraría las ganancias de rendimiento que proporciona la concurrencia? ¿Proporcionan otros idiomas o kits de herramientas el tipo de seguridad concurrente que Erlang ofrece (o no)?
Esta es una pregunta de seguimiento al comentario de @ Malfist sobre la respuesta de @ user1249 a ¿Qué lenguaje de programación genera la menor cantidad de errores difíciles de encontrar? .
fuente