Hago memoria de cuando empecé la carrera de informática, aquellas primeras clases de **** álgebra, TC (Tecnología de Computadores), fundamentos de programación I… Ni si quiera sabía que era el método main, o un array y ya estaba pensando en mis programas en de escritorio, que bonitas serían mis ventanas!!! Pero no todo es de color de rosa, un día llegamos a los punteros: ¿pero que es esto? Supongo que todos en mayor o menor medida hemos maldecido los punteros, tal vez algunos desistieran, pero ¿realmente son tan complicados? Puede que sea algo complicado diferenciar entre valor y dirección, la verdad es que había que tener cuidado para que aquello no cascara, más bien era un tipo de mentalidad específica para poder manejar punteros lo que hacía falta. Algunos definen a los punteros como la esencia de la programación.

Quien tuvo valor y no desistió, llego a la programación orientada a objetos. Pero nos engañaron, recuerdo a mi profesor decir: la programación orientada a objetos es cojonuda, no tiene punteros!!! Esto es como cuando llegamos a la escuela, cuando aun somos chiquititos y nos enseñan los números, más adelante llegamos a saber que no solo hay números naturales, sino que también están los enteros, los fraccionarios, los racionales, los reales y los complejos (tal vez otra aberración) y creo no olvidar ninguno. Bueno, el caso es que esto venia por la relación que hay con la programación orientada a objetos y los punteros: un día llegamos a la cruda realidad de que todo son punteros (menos los tipos por valor claro) y que el único consuelo que nos queda es que no tenemos que trabajar con las direcciones de memoria.

En un principio pensaba poner un ejemplo de código en C# para ver el uso de punteros (o referencias a memoria que es mas correcto), pero como lo encuentro algo diferenciado a la intención de este post, lo dejaré para el siguiente. Por otro lado, mencionar que C# nos permite trabajar con punteros, si si punteros al estilo de C, pero esto también lo dejaremos para otra parte.