Hoy en día podemos estar ejecutando Word y PowerPoint al mismo tiempo, y además, tener abierta la ventana del navegador con varias páginas en diferentes pestañas.

Esto es asombroso si pensamos que se tiene un procesador quien es el que hace la tarea y que tiene, de alguna manera, que administrar su tiempo de proceso en diversas tareas.

La técnica que logra esto es la concurrencia, la cual es a su vez un programa que permite administrar los sistemas que se cargan en memoria.

Y no sólo eso, también administra los recursos disponibles como la memoria de almacenamiento, de forma que -idealmente al menos- el software funciones y haga todas las tareas pedidas.

Los problemas de la concurrencia

«Cuando están pasando múltiples cosas al mismo tiempo, se necesita de una manera de coordinarlas para hacer que no se bloqueen mutuamente», dice Bryan Parno, de CyLab, profesor de computación y ingeniería eléctrica, y agrega: «Este ha sido -históricamente- un proceso con un sinfín de errores».

Por ello, Parno y su equipo de investigadores publicó recientemente un nuevo lenguaje de programación de alto desempeño para programas concurrentes, que asegura que el programa puede demostrarse como correcto, esto es, que el código matemáticamente procesa correctamente.

El lenguaje y la herramienta se llaman Armada, y se presentó en la Conferencia de Implementación y Diseño de Lenguajes de Programación, en donde se llevó el galardón de ser un artículo especialmente distinguido.

Las virtudes de Armada

«Lo que es nuevo en Armada es que está diseñado para ser extremadamente flexible, de forma que pueda escribirse código de manera que el software pueda correr tan rápido como sea posible», indica Parno, «pero también se asegura fuertemente que hará las cosas correctamente y que no echará a perder todo al final», comenta.

Parno menciona la complejidad de los programas concurrentes y su susceptibilidad a los «bugs», a los errores. Típicamente esto funciona como una subasta.

Un vendedor recibe apuestas de muchas personas y puede para mucho tiempo para que se llegue a la apuesta más alta. Si uno divide, por ejemplo, a los posibles subastadores en 10 cuartos, esto podría hacer que se aceleraran las cosas, pero podría ser muy difícil para quien subasta estar coordinado entre los cuartos, lo que provocaría muchísimos errores y problemas.

Bryan Parno

«Así entonces, se requiere que de alguna forma los subastadores hablen unos con otros mientras que simultáneamente trabajan en la apuesta más alta de todas en los cuartos», indica Parno. «Esto puede ser muy complicado por lo que en general en una subasta no vemos este procedimiento».

Pero Parno piensa que Armada beneficiará a todos aquellos que escriban programas concurrentes, lo que podría ampliar el rango de las aplicaciones en sistemas de esta naturaleza:

«Desde sistemas contables para los registros hospitalarios hasta cualquier tipo de comercio electrónico, todos estos sistemas tienen bases de datos de respaldo además de que utilizan concurrencia de alguna manera», menciona el investigador.