Mostrando entradas con la etiqueta Reflexiones. Mostrar todas las entradas
Mostrando entradas con la etiqueta Reflexiones. Mostrar todas las entradas

sábado, 3 de abril de 2010

while (1) { ... }


Una de las primeras cosas que le enseñan a uno cuando empieza a estudiar ingeniería informática es la potencia de los bucles.

Sí, hablo de esas tareas repetitivas para las que supuestamente tan malos somos los humanos, por eso de que no queremos perder el tiempo calculando a mano los 10 mil primeros decimales de pi, o porque no está bien visto dedicarse a dibujar 30 imágenes por segundo para poder entretener a alguien que quiere jugar al Halo (aunque yo lo vería bien :P)

Para los no iniciados, la estructura de un bucle, en general, es algo como esto:

mientras (condición verdadera)
{ hacer esto }

Los programadores, tan osados ellos, definieron lo que se llama "bucle infinito", esto es, aquel cuya condición siempre se cumple, y que, por tanto, se ejecuta ilimitadamente. El bucle infinito puede tener muchas formas:

Puede ser algo tan sencillo como: while (true) { ... }, algo muy utilizado, por ejemplo, en videojuegos, donde queremos que continuamente se estén dibujando imágenes en la pantalla. Estos bucles infinitos son "los buenos", porque se hacen adrede, y en principio entendiendo lo que significa.

Pero claro, como siempre, hay formas de cagarla, y que aparezca un bucle infinito donde en principio no debería. Suelen ser situaciones mucho más complejas, en las que ocurren cosas concurrentemente, y hay muchos más factores que influyen en la condición del bucle.

Y no, no me he puesto a escribir a las cuatro de la mañana para explicaros lo que es un bucle, sino porque todo esto tiene una analogía bastante clara con lo que es nuestra vida hoy en día.

En general, uno puede comenzar a hacer una tarea repetitiva bien determinada, como por ejemplo lavar los platos. Uno lava un plato, luego lava el siguiente, hasta que lava el último.

Esto, traducido a "lenguaje informático", sería algo como:

while (quedan platos sucios)
{lavar el siguiente plato sucio}

La condición del bucle es muy sencilla, y no corremos peligro de caer en un bucle infinito (a menos claro que haya algún capullo ensuciando los platos según los lavamos xD), de ser así, lavaríamos platos continuamente de por vida, y claro, eso no es muy recomendable...



Pero, al igual que en informática, hay muchas formas, muy peligrosas, de caer en un bucle infinito, y digo muy peligrosas porque las consecuencias no son tan insignificantes como que se cuelgue el ordenador, o que salga el relojito de Windows (o la pelotita de playa de la muerte para mis compañeros de Mac OS). El resultado en la vida real suele ser perder gran parte de la misma, o acabar atrapado en "algo", siendo ese "algo" un ente indefinido, que puede ser tan evidente como la propia rutina de trabajo o estudios, o repetir una y otra vez los mismos errores, hablar siempre de las mismas cosas con las mismas personas, o una secuencia más enrevesada que sea prácticamente inapreciable.

La gran pregunta es ¿cómo evitar esto?

Yo no sé la respuesta, pero las analogías suelen ser útiles para hacernos una idea de como resolver un problema, y en informática esto tiene varias soluciones.

Como por ejemplo, un contador de bucle, es decir, permitir que el bucle se ejecute un número limitado de veces, lo que al otro lado de la analogía podría ser replantearse cada cierto tiempo la situación personal de uno mismo (aunque aquí corremos el peligro de encontrarnos con un bucle más externo que consista en replantearse continuamente la situación pero, por no estar dispuestos a cambiar, esta sea siempre la misma)

También existe la posibilidad de que un agente externo interrumpa el bucle (donde "agente externo" puede ser que el mejor amigo de turno te de un toque de atención).

La otra opción, mucho menos recomendable, es "matar el proceso", y confiar en que alguien pulse el botón de "reportar fallo a microsoft", pero esto es algo mucho más dramático y poco deseable para nuestra integridad física, ¿verdad?

Da un poco de miedo ponerse a pensar en esto detenidamente, porque en nuestra vida hay ocultos muchos más bucles infinitos de los que pensamos...

Seguir leyendo

martes, 26 de enero de 2010

Sobre tiempo y naves espaciales


Hoy no me apetecía cantar en la ducha (thanks God), y me he puesto a pensar sobre cosas aleatorias (muy a vuestro pesar). Y, me he preguntado... realmente, ¿qué es el tiempo?


Como soy un "hombre de ciencia", en lo primero que me paro a pensar es: ¿qué es el tiempo según la física?

Técnicamente, el tiempo es una magnitud para medir la distancia entre los cambios en un sistema de referencia. Es decir, en un instante t1, un objeto puede estar en una posición A, y en un instante t2, ese mismo objeto puede estar en una posición B. Mediante el tiempo, podemos decir que el objeto estaba en la posición B (t2-t1) segundos después de estar en la posición A.

