Imagen destacada
desarrollo 2026-06-02 1 minutos de lectura

La Ley Virding sobre Programas Concurrentes

Robert Virding es una persona muy elocuente, cada vez que hablas con él te das cuenta de que tiene ideas muy bien establecidas y es capaz de explicarlas de forma sencilla y como creador de Erlang, su amor por su creación le hizo soltar lo que hoy en día hemos llamado la Ley Virding, ¿la conoces?

La ley dice:

Any sufficiently complicated concurrent program in another language contains an ad hoc, informally specified, bug ridden, slow implementation of half of Erlang.

En español viene a traducirse como:

Cualquier programa concurrente suficientemente complejo en otro lenguaje contiene una implementación ad hoc, especificada informalmente, plagada de errores y lenta de la mitad de Erlang.

Erlang, tal y como digo en el libro de Erlang (Volumen I) es tanto un lenguaje como una máquina virtual y esta máquina virtual tiene implementadas todas las dinámicas necesarias para desarrollar programas concurrentes de forma fácil.

Enumerando algunas de las bondades con respecto a las propiedades de los procesos, tan solo el hecho de poder intercambiar mensajes, obtener información cuando un proceso termina su ejecución e incluso información sobre cómo y porqué terminó el proceso permite construir estructuras como los supervisores (vistos en el libro de Erlang (Volumen II)) o incluso a través del framework OTP podemos depurar y obtener información de los servidores (la unidad mínima en OTP) en ejecución.

El lenguaje de programación Go, de hecho, toma ideas y fue influenciado por Erlang, que se encontraba en un momento de máxima popularidad cuando Go fue creado y estableció el Modelo Actor y la Programación Orientada a la Concurrencia (como la nombró Joe Armstrong en sus libros) como la base para implementar lenguajes de sistemas y de backend resilientes, responsive y tolerantes a fallos.

Incluso si Erlang no es un lenguaje que te llame la atención y no vayas a utilizar en producción, su conocimiento acerca de cómo gestiona los procesos, la memoria y los nodos ayuda a entender cómo implementar mejores soluciones en software de sistemas y backend en cualquier otro lenguaje.

Te invito a que eches un vistazo a los capítulos en abierto de los libros de Erlang en esta página (Volumen I y Volumen II) y saques tus propias conclusiones. También si quieres adquirilos finalmente para aprender un poco más, adelante. Saber es poder.

MÁ

Manuel Ángel Rubio Jiménez

Desarrollador Políglota, Escritor, Gerente y Mentor

Comenzó a programar a los 12 años con lenguajes como GW-BASIC, QBasic, MODULA-2, Pascal y C. Cuando comenzó el mundo laboral ya dominaba Java, JavaScript, PHP, Perl, Ruby, Python entre otros y más tarde comenzaría con Rust, Golang, Erlang, Elixir y Gleam. Pero lo que más le atrae es poder enseñar a programar en esos lenguajes a otros. Comenzó su formación como profesor asistiendo a un cruso en Londres y más tarde como mentor de Erlang, Elixir, OTP, Ecto y otras tecnologías dentro de Erlang Solutions Ltd. Escribir libros es para Manuel otra forma no solo de enseñar sino también de aprender, tal y como decía Feynman.

Comentarios

No hay comentarios. Inicia sesión para enviar un comentario.