Sobre la enseñanza moderna en informática
By laparca
Ya hace tiempo que tenía en mente esta entrada en mi bitácora, concretamente desde el momento en que se escribió un comentario sobre qué se debe enseñar en informática en meneame.net y, especialmente ante una de sus respuestas. En esta respuesta se trata de argumentar que la razón de que se deba enseñar programación orientada a objetos (en adelante POO) desde el principio en una carrera universitaria se debe a que en Oslo lo hacen y ellos inventaron la POO a parte de que ésta es más intuitiva:
Para #92. Estas completamente equivocado, pero entiendo porque. Estudio informatica actualmente en la Universidad de Oslo. Programacion orienta a objetos desde el primer semestre con Java. En el segundo semestre se nos explico como orientar a objetos con ansi C pelao. La programacion estructurada es un subconjunto de la programacion orientada a objetos, como lo fue en su momento el codigo espagueti de la programacion estructurada.
Esto lo en aprendido aqui. Yo vengo tambien la vieja escuela de la programacion estructurada, pero la informatica no es estructurar codigo, es solucionar problemas, y los problemas se orientan a objetos para resolverse de una forma mucho mas natural. Lo que yo estoy aprendiendo aqui, en Noruega, vale un tesoro. La programacion orienta a objetos la inventaron aqui, con el desarrollo del lenguaje Simula en los 70. Se ganaron dos premios Turing sus desarrolladores.
Lo primero que se podría discutir es la supuesta naturalidad de la orientación a objetos. Sinceramente, yo no pienso en objetos. Normalmente suelo pensar en conceptos, como «hacer una aplicación que resuelva X» o «preparar un algoritmo que haga Y». La verdad que el tema de pensar en cómo lo resolveré eso es bastante más posterior y, sin duda, de un modo nada natural. Otro punto importante a tener en cuenta sobre este hecho es que programar en objetos no es pensar en mesas, que sean subconjuntos de mobiliario y estos lo sean de algo. Los programas más sofisticados suelen hacer de otras formas de afrontar los problemas, que se suelen centrar más en la organización. Un ejemplo claro lo podemos ver en casi todos los patrones de diseño (patrón comando, factoría, etc.) que se alejan mucho de la forma natural de ver los problemas. Si bien es verdad que nuestra mente es capaz de realizar abstracciones de forma inconsciente para ciertas cosas (por ejemplo, una silla tiene normalmente 4 patas, pero si vemos una con 3, seguiremos pensando que es una silla) esta no suele realizarse de forma consciente, cosa que es necesaria al realizar una labor intelectual de diseño.
Por otro lado, el que estas personas ganaran un premio importante (concretamente el Turing es el premio Nobel de la informática), no implica que sean poseedores de la verdad absoluta, simplemente que han dado con algo revolucionario, pero no necesariamente con algo que deba eliminar al resto.
Y por último, que esta gente inventara la POO no significa que sean los que más sepan acerca de ella. Un ejemplo lo podríamos poner con Newton y la teoría de la gravitación universal. Sin duda Newton la expuso por primera vez, pero eso no ha evitado que Einstein tuviese que proponer otra teoría para suplir los defectos de la primera.
Aunque claro, siempre podría estar equivocado…