Hola a todos.
Hoy por la mañana he estado leyendo el árticulo publicado por dos profesores de Ciencias de la Computación (nuestro equivalente americano a Ingeniería Informática) de la Universidad de Nueva York, en el que tachan a Java como un mal lenguaje para aprender a programar.
De manera resumida el árticulo expone los contras de usar Java como lenguaje aplicado a la ensañanza desde un principio y para aprender a programar y el por que deberían enseñarse lenguajes como Ada, Lisp, C y C++ por las características que estos tienen.
Os dejo el enlace a el árticulo ya que voy a realizar una reflexión personal sobre el mismo.
A los 9 años tuve mi primer contacto con un lenguaje de programación, Basic, en un precioso C64 que mi padre acaba de traer de EU, a los 12 años empece con C y un par de años más tarde hice un curso de VB, 5.0 de aquella y empezaba a hacer mis pinitos con HTML. Esto antes de empezar a estudiar la carrera.
De forma resumida en la universidad trabajamos de la siguiente manera:
- Priemero: Ada
- Segundo: Ada
- Tercero: Java
- Cuarto: LISP,Prolog y Java
- Quinto: Prolog y Java + un poco de Phyton y Corba
Ahora por lo que se sustituyeron en segundo Ada por C++, pero aún así y viendo todos estos lenguajes no sales preparado.
En el árticulo hay una frase que dice que el verdadero ingeniero puede programar en cualquier lenguaje, y eso muy cierto y bajo mi punto de vista reside ahí el principal problema de la enseñanza o de los alumnos, según como se mire. El problema surge cuando aprandes a construir un estructura en Java o cualquier lenguaje y no aprendes a construir una estructura, me explico, debería de existir una separción entre la componente teorica de la programación y la componente práctica, si te enseñanas que un bucle es algo del tipo for(int i = 0; i < 10; i++) {} y no algo en pseudocódigo o almenos de una manera más abstracta despues puedes llagar a un lenguaje como ruby y costarte entender un for edificion in manzana do … end
Otro problema es la importancia que se le resta a la autentica alma mater de la carrera (ojo, esto es una opinión personal) la Ingeniería del Software. De acuerdo que hay maneras y maneras de enseñarla pero como en toda profesión debe de existir cierta preocupación por parte del estudiante por leer y empaparse de todo el conocimiento que le sea posible. Muchas veces perdia el tiempo estudiando aquitecturas y patrones de libros como los de Martin Fowler que todo arquitecto/analista/diseñador/programador debería tener a mano o almenos conocer, con esto nos evitariamos situaciones de total desconomiento ante frameworks que usen algún tipo de modelo de persitecia o asociaciones MVC.
En conclusión no creo que sean un problema del lenguaje, Java es un lenguaje muy valido a la hora de dar el salto, una vez que tienes conocimientos de programación funcional y toca darle un poco a la orientación a objetos encaja perfectamente, pero lo que no puede enseñar es que un objeto es una clase en java…. (no es la primera vez que me lo dicen).
El futuro lo veo un poco raro, vivimos en una ámbiente de completo cambio tecnológico en el que los informáticos tenemos que absorver las nuevas tencnologías a una velocidad de vertigo y sin cierta abstracción vamos jodidos. Por eso animo a todos a probar el aprender a programar no aprender un lenguaje.
Un saludos a todos!