miércoles, febrero 28, 2007

Persistencia y dinamismo (e Internet)

Antes de comenzar quiero prevenir a quien vaya a leer estas ideas que no estoy muy seguro de cómo explicarlas de forma clara. Voy a hacer mi mayor esfuerzo, y espero lograr al menos un éxito parcial. También, por supuesto, son ideas en desarrollo, por lo que sus comentarios serán muy útiles. Ahora sí a lo que vamos.
Tomemos en cuenta la vieja pregunta sobre la persistencia de los objetos cuando no los percibimos. Yo en este momento sé, por ejemplo, que la leche está en el refrigerador, aún cuando no la percibo, dado que ahí la dejé yo esta mañana y he aprendido que siempre que dejo algo en el refrigerador, cuando regreso sigue ahí en el mismo lugar, por lo que, para mi conocimiento, ese objeto persiste en ese lugar de forma contínua.
Apliquemos esa idea ahora a lo que veo en una página web. Supongan que entran todos los días a la misma página y siempre ven lo mismo. Cada vez que ponen la misma dirección, aparece siempre lo mismo, incluso el código HTML que lo produce es siempre exactamente el mismo. ¿Podríamos decir que esa página persiste de forma contínua? En otras palabras, durante el tiempo que no vemos la página, ¿esa existe ahí (digamos en el servidor)? Supongamos que la página está escrita en algún lenguaje del estilo de PHP y, dependiendo del usuario, muestra una página distinta.
Aún cuando el código original en PHP no cambie, el resultado de visitar la misma dirección será distinto para distintas personas, y el código HTML que reciben es únicamente el resultado de una interpretación del código original. En ese sentido, no podemos decir que la página que vemos todos los días persiste; al contrario, es interpretada en cada ocasión, aunque el resultado de esa interpretación sea siempre el mismo (para nosotros). La página per se no existe mas que cuando la estamos mirando; y en ningún otro momento. Pero sí persiste algo, que es el código PHP que genera la página en cuestión; desafortunadamente, este código se encuentra fuera de nuestro alcance, es decir, hay algo etéreo que no cambia, pero que somos incapaces de conocer. Más aún, somos incapaces de saber si lo que persiste es la página HTML o si hay un código interpretado detrás de ella. Ante nosotros únicamente se presenta esa interpretación, indistinguible de una verdadera página estática.
Vayamos más lejos y entremos a los mundos virtuales, como el de Second Life (ojo que yo nunca he entrado a uno, así que mi interpretación de ellos puede ser un tanto errada). Digamos que yo poseo un pedazo de tierra virtual y pongo en ella un árbol. Cada vez que yo me conecto, veo ese árbol, pero, ¿el árbol persiste ahí cuando yo no estoy conectado? Dudo mucho que los servidores resistirían mantener el nivel de detalle necesario para representar contínuamente todo lo que todos los usuarios han hecho en el mundo virtual. Por tanto, yo supondría que en esa zona de tierra, si yo no estoy conectado, no se mostraría nada. Aún así, persiste la información de que ese árbol se encuentra ahí para que, cada vez que me conecte, aparezca donde debe. Una vez más, el objeto en sí no persiste, aunque sí persiste una información que se encuentra en un nivel de abstracción más lejano que aquel al que tenemos acceso, y que, desde nuestra perspectiva es completamente indistinguible de la persistencia física.
Si para ahora no se han aburrido y siguen leyendo, por favor dejen un comentario con sus ideas al respecto.

6 comentarios:

Unknown dijo...

And how do you know that the milk in your fridge really persisted? Maybe only an abstract information persisted, such that whenever you open your fridge, the milk is generated. Maybe there is a "PHP" script generating the milk every time you "access" your fridge.

There is an interesting movie about this topic: "13th Floor". Have you already seen it??

Rafael Peñaloza dijo...

Exactly, Bruno. Is our intuition of persistency correct, or these examples of web dynamism show a good argument against it?
And, on the other hand, given that this "PHP script" is in a further level of abstraction than that we can reach, and is indistinguishable from our point of view to "real" persistency, is there any difference on which is the "real reality"?

I have not seen that movie... I will search for it.

Chiva Congelado dijo...

Yo sí uso Second Life, y tengo entendido que los objetos sí persisten después de haber sido dejados por el usuario. ¿Cómo le hacen? Excelente pregunta.

Anónimo dijo...

Rafa,
No me aburri pero casi me da un dolor de cabeza por leerlo (no estoy "entrenado" para tus abstraciones). Mi opinion respecto a PHP es que la informacion "esta" ahi (persiste) pero dependiendo del usuario la muestra de una forma determinada (yo lo interpreto como un filtro).

Saffog Tochtli dijo...

En un sentido individual no hay diferencia entre si persiste o no, pues parece consistente la información, pero que pasaría en el sentido colectivo?? Si, sé que se podría generalizar el usuario a un grupo... http://saaskun.blogspot.com

Rafael Peñaloza dijo...

Excelente pregunta Goofas. Digamos que tu y yo entramos a la misma página desde distintos lugares y para tí siempre muestra un 0 mientras que para mí siempre muestra un 1. Yo diría que la página siempre muestra un 1, y que este "permanece"; para tí sería lo mismo, pero con un 0, y seríamos incapaces de convencer al otro de lo contrario.

Gracias por la invitación a SaasKun; por ahí estaré dando lata ;)