Cita del día

“He buscado a través de lo físico, lo metafísico, lo delirante, … y vuelta a empezar. Y he hecho el descubrimiento más importante de mi carrera, el más importante de mi vida. Sólo en las misteriosas ecuaciones del amor puede encontrarse alguna lógica”. (John F. Nash)

Buscar este blog

martes, 13 de diciembre de 2011

Escribiendo los sueños en C (conversación en un vagón de metro)

Traducir una película tan complicada com origen al lenguaje de programación C no debe ser empresa fácil. Éste lenguaje es el más popular para crear sistemas operativos, por ejemplo: Windows y Linux. En dicha tarea está encomendado karthick18 y lleva de momento 1900 líneas de código fuente.  Todo el código está subido a Github.


¿Cómo lo están implementando? 
Para ello utilizan el problema de la cena de los filósofos. Un problema matemático muy conocido planteado por Dijkstra en 1965 usado para representar los problemas de sincronización de procesos en un sistema operativo. La resolución del problema tiene varias soluciones: Por turno cíclico, colas de contenedores o el portero del comedor.


"Cinco filósofos se sientan alrededor de una mesa y pasan su vida cenando y pensando. Cada filósofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer los fideos son necesarios dos tenedores y cada filósofo sólo puede tomar los que están a su izquierda y derecha. Si cualquier filósofo coge un tenedor y el otro está ocupado, se quedará esperando, con el tenedor en la mano, hasta que pueda coger el otro tenedor, para luego empezar a comer.
Si dos filósofos adyacentes intentan tomar el mismo tenedor a una vez, se produce una condición de carrera: ambos compiten por tomar el mismo tenedor, y uno de ellos se queda sin comer."
Si todos los filósofos cogen el tenedor que está a su derecha al mismo tiempo, entonces todos se quedarán esperando eternamente, porque alguien debe liberar el tenedor que les falta. Nadie lo hará porque todos se encuentran en la misma situación (esperando que alguno deje sus tenedores). Entonces los filósofos se morirán de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock (cuelgue de un proceso).
El problema consiste en encontrar un algoritmo que permita que los filósofos nunca mueran de hambre.

Interesante la lectura de los comentarios explicativos en los archivos del código fuente. Recomendable si tienes nociones de programación muy avanzadas.

Lugar: L5
Hora: 09:25
paralelismo sincrónico de "Origen" con la vida de un consultor informático:

La peli de Origen está basada en la vida de un consultor informático. En mi empresa hay gente que está en un nivel 5 de subcontratación: Su empresa => empresa A => empresa B => empresa C => cliente final.
Y todo encaja con la película:
  • En cada nivel el tiempo varía: en la empresa B hay que echar más horas que la empresa A, en la empresa C más horas que en la B y así sucesivamente.
  • Las patadas te van acercando a la realidad: el cliente final te da una patada y vuelves a la empresa C, que te da otra patada y vuelves a la empresa B, hasta que la patada final te devuelve a la cruda realidad: estás en paro.
  • El último nivel, el limbo, es cuando ya no sabes ni para qué empresa trabajas y todos se han olvidado de tí: los de RRHH no saben ni quién eres.

No hay comentarios:

Publicar un comentario