Sería entre los años 1987 y 88 cuando nuestro maestro de una de las materias de programación en el CETis 155, Luis Ignacio Ortiz Villaseñor, nos dejó como actividad traducir un artículo de una de las revistas de aquella época de más renombre, la memoria no da, pero una de ellas era la BYTE, sin embargo en una búsqueda en internet me di cuenta que hay varias, no se si todas, digitalizadas para su consulta y descarga y no encontré una imagen que se quedó en mi mente hasta ahora.
El artículo era sobre una "nueva" forma de programar denominada como "Programación Orientada a Objetos (POO)", la imagen era un dibujo de un bebé jugando con unos dados, se convirtió un poco en mi obsesión buscándola en la web pero como mencioné anteriormente no tuve éxito, por lo que ilustro este artículo con una fotografía que da la misma idea.
La lectura de este artículo no fue suficiente para desde aquellos entonces hubiéramos aplicado y explorado este nuevo paradigma ya que en la retícula de nuestro añorado plantel cubría tres lenguajes básicos de programación los cuales eran BASIC, COBOL y PASCAL los cuales en aquellos tiempos no tenían la posibilidad de poder aplicar esta nueva forma de programar.
En lugar de ello teníamos las llamadas "unidades" de nuestra arma como programadores de mucho tiempo que era el PASCAL, las unidades pudiéramos decir que "encapsulaban" las tareas comunes a varias aplicaciones y que las podíamos escribir en un código aparte y de ahí utilizarlas en nuevos programas aunque todo esto usando el paradigma que nos enseñaron que era el de la "Programación Estructurada".
Ya en la carrera profesional aunque las autoridades se esforzaban por tener la retícula de la carrera actualizada, no tuvimos un curso de Programación Orientada a Objetos.
Fue hasta el entorno laboral, donde gracias a capacitaciones de mucho valor, conocimos algo de este nuevo paradigma con cursos de C++ así como algo de Análisis y Diseño Orientado a Objetos tanto por Manuel Cota padre y su hijo que creo llevaba el mismo nombre.
Sin embargo y nuevamente los lenguajes que se usaban en el Instituto - específicamente en el área que trabajaba - no tenían esa capacidad, entonces muchas de aquellas valiosas enseñanzas se quedaban a la deriva coqueteando con el olvido.
Mi primer intento con una aplicación real fue un instalador (ignoro si para esos años existía el InstallShield) que usábamos para hacer actualizaciones a nuestros sistemas de estatales y regionales. Ya enterado que Borland Turbo Pascal ya era un híbrido y que soportaba el enfoque de la POO, esta aplicación definía una clase con un par de métodos, aunque en el sentido real solo usaba el encapsulamiento no la herencia ni el polimorfismo. Orgulloso de este primer paso cité a Neil Armstrong con las palabras que dijo al pisar la Luna "un pequeño paso para el hombre, un gran salto para la humanidad", una exageración claro esta.
Siguieron pasando los años y el Instituto se organizaba una "Semana de la Tecnología" y dentro esta misma había un maratón de programación, mi compañera Stella Díaz y un servidor nos inscribimos sin mucho éxito, pero ahí mi compañero de la prepa Marco Alfonso López me decía que lo mejor era "pensar y programar" en objetos, la verdad no entendí el mensaje y pues igual sentí que no le había servido mucho a él, pues tampoco ganó :), sin embargo dejó nuevamente sembrada la inquietud de migrar a este paradigma.
Esta inquietud la transmití a un nuevo integrante del equipo, mi a veces némesis y a veces gran amigo Fernando Díaz quien desprecio mi propuesta, para ese entonces ya llevaba algunos sistemas ya migrados a Visual Basic de los sistemas antes en DOS con Turbo Pascal e IMPS.
Cuando inició a estudiar la maestría en Informática y Tecnologías Computacionales ahí ya se convenció de migrar el sistema de Cultura a web usando para aquel entonces la naciente y popular plataforma de .NET en su versión 2003 y ya con el paradigma de POO, el dirigió el proyecto en la parte de desarrollo y yo negociaba con el cliente y los usuarios, además que las validaciones en el cliente con JavaScript y algunas rutinas estaban a mi cargo, también participaron mis compañeros Francisco Díaz y Ángel Mauricio López usando el patrón Modelo-Vista-Controlador (MVC), también contamos con el valioso acompañamiento y asesoramiento de nuestro compañero Juan Aguilar Puebla.
El equipo al cambiar de área donde formamos parte de la Dirección de Informática de la Dirección General de Estadística y poco a poco fuimos dejando de dar mantenimiento a dichos sistemas y paulatinamente el área de Informática del Instituto junto con nuestra anterior área tomó los sistemas, para nosotros dedicarnos a elaborar sistemas de captura, validación y algunas ocasiones de explotación de encuestas en hogares los cuales nos pedían en cuestión de meses a lo mucho 3 y ante esta situación dejamos de lado la plataforma .NET para hacer interfaces (lanzadores) en Visual Basic que conectaban a aplicaciones de CSPro cayendo nuevamente en el sueño de los justos :).
Es importante mencionar que por ejemplo ya casi todos los lenguajes de programación inclusive el popular y por algunos despreciado Visual FoxPro tenía la opción de programar con clases (que recuerdo que junto con Adán Aguilera - un joven que hizo sus practicas profesionales con nosotros - se hizo otro intento de programar alguna clase en VFP) sin embargo se seguía trabajando con el mismo paradigma y si acaso agregando el enfoque de programación basada en eventos.
Antes de que Fernando Díaz dejará el área nos aconsejó cambiar al lenguaje de programación a C# en la misma plataforma de .NET, ya que nosotros iniciamos con Visual Basic .NET, sin embargo poco a poco y ante el empuje de los capturadores que algunos compañeros desarrollaron junto con el naciente IKTAN además de la partida de otro de los programadores el área donde estaba paso a lo mucho a realizar procesos que auxiliaban a los de captura, validación y explotación con lo cual ya no se hacían sistemas integrales.
Quiero mencionar que abrirse al nuevo paradigma no es una cuestión sencilla para algunos, es algunas ocasiones es como forjar la roca, sin embargo otro acontecimiento importante fue el tomar un curso con Alejandro Jiménez de otro de los grandes protagonistas en el escenario de los lenguajes de programación como lo es Java. Alejandro nos enseñó el lenguaje, muy cercano a los contenidos de la certificación, era aprender el paradigma si o si, con el no vimos las aplicaciones para Windows así que la programación era totalmente con clases y objetos.
Afortunadamente aun conservo mi suscripción MSDN de Microsoft que junto con mis labores en la academia a pesar de ya no estar en el desarrollo de software en el Instituto seguí trabajando con la plataforma .NET y poco con Java.
De ahí adelante ya programe siempre usando clases y a pesar de tratar de transmitirlo en mis grupos ha sido labor casi imposible, y es que ocurre que parece ser que ya los patrones de diseño así como los frameworks de desarrollo, así como las bibliotecas ya tienen una madurez que difícilmente los programadores desarrollan una clase.
Sin embargo debo decir que mis bibliotecas de clases me han ahorrado muchísimas horas de desarrollo y otro factor importante es que el lenguaje de programación C# sigue muy vigente por lo que solo se agregan las nuevas características que brinda el mismo.
Dichas bibliotecas me han brindado pequeños logros y grandes satisfacciones, la última fue que debido a lo delicado de la información que manejamos mi jefe me pidió que generará información aleatoria para tratar de desarrollar un prototipo de "Lago de datos", años atrás ya había hecho una aplicación para generar scripts aleatorios de SQLite de información para encuestas donde la verdad casi todos eran valores numéricos, en este caso necesitamos nombres (textos), por lo que esas bibliotecas me sirvieron mucho, sin embargo había que adecuarlas y crear algunas nuevas clases para atender este nuevo requerimiento.
Es aquí donde me viene a la mente esa imagen del bebé, tomo mis cubos, les agrego pequeñas partes y funcionalidades y listo puedo usar mucho de lo ya programado y solo agrego lo faltante, tal como si fuera un mecano o lego, y de una aplicación que yo creo me hubiera llevado mínimo un mes siendo muy optimista la terminé en a lo mucho 4 días.
Clases que fueron programadas para propósitos distintos y otras creadas para este problema en específico, trabajando juntas para lograr el objetivo de crear registros aleatorios es una versión un poco "silvestre" que puede tener muchas mejoras para versiones posteriores.
Otra ventaja es el bajo número de "bugs" al programar de esta manera, ya que mucho de la clase esta ya probada, y solo se tiene que hacer pruebas de los nuevos métodos y las nuevas clases.
Concluyendo, no se si ya no sea necesaria diseñar nuestras propias clases y quizás el diseño de mis clases no sea lo mejor, sin embargo para responder mis casos de uso específicos, mis clases han funcionado de forma muy eficaz y con una eficiencia muy respetable, un código independiente y que permite específicamente ir donde se proviene el error y una revisar cientos o miles de líneas de código de una aplicación completa y monolítica.
Hasta aquí este primer artículo donde expongo mi visión del desarrollo de software y que si seguimos con las fuerzas y la lucidez necesaria seguiremos explorando nuevas soluciones a nuevas necesidades. Hasta el siguiente artículo.
Atte.