jueves, 15 de marzo de 2007 14:32
jonas
Coding Horror: Punteros (I)
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.