¿Cómo / por qué los lenguajes funcionales (específicamente Erlang) escalan bien?

He estado observando la creciente visibilidad de los lenguajes de programación funcionales y las funciones por un tiempo. Los miré y no vi el motivo de la apelación.

Luego, recientemente asistí a la presentación "Conceptos básicos de Erlang" de Kevin Smith enCodemash.

Disfruté de la presentación y aprendí que muchos de los atributos de la programación funcional hacen que sea mucho más fácil evitar problemas de subprocesamiento / concurrencia. Entiendo que la falta de estado y la mutabilidad hacen que sea imposible que múltiples hilos alteren los mismos datos, pero Kevin dijo (si entendí correctamente) toda la comunicación se lleva a cabo a través de mensajes y los mensajes se procesan sincrónicamente (evitando nuevamente problemas de concurrencia).

Pero he leído que Erlang se usa en aplicaciones altamente escalables (la razón por la cual Ericsson lo creó en primer lugar). ¿Cómo puede ser eficiente manejar miles de solicitudes por segundo si todo se maneja como un mensaje procesado sincrónicamente? ¿No es por eso que comenzamos a avanzar hacia el procesamiento asincrónico, para que podamos aprovechar la ejecución de múltiples hilos de operación al mismo tiempo y lograr la escalabilidad? Parece que esta arquitectura, aunque más segura, es un paso atrás en términos de escalabilidad. ¿Qué me estoy perdiendo?

Entiendo que los creadores de Erlang evitaron intencionalmente el subprocesamiento para evitar problemas de concurrencia, pero pensé que era necesario el subprocesamiento múltiple para lograr la escalabilidad.

¿Cómo pueden los lenguajes de programación funcionales ser inherentemente seguros para subprocesos y aún así escalarse?

Respuestas a la pregunta(8)

Su respuesta a la pregunta