El tiempo, por tanto, según la física (física clásica), es una especie de guía, que nos permite llevar un seguimiento de los cambios en nuestro entorno.

Vale, todo esto es muy bonito, pero uno no puede evitar pensar: ¿y cómo me afecta a mi todo esto?

Actualmente, vivimos en una sociedad en la que el tiempo es el eje de todo. Nos guiamos por lo que marcan las agujas de un reloj, y actuamos continuamente en base a eso. No es lo mismo estar en la cama a las 6 de la mañana, que estar en la cama a las 5 de la tarde, ni es lo mismo llegar al trabajo a las 10.00 que llegar a las 9.00 (a menos que quieras que te despidan, claro).

Pensándolo, de nuevo, físicamente, el reloj nos informa de como estamos situados con respecto a la rotación de la Tierra (horas, minutos y segundos), y de como está situada la Tierra con respecto al sol (días, meses), además de cuantas vueltas ha dado la Tierra alrededor del sol (años).

¿Podría haberse cogido otro sistema de referencia para medir los intervalos de tiempo? Por supuesto, pero claro, este es el más lógico dado que tanto las estaciones como los ciclos de día y noche tienen una gran influencia sobre nosotros.

El tiempo tiene, además, otro gran papel en nuestra vida diaria. Y es el dar sentido a la llamada relación de causalidad. Causa, efecto. Sin el tiempo como magnitud, no se podría decir: "esto ocurrió porque esto otro ocurrió antes".

Esto, al menos en mi, provoca una avalancha de pensamientos sobre muchísimas cosas. Mismamente, ¿qué es el futuro? ¿qué es el pasado? ¿qué diferencia hay entre ambas cosas?

Lo que percibimos, es que el pasado es algo que ha provocado que nuestro presente sea como es. El presente es una causa, y nosotros, además de todo lo que existe en este mismo momento (y de la forma que existe), el efecto. Del mismo modo, el presente (junto al pasado) es la causa del futuro.

Llegados a este punto, la pregunta obvia (y que el ser humano se ha hecho siempre, y se seguirá haciendo, sin duda) es: "¿Que fue lo primero? ¿Cual fue la primera causa?"

Y yo ahora pregunto, ¿por qué tiene que haber un "primero"? Debido a nuestra naturaleza, no somos capaces de asimilar que algo pueda no tener un principio y un final, o que el principio sea el final y el "último" efecto sea la causa del "primero", y todo sea algo parecido a lo que decía Nietzsche.

Pero la cosa no se queda ahí, ¿y si pudiésemos conocer todas y cada una de las relaciones de causalidad? ¿Y si tuviésemos todos los datos? ¿Podríamos conocer el futuro? De ser así, ¿seguiría siendo el futuro? ¿O sería algo que en realidad ya ha ocurrido? ¿Qué sería un viaje en el tiempo?

A menudo pienso que realmente ya hemos construido naves espaciales, que hemos visitado otros planetas. A veces pienso que todo ya ha sucedido, y que en realidad ya estaba decidido desde el... ¿principio?

Seguir leyendo

lunes, 11 de enero de 2010

Pasar Página...


... o más bien, "Pasar Libro".


Voy a acuñar una nueva expresión, ya que muchas veces lo de "pasar página" se queda corto, y uno necesita mandar el libro entero a la mierda. Quizá se ajuste más con "hacer borrón y cuenta nueva" o convenga más un "Borrar/Arrancar Página" (o páginas).

A uno le quedan ya demasiadas cicatrices, y el libro empieza a parecer un descosido de páginas arrancadas, borrones, frases tachadas, y papel desgastado y mugriento.

No pretendo ser un alma perdida que se culpa a si mismo de todo ni autocompadecerme, y tampoco quiero culpar a nadie. Aunque hay algunas personas a las que mandaría a una isla desierta si tuviese los medios necesarios, pero a una de las malas, con un factor caníbal/palmera de al menos 10,7.

Hay muchas veces que las personas (me incluyo), por falta de empatía, o, simplemente, por no saber expresarse o comprender lo que les rodea, la cagan. Y los últimos meses me he visto rodeado de tantas situaciones propicias a que eso ocurra, que ha ocurrido. Dos personas se calientan y dicen cosas absurdas, se pierde la perspectiva, y uno no sabe ni lo que dice ni a quien se lo dice.

Por mi parte, no guardo ningún rencor a nadie en este aspecto (aunque se que no van a aplicarme lo mismo a mi). El tiempo pone las cosas en su sitio, y los ánimos calmados acaban mostrando las cosas como son, y no la basura desfigurada que solemos ver de primeras. Y esto lleva tiempo... en mi caso me he dado cuenta que una media de año y medio - dos años, dependiendo del desastre que se haya montado.

Pero si hay alguien al que se le de bien la restauración de libros, que me avise. Aunque solo sea para cambiar las tapas del mío por unas de cuero.

Seguir leyendo