Resumiendo: mis avances han sido pocos. Y no será porque no lo he intentado…
Me he visto casi todos los videos de Stanford sobre Introduction to Computer Sciencie, 28 lecciones de aproximádamente una hora cada una en la que Mehran Sahami hace una introducción extensa sobre la programación orientada a objetos y Java.
El problema de estas lecciones, sin duda muy amenas, es que por alguna extraña razón en algunos cursos de Stanford para aliviar el proceso de aprendizaje suelen basar las lecciones en unas librerías que no son `standard´, concretamente en este caso los ACM Package… y esperan a la lección 26 para decirte: `por cierto, todo esto que te hemos enseñado no es el java standard, si no unas librerías que te han endulzado la amarga píldora del conocimiento´
O lo que es igual, cuando tú hacías esto con una linea de código… resulta que lo normal es que lo tengas que hacer con tres o cuatro, ACM te ha simplificado la tarea para que tú creas que sabías más de lo que realmente sabes.
A mi este tipo de cosas me sacan de los nervios, porque a partir de los 30 es mejor que te entre cuanto menos basura en el cerebro mejor, por eso hubiera preferido que el curso se centrara en las librearías standard de Java desde el primer momento.
Por otra parte también me he leido una buena parte de The Java Tutorials que está nbastante bien, aunque hay algunos conceptos como los Generics que me ha costado entender (una forma suave de decir que no los he entendido) y probablemente son una tontería.
La principal dificultad de todos estos lenguajes de programación es que si quieres avanzar tienes que tener muy claros una serie de conceptos troncales y tener mucha soltura con la terminología… que a veces es muy liosa, sobre todo si como yo estás te ves obligado a saltar entre libros sobre C, Java y Objective-C.
Supongo que la principal dificultad con la que me enfrento es la falta de tiempo o mejor dicho la `falta de tiempo para el aprendizaje regular´… a veces tenemos menos follón en la oficina y puedo dedicarle tres o cuatro tardes seguidas y consigo avanzar mucho, pero de repente llegan semanas de trabajo intenso y tengo que realizar paradas forzosas… para cuando lo intento retomar ya he perdido la fluidez con la terminología, he olvidado algunos conceptos… lo que me obliga a ir más lento o incluso a retroceder para refrescar cosas ya estudiadas.
Por si esto no fuera suficiente, en el caso de iOS-Xcode-Objective-C (es decir iPhone-iPad) los cambios son muy acelerados y de considerable importancia, por ejemplo en iOS 5 han introducido ARC (automatic reference counting) lo que alivia al programador de tener que estar gestionando manualmente la memoria de sus aplicaciones… o lo que es igual lo que te permite tirar a la basura capítulos y capítulos de libros que se dedicaban a explicar con mayor o menor acierto los secretos de esta tediosa tarea. Los cambios son de tal profundidad que directamente tienes que cambiar de libro, ya que hasta el interface de Xcode ha sufrido muchas modificaciones.
Estas evoluciones en fondo y forma, probablemente a un programador avanzado no le afecten mucho, pero al aprendiz le descolocan por completo.
Asi que nada, esas son mis dificultades, pero no habré sido derrotado hasta que no tire la toalla… algo de que momento no he hecho. Sigo sufriendo, aunque sólo sea por poder mantener la cabeza bien alta en la próxima kedada de El Reto Blogger.