Vivía Alicia en la pila del programa principal, en donde viven todas las estructuras estáticas de un programa.
Alicia era un puntero responsable, declarado más o menos así:
void *Alicia;
Alicia hacía sus labores diariamente, cuando el programa iniciaba. «Asistía a sus clases». Les indicaba donde encontrar memoria libre. Apuntaba a los objetos.
Alicia iba y venía libremente por la memoria del sistema, como hacen todos los punteros responsables.
Pero un día, el programador olvidó inicializar a Alicia. Y así, al empezar el programa, Alicia se encontró perdida por la memoria. Iba y venía sin control, apuntando aleatoriamente a la memoria del sistema.
En su primera parada Alicia, se encontró con un conjunto de datos, desordenados y tristes.
– ¿Quiénes son? – preguntó Alicia.
– Somos unos objetos que perdimos nuestras referencias. No sabemos a dónde pertenecemos ni a dónde ir. Alguien nos creó y olvidó liberarnos.
En ese momento Alicia pensó en los muchos objetos que son creados dinámicamente y que no son liberados de la memoria. Si los programadores fueran más cuidadosos – pensó – no habría objetos huérfanos.
Pero tal vez no era problema de los programadores, sino de los recolectores de basura. Alicia había oído sobre algunos recolectores de basura que no hacían bien su trabajo. De todas formas ella no había visto ninguno en todo su ciclo de vida.
-¿Cuánto tiempo llevan aquí?
– No lo sabemos. – replicó uno de los objetos – Tal vez muchos ciclos de reloj. Pero lo cierto es que no sentimos el tiempo.
– ¡Vaya!. ¿Cómo es eso posible? – Pregunto Alicia.
– Solo cuando hay cambio, hay tiempo. Nosotros no cambiamos, por eso no hay tiempo.
– ¡Vaya! Eso no es posible. El tiempo pasa, hagas lo que hagas.
– Te equivocas. Si no haces nada, no hay tiempo. ¿Cómo puedes medir la duración de algo que no cambia?
Y Alicia se quedó pensando en cómo podría alguien no hacer nada. Todas las variables de un programa tienen una función, se decía. Pero ¿Y las variables no usadas? ¿Existen? – pensó. Alicia había oído algo sobre optimización de compiladores, en cuanto a las variables no usadas y pensó que tal vez era cierto. Tal vez las variables no usadas no existen ni en la conciencia del programador. Simplemente son dejadas por olvido. Alicia pensó que las variables olvidadas deberían sentirse muy triste. Después de todo, ella era también ahora, en cierta forma, una variable olvidada.
– ¿Como Puedo ayudarlos? – Preguntó Alicia.
– No puedes. Somos objetos perdidos. Estaremos aquí hasta el fin de los tiempos, que es cuando se reinicie el sistema. Solo sigue tu camino o terminarás como nosotros.
– Yo también estoy perdida. No sé como salir de aquí.
– Pero tu eres un puntero. Puedes viajar libremente.
Alicia no había reparado en ese detalle. Aunque no era muy buena en Aritmética, sabía que los punteros pueden sumarse o restarse. Así que cambió su dirección y se fue apuntando a alguna parte.
Y luego a ninguna parte.
Pero «Ninguna parte» era un lugar especial en la memoria. Era el inicio, el Sanctasanctórum de la RAM, un lugar prohibido para los punteros.
No pasó ni un nanosegundo después de su llegada, que los guardianes de la CPU se aparecieron y con tono amenazador replicaron:
– Está en una posición prohibida. La moveremos inmediatamente a una posición válida.
Y la metieron a una envoltura extraña a la que llamaban «Excepción» junto a una cadena sentada a su lado y que no paraba de repetir un mensaje en lengua extraña: «Null Pointer Exception».
Más tarde Alicia, se encontró con una Base de datos muy ocupada.
– ¿Qué haces preguntó?
– Estoy buscando un dato que el usuario necesita.
– ¿Cómo es ese dato?
– Es un valor muy grande, un número de 10 dígitos.
– ¿No es ese que está al final de la tabla?
– Sí, pero primero estoy preparándome para la búsqueda. Luego empezaré a buscar secuencialmente en cada fila.
– Pero si ya sabes dónde está, ¿Por qué no lo tomas y ya?
– No. Las reglas dicen que primero hay que hacer la preparación y la búsqueda en la forma en que el programador lo ordena. No hay un índice para este campo.
– ¿Y no puedes romper las reglas?
– No. Aquí nunca rompemos las reglas.
Alicia pensó en lo tonto que actúan, a veces, las Bases de Datos al tener que buscar uno a uno las filas de una tabla, cuando la fila buscada se encuentra al final. En fin – pensó – debe ser un problema del diseño de la base de datos.
– ¿Y no te cansas? – Preguntó Alicia.
– No. Mientras tengamos energía, las Bases de datos podemos trabajar sin descanso.
Era claro que hacer las cosas bien o mal no era algo que le interesaba a una Base de datos, sino que le bastaba con hacer las cosas como se les ordena que las hagan. Lo mismo hacían todos los objetos del sistema. Alicia pensó que un poco de inteligencia no le vendría mal a los programas. Pero el mundo de Alicia era así y funcionaba bien. Al menos es lo que se veía. ¿Por qué algo que está mal diseñado debería seguir usándose? Tal vez porque no se conoce o no hay una mejor forma de hacerlo – pensaba Alicia. Ella había oído hablar de objetos inteligentes e inclusive tenía unos primos llamados «Punteros inteligentes», pero no eran muy conocidos.
Un poco meditabunda y sin darse cuenta Alicia iba avanzando a las posiciones más altas de la memoria.
Allí vio algo que le llamó la atención. Era un gran cápsula con muchos candados alrededor.
Al asomarse por la ventana, vio a varios métodos, tan afanados en su trabajo que casi ni le prestaron atención.
– ¡Holaaaaaaa! – Dijo Alicia, mas en forma de grito que de saludo. Pero nadie contestó.
– ¡Hola! – Repitió Alicia – ¿Quiénes son?
– No nos molestes. Somos métodos y estamos encapsulados, precisamente para que no nos molesten. ¿No sabes lo que es el encapsulamiento?
– Pues No – Respondió Alicia.
– Es que seguramente no eres de aquí. Esta es la tierra del la POO.
Alicia había oído hablar algo sobre la POO, pero no sabía que había un lugar llamado así. Toda su vida había estado trabajando con datos estructurados y nunca sintió necesidad de algo más. Era muy poco lo que ella sabía sobre la POO así que le resultaba algo nuevo y a la vez atractivo. Alicia no era un puntero común. Era un puntero que gustaba de aprender cosas nuevas.
– ¿Que haces allí? – Preguntó.
Pero no obtuvo respuesta. Alicia pensó que tal vez no hablaban bien su lenguaje de programación.
– ¿Que hacéis allí? – Preguntó nuevamente y ahora con más energía.
– Nosotros no hablamos con objetos externos. Estás fuera de nuestro alcance.
– No. Yo no soy un objeto. Soy solo un puntero.
– Eso no nos importa. Para nosotros todos son objetos.
Alicia comprendió que habían entornos en donde veían a todos como objetos y no tendría sentido ponerse a discutir sobre eso, ya que habían muchas opiniones al respecto, y si algo había aprendido sobre POO, es que nadie está de acuerdo ni en lo que significa POO.
Además, recordó, hay partes privadas y públicas en POO. Esos métodos deben ser privados – pensó. Por eso no quieren hablar con nadie.
Un poco desanimada y sin esperanza de entablar una comunicación, siguió adelante viendo muchos paisajes nuevos.
Pasó por el campo de la memoria dinámica y vio como los objetos nacían y morían; algunos tan rápidamente que apenas podía notar un suave parpadeo en el campo. Vio muchos objetos similares, grandes y pequeños, con muchos atributos y con pocos; objetos con padres, hijos y nietos. Alicia entendió que en el campo de los objetos, existe lo que se llama «herencia».
Una cosa que le llamó la atención es ver a unos seres llamados «interfaz». Ella no sabía si eran de allí o estaban de paso. Por más que preguntaba ellos, no respondían. Parecían muy tontos o poco inteligentes. Alicia asumió que las interfaces no eran parte del campo de la POO, o al menos eso creyó.
¿Cómo citar este artículo?
- En APA: Hinostroza, T. (3 de octubre de 2018). Alicia en el país de la programación – Parte 1. Blog de Tito. https://blogdetito.com/2018/10/03/alicia-en-el-pa-s-de-la-programaci-n/
- En IEEE: T. Hinostroza. (2018, octubre 3). Alicia en el país de la programación – Parte 1. Blog de Tito. [Online]. Available: https://blogdetito.com/2018/10/03/alicia-en-el-pa-s-de-la-programaci-n/
- En ICONTEC: HINOSTROZA, Tito. Alicia en el país de la programación – Parte 1 [blog]. Blog de Tito. Lima Perú. 3 de octubre de 2018. Disponible en: https://blogdetito.com/2018/10/03/alicia-en-el-pa-s-de-la-programaci-n/
Interesante y justo para aquellos, como yo, que conocen solo un poco de esto, gracias.
Ayudaría cambiar de tipografía y añadir imágenes. Muy buena historia. 🙂