15 de octubre de 2009

El paradigma de programación orientada a objetos

¿¿Paradig... queee?? diríamos algunos. Y aquí comienza precisamente el viaje que menciona Alfredo en su introducción a este blog ... :-)

Paradigma en su sentido original tradicional significa «modelo / ejemplo» y, en su sentido más amplio contemporáneo implica «cosmovisión», es decir:

La forma de entender y percibir el mundo y a nosotros mismos.

Y es que muchos de nosotros no solo ignoramos el significado real del término, sino que ni si quera nos percatamos de su existencia en la vida cotidiana y mucho menos nos enteramos que existen otros paradigmas diferentes a los que conocemos, vaya: otras formas de ver y entender el mundo (otros modelos y puntos de vista igualmente válidos) además de la nuestra.

En mi experiencia personal, esto sucedió allá por el verano del año 2002, en aquel entonces me sentía orgulloso de haber programado mi último proyecto de sistemas totalmente en C++ (¡válgame Dios! Tal era mi ignorancia). Fue en aquel año cuando Alfredo me hizo favor de compartirme algo sobre el Refactoring y los Patrones de Diseño (yo la verdad en ese tiempo estaba mucho más dedicado al estudio y aprendizaje de otros sistemas operativos tales como GNU/Linux, FreeBSD y MacOS). Al comenzar a investigar mas sobre el tema, me di cuenta de un par de cosas que no había notado antes.

  • Primero: Me di cuenta que no entendía realmente bien la terminología Orientada a Objetos (OO), a pesar de haberla conocido y usado durante varios años (y de haber programado en C++ mi último sistema)
    (P.ej. el caso del tan llevado y traído concepto de polimorfismo, que cada quien entiende a su manera aún en los libros «de texto» sobre la materia, pero bueno ese es otro tema...)

  • Segundo: Me di cuenta que no solamente no entendía bien la terminología sino que ignoraba total y absolutamente (vaya no tenía ni la menor idea) los conceptos reales detrás de la misma.
    En otras palabras me di cuenta de que estaba yo frente algo totalmente nuevo, diferente y desconocido para mí hasta ese momento y que además no se parecía en nada a todo lo que yo conocía hasta ese entonces y tampoco se parecía en nada a lo que me habían explicado ni en la escuela ni a lo que venía escrito en los libros de programación «orientada a objetos».

Fué entonces cuando experimenté lo que ahora sé que se llama un «cambio de paradigma» (o « paradigm shift» como le dicen en inglés)… Ese famoso «A-ha!» que se menciona en la introducción de este blog.

Fue entonces cuando, reconociendo mi supina ignorancia en la materia, me dí a la tarea de comenzar a aprender realmente lo que significaba este paradigma de programación que tal vez sea (por lo menos en México) el mas malinterpretado de todos; para lo cual, en lugar de recurrir a los lugares y libros de texto comunes (C++, Java, Object-Pascal, etc, de hecho tenía y había leído ya varios de ellos), decidí ir a la raíz del asunto y remitirme a las fuentes originales.

Resulta bastante notorio y algo sumamente indicativo que de una misma comunidad hayan surgido el Refactoring, los Patrones de Diseño, las Pruebas Unitarias, los Métodos Agiles, y en los 70's las interfaces gráficas, los IDE's y las máquinas virtuales. Y que además varios de sus miembros sean distinguidas autoridades en la materia ( Kent Beck, Ward Cunningham, Martin Fowler, Ralph Johnson, Joseph Yoder, et al, entre muchos otros)

Y me estoy refiriendo precisamente a la comunidad creada alrededor de uno de los mejores lenguajes de programación que se hayan inventado jamás: SMALLTALK.


No hay comentarios:

Publicar un comentario