¿Orientada a Objetos o Estructurada?


Soy de una generación que le tocó la transición, pero si me he preguntado ¿qué conviene enseñar ahora a los nuevos programadores? En realidad parece que aun no hay una respuesta definitiva. Gunnar Wolf publica una interesante opinión en Software Gurú (Lástima, ya no todos pueden consultarla, ahora si ya).


Primero habla del programador autodidacta, aficionado, que por motivación propia ha adquirido los conocimientos teóricos y prácticos requeridos. Muchos de ellos aprendieron de forma gradual e independiente hasta un nivel comparable a quien estudió una carrera formal. Es posible que muestren “agujeros” cognoscitivos sobre todo en campos que requieran mayor rigor teórico-matemático o aquellos donde el interés no los llevó, pero comúnmente los subsanarán cuando se enfrenten a situaciones que lo requieran. Por tales características son miembros valiosos de un equipo de desarrollo.
Luego entonces sigue el programador escolarizado cuyo reto es lograr un nivel semejante al del autodidacta. Sería ideal poder empezar desde la programación más básica (ensamblador), siguiendo por la estructurada (C, Cobol, Pascal), llegando a la Orientada a Objetos (C#, Java) y probablemente incluso scripts que tanto abundan hoy (Perl, Python, Ruby). Desafortunadamente no hay tiempo para todo y creo que esta tendencia sucede en toda disciplina (a mi siempre me hizo gracia hablar de cómo la historia cada año se va haciendo más y más larga), aunque quizá la programación es la que tiene el crecimiento más remarcado y ramificado.
Comenzar con un lenguaje mínimo ayuda a entender la traducción que se va haciendo a su más bajo nivel hasta llegar a la implementación del hardware, se entienden mejor los fundamentos de la estructura y el control de flujo. Ni que decir de la administración de la memoria y el orden de complejidad. En sistemas de tiempo real, embebidos, controladores de hardware o software de alto rendimiento el dominio de estos temas es fundamental.
Comenzar directamente con el paradigma de POO permite por otro lado una entrada rápida al mundo de la programación con aplicaciones poderosas, de fácil implementación (comparado a lenguajes antecesores) y con un campo de trabajo bastante amplio. Es curioso también mencionar que para muchos programadores que se iniciaron en un entorno meramente procedimental, el salto a POO suele tener cierta complejidad y puede costar trabajo debido a la forma a la que vienen acostumbrados a solucionar los problemas.
En mi caso me tocó conocer un poco de todas, cosa que agradezco. A nivel medio superior cursé la especialidad de sistemas digitales, así que me tocó convivir con hardware y software. Tuvimos un excelente profesor, Jesús Olivares, que no solo nos enseñó ensamblador, sino que nos hizo sufrir construyendo nuestro propio sistema mínimo, la versión más simple de una computadora, primero en protoboard y luego a tarjeta. Lo común en aquellos días era que los alumnos usaran sistemas mínimos ya construidos que se tenían en los laboratorios y solo metieran código ensamblador en ellos para las prácticas. Llegamos a programar con C y nos enfocamos más a usarlo para crear interfaces entre algún circuito y la computadora así que no salimos del todo bien.
En la superior nos tocó el brinco a POO, pero primero sufrí con cosas de programación estructurada que jamás conocimos en nivel medio superior aunque para los que venían de un ambiente de programación ya eran bastante hábiles. Luego vimos los conceptos de OO con C++, que a mi gusto fue un buen curso, aunque a muchos no les pareció. Finalmente tuve una embarrada de Java ya casi para salir. Por lo que al final tuve que aprender Java y otros lenguajes hasta después de que salí y conforme lo enfrenté en el trabajo.
Salí entonces conociendo de todo, pero con muchas deficiencias. Eso tampoco es siempre bueno, saber poco de todo con frecuencia, a la hora de pedir trabajo, se traduce a no saber nada, porque la gente espera que seas experto en un determinado campo. Pero al final, creo que valió la pena saber lo que hay hasta debajo de lenguajes que cada día ofrecen nuevos avances, pero al final del camino de forma casi increíble siguen siendo unos y ceros.
Entonces ¿qué es lo mejor? La respuesta sigue en el aire, pero lo que si deja claro Gunnar Wolf, cosa en la que coincido enormemente, es que sobre todo se debe enseñar al programador a tener la capacidad de aprender tecnologías nuevas, “aprender a aprender”, a no encasillarse en una herramienta y tener el hábito de aprender nuevos lenguajes para diferentes retos.

Por cierto, echen también un vistazo a articulo «Lo que todo programador debería saber sobre la memoria«.


2 respuestas a “¿Orientada a Objetos o Estructurada?”

  1. Coincido contigo, sobre todo en la parte final. Creo que la mejor experiencia que he vivido trabajando para este grande es que te «invitan» a programar en cualquier lenguaje (dependiendo de lo que quieras hacer). Asi pues le metido mano a Python, Java, Flash, Javascript y hasta un poco de C++…

  2. Eso me consta pues me tocó cuando te mordías las uñas para aprender de trancazo Flash y Python y al final les respondiste. Eso si que hace una diferencia, cuando algunos con presión logran pasar la prueba mientras que otros de plano se quiebran. Qué bueno que si has aprendido a responder con la presion.

Replica a buho Cancelar la respuesta