Si Turing levantara la cabeza…

El tema sobre el que voy a escribir es un tema al que le tenía ganas desde hace ya mucho tiempo. Tras el examen que hice hace unos días (ver mi artículo anterior) me parece que por fin ha llegado el momento de desahogarme.

Antes de nada, voy a explicar más tranquilamente lo del examen. Cuando escribí el artículo anterior estaba ya bastante cansado y con pocas ganas de explicar nada. El examen que hice el pasado sábado es el GRE Subject Test, del cual existen varias versiones. Yo concretamente hice el de Informática (Computer Science Test). Este examen mide los conocimientos de un alumno en un area especifica de conocimiento (también hay exámenes de matemáticas, física, biología,…) y suele ser un requisito obligatorio para ir a estudiar a los EE.UU. (que, como muchos ya sabéis, es lo que espero poder hacer el próximo año). El examen me parece que me salió bien…vamos, respondí a bastantes preguntas y aunque dejé unas cuantas en blanco, se supone que es lo normal (antes del examen te tranquilizan y te dicen que no esperan que domines todas las áreas de la informática, y que es normal dejar muchas preguntas en blanco). Sin embargo, el examen puso en evidencia que, mientras que hice con facilidad todas las preguntas de ingeniería del software, redes, arquitectura de computadores, etc, etc. no controlo nada los fundamentos teóricos y matemáticos de la informática. En la carrera no he visto ninguno de esos fundamentos (excepto en la grandiosa asignatura de Compiladores, donde sí los vimos de pasada) y tuve que mirármelos por mi cuenta. Hombre, algo ya aprendí por mi cuenta, pero no estoy a la altura de alguien que se haya pasado varios cuatrimestres empollando y ejercitando esos fundamentos. Y precisamente esa es la razón por la que escribo hoy: porque me parece lamentable que en muchas universidades españolas se menosprecien y banalicen esas asignaturas que, en mi humilde opinión, son importantísimas.

¿A qué conocimientos teóricos me refiero exactamente? Aquí hay una lista resumida:

  • Teoría de autómatas y lenguajes formales: autómatas, lenguajes regulares, autómatas con pila, máquinas de Turing, gramáticas formales, problemas de decisión, …
  • Análisis de algoritmos: análisis asintótico de algoritmos, análisis de funciones recurrentes, tipos de algoritmos (“divide y vencerás”, algoritmos voraces, programación dinámica, algoritmos heurísticos y probabilísticos, …), complejidad computacional, problemas NP-Completos y NP-Difíciles, …
  • Metodología de la programación: especificación formal, verificación, y derivación de programas, …

En mi universidad (y por lo que tengo entendido, en muchas otras) estos temas apenas se enseñan. Por ejemplo, en Deusto sí vemos teoría de autómatas y lenguajes formales, pero a prisa y corriendo en los primeros dos meses de la asignatura de Compiladores. También vemos metodología de la programación, pero esa asignatura es victima (injustamente, en mi opinión) de todo tipo de injurias e insultos por parte del alumnado, que la descarta como una asignatura absurda sin ninguna utilidad (lo mismo que ocurre en menor medida con la asignatura de Compiladores). Y de análisis de algoritmos no vemos nada.

La excusa para no dar este tipo de asignaturas suele ser que “no sirven para nada”. Vamos a ver, yo soy el primero en admitir que estas asignaturas no tienen ninguna utilidad práctica palpable (como puede tenerla una asignatura de Java, de C++, etc). De los miles de licenciados en informática en toda España durante un año supongo que solo dos o tres acabarán programando compiladores. Pero este tipo de asignaturas tienen una enorme utilidad como formación intelectual y cultural. Nos ayudan a comprender mucho mejor la informática y sus orígenes (tanto históricos como matemáticos) y a explorar sus problemas y misterios más profundos. Además, estos conocimientos teóricos nos ayudan a ser mejores programadores: el análisis de algoritmos nos permite decidir cual es el algoritmo idóneo en cada caso, con la metodología de la programación se consigue adquirir una percepción clarividente de la recursividad y la iteratividad, con la teoría de compiladores conocemos las entrañas de los lenguajes de programación y podemos optimizar nuestras técnicas de programación, etc, etc.

Hasta hace unos años, en Deusto había tres asignaturas que cubrían gran parte de este temario: Teoría de Autómatas Formales, Maquinas Abstractas de Cálculo, y Teoría de la Complejidad. Estas asignaturas fueron vilmente eliminadas del plan de estudios (supongo que “porque no sirven para nada”) en detrimento de asignaturas más prácticas. Yo no soy partidario de que haya que imponer un plan de estudios puramente teórico, con menos prácticas de las que hay ahora, porque la “teoría” y la “práctica” son el yin y el yang de la informática, no puede haber una sin la otra. Sin embargo, durante la carrera me habría gustado haber podido elegir. He tenido que dar asignaturas de contabilidad, SAP R/3, gestión de stocks y gestión empresarial que sé que a mi no me van a servir para nada (insisto en que estas asignaturas no me parecen inherentemente malas…entiendo y respeto que el 90% del alumnado las necesita y acabara viviendo de lo que aprenden en ellas, pero yo no). En vez de malgastar mi tiempo con esas paridas, habría preferido haber aprendido los entresijos de las maquinas de Turing, haber explorado los profundos misterios de la pregunta “P=NP?” y haber analizado mil y un algoritmos recursivos.

En conclusión, que me parece una pena que los informáticos en general desconozcamos los fundamentos teóricos de nuestra disciplina (de la misma manera que desconocemos la historia de nuestra disciplina). Creo firmemente que conocerlos nos ayuda a ser mejores informáticos, de la misma manera que el dominio de cualquier disciplina (por muy “práctica” que sea) se apoya en unos conocimientos teóricos sólidos. ¿La solución? Dada la tendencia a meter más y más prácticas en las ingenierías, dudo mucho que asignaturas como Teoría de Autómatas y Lenguajes Formales vuelvan a ser troncales, pero agradecería sumamente que por lo menos fuesen optativas en todas las universidades, de tal manera que los informáticos mas frikis podamos pasar olímpicamente de SAP R/3 y aprender cosas realmente interesantes.

ANEXO: ¿Quién es Turing? He hablado mucho de las Máquinas de Turing, y el propio titulo del artículo hace referencia a él. Me refiero a Alan M. Turing (1912-1954), al que podemos llamar (sin temor a equivocarnos) el “padre de la informática” o, más apropiadamente, “de las ciencias de la computación”. Turing sentó gran parte de las bases teóricas de la informática, especialmente gracias a la “Maquina de Turing”, una abstracción matemática que representa la ‘computadora más potente del mundo’. Me explico. Turing ideo una maquina abstracta (abstracta en el sentido matemático) que es mucho más sencilla que cualquier ordenador actual (excepto que parte del supuesto de un almacenamiento ilimitado). Esta máquina consiste sencillamente en una cabeza lectora (como el láser de un lector de CDs), una “unidad de control” que decide lo que hace la cabeza lectora, y una cinta infinitamente larga de caracteres (que es leida por la cabeza lectora). Pues bien, una de las peculiaridades de la Máquina de Turing es que ¡¡¡algo que no pueda hacerse en una máquina de Turing nunca podrá hacerse en un ordenador real!!! En efecto, la Máquina de Turing marca los limites de lo que puede y no puede hacer un ordenador; con ella se ha demostrado (matemáticamente y formalmente) que hay ciertos problemas que un ordenador nunca será capaz de resolver. No importa cuanta memoria, disco duro, velocidad, etc. tenga. Ese “nunca” es categórico e inapelable. Os voy a poner un ejemplo sencillo (voy a utilizar una terminología sencillita, para que me entienda todo el mundo, así que vayan mis disculpas por adelantado a los informáticos que piensen que la explicación es un poco absurda).

En Teoría de Autómatas y Lenguajes Formales se maneja habitualmente el concepto de “gramática formal”. Una gramática formal es como la gramática del castellano, del inglés, etc. en el sentido de que recoge todas las normas y reglas de un lenguaje formal. Sin embargo, estas gramáticas formales especifican un lenguaje de una manera rigurosa y matemática. No son validas para el castellano y el inglés, porque son ‘demasiado rigurosas’ para lenguajes con tantos matices y complicaciones. Sin embargo, estas gramáticas son ideales para especificar lenguajes de programación (como Pascal, C, C++, Java, etc.) Otro concepto que se maneja habitualmente es el de “gramática ambigua”. Una gramática es ambigua si, dada una frase del lenguaje, la gramática nos permite interpretar esa frase de más de una manera. Por ejemplo, en castellano la frase “zapatos de piel de mujer” es ambigua: ¿nos referimos a zapatos de piel para una mujer, o es que vamos a hacernos unos zapatos con piel de mujer? A no ser que la gramática nos permita extraer el significado exacto de esta frase, entonces la gramática es ambigua. Por ejemplo, la gramática podría decir que siempre agrupamos los sintagmas nominales de izquierda a derecha, con lo que nos queda: ((zapatos de piel) de mujer). Pues bien, aquí llega el notición: es imposible escribir un programa informático que, dada una gramática, nos diga si es ambigua o no. Insisto que esto es una afirmación inapelable. Por mucho que avancen los ordenadores y por rápido que sean, nosotros no podremos escribir un programa que haga eso. Se ha demostrado formalmente que una Máquina de Turing es incapaz de hacerlo, por lo que un ordenador tampoco podrá hacerlo. Evidentemente, todo esto tiene por detrás unas demostraciones matemáticas muy profundas. Y hay muchos otros problemas que no pueden ser resueltos por un ordenador. Esto me parece muy importante porque los informáticos solemos creernos los reyes del mambo, y supone una lección de humildad enfrentarte al hecho de que los ‘todopoderosos ordenadores’ no lo son tanto. Pero claro, si no estudiamos las asignaturas que he mencionado antes, pues muchos no se enteran de que así están las cosas.

Finalmente, me gustaría comentar que Turing no se limitó simplemente a idear máquinas abstractas, sino que también colaboró en el desarrollo de los primeros ordenadores digitales (especialmente el ultrasecreto Colossus durante la 2ª Guerra Mundial) y fue el criptoanalista que más contribuyó a descifrar el código Enigma de los Nazis. Fue indudablemente uno de los mejores científicos con los que contó el gobierno Británico durante la 2ª Guerra Mundial. Sin embargo, una vez finalizada la guerra, al no resultarle útil al gobierno Británico, éste no tuvo ningún reparo en perseguir a Turing por sus orientaciones homosexuales, obligándole incluso a inyectarse hormonas para corregir su “comportamiento desviado” (el gobierno británico sostenía que no se podían confiar secretos de estado a un homosexual). Turing finalmente se suicidó en 1954 tras varios años de ser presionado por el gobierno. Este es probablemente uno de los puntos más negros y lamentables de la historia de la informática.

13 comentarios sobre “Si Turing levantara la cabeza…

  1. Bueno Borja, que sepas que en este momento están rastreando borjanet y probablemente unos hombres de negro estén derribando tu puerta y desmantelandote el servidor.

    A estas alturas todos sabemos que el lema de la universidad es “sapientia melior auro”, pero no todos sabemos que para comprenderlo debemos dividirlo en lexemas, introducirlos en una estructura LIFO y extraerlos uno a uno.

    Me gusta

  2. Hola
    Cien por cien de acuerdo con lo que has escrito. Estudio Informática en 5º en la Universidad de Deusto. Y añado varios aspectos para mí gravísimos.
    El problema no está sólo en las asignaturas basura que vemos ( problema nº 1 ), también en el poco entusiasmo de algun@s profesores/as. No, no y no debe ser la labor de un profesor/a aprenderse el tema del día de memoria y casi recitarlo. A mi entender, debe mostrar inquietudes e intentar transmitirlas a los alumn@s; debe tener conocimientos acerca de la asignatura que da y no sólo sobre lo que tiene preparado; debe tener conclusiones propias. Si no, bastaría con que entregaran el temario y nos ahorraríamos el ir a clase. Según la RAE, enseñar es:
    enseñar. (Del lat. vulg. insignāre, señalar).
    1. tr. Instruir, doctrinar, amaestrar con reglas o preceptos.
    2. tr. Dar advertencia, ejemplo o escarmiento que sirva de experiencia y guía para obrar en lo sucesivo.
    3. tr. Indicar, dar señas de algo.
    4. tr. Mostrar o exponer algo, para que sea visto y apreciado.
    5. tr. Dejar aparecer, dejar ver algo involuntariamente.
    Hay aspectos que en los escritos cuesta apreciar y es en éso en lo que se debe hacer hincapié, ya que a estas alturas supongo que tod@s sabemos leer. No basta con sacar una transparencia y hablar sobre ella. Desgraciadamente, creo que cada curso, el nivel de la enseñanza baja en la Universidad de Deusto. No sirve ir a clase sólo a citar lo que algunas personas han dicho o escrito. Para éso están los libros. Realmente es triste llegar a 5º en una universidad del prestigio de Deusto y, tras hacer un análisis, darse cuenta de que sólo has tenido unos cuantos profesores buenos ( JosuKa y Zubia, por ejemplo )y que un alto porcentaje es patético. Por cierto, no sólo es criticable la falta de asignaturas tipo Compiladores (lamentable y vergonzoso que tras 5 años de carrera no conozcamos aspectos teóricos básicos. Imaginemos que un matemático no conoce los orígenes de las fórmulas: IMPENSABLE) si no también la orientación que se da a otras asignaturas como GC, IA, GPP,…
    Como conclusiones:
    . NO TODO EL MUNDO VALE PARA SER PROFESOR Y NO TODO EL MUNDO DEBERÍA OPTAR A SERLO.

    . LA TRANSPARENCIA ( DE SERLO ), DEBE SER UNA AYUDA PARA ENSEÑAR Y NO UN MÉTODO ÚNICO DE ENSEÑANZA.
    Agur
    PD: tengo muchas más ideas en mi cabeza, pero ya me he extendido y esperaré a la respuesta de alguien paraa seguir.

    Me gusta

  3. (esto es principalmente en respuesta a lo que ha escrito Uz)

    Has destapado otro tema al que también le tengo ganas desde hace bastante tiempo: el de los profesores. En serio que me apetecería explayarme ahora, porque a lo largo de los años he desarrollado muchas teorias sobre lo que significa ser profesor (especialmente porque en el futuro espero poder serlo) y sobre las tremendas responsabilidades que conlleva la docencia. El problema es que acabo de volver del cine (¡Las Dos Torres!) y no me quedan muchas energias para escribir.

    Pero bueno, seguramente en un futuro no muy lejano escribiré algún artículo sobre el tema. En ese momento, espero contar con tu feedback, Uz 😉

    Me gusta

  4. Yo tambien me he planteado lo mismo todas las visperas de examenes de asignaturas que me parecian la misma mierda con distinto nombre (si haces un “diff” del plan de estudios en ESIDE con el de la Comercial, sabras de que estoy hablando)… ¿Para que [posible insulto] me sirve esto? Probablemente preferiria fregar suelos a llevar la contabilidad de una empresa.

    ¿Que conseguimos con toneladas de horas de contabilidad y similares, en detrimento de otras cosas que se sobrevuelan durante la carrera? Saber contabilidad es importante, pero eso se da en 6 creditos y vas que ruedas (Sistemas de Control De Gestion, de Patxi Ruiz de Arbulo me parecio una asignatura cojonuda, aunque algo estresante :-D). El resto: mierda-farsa. Supongo que a un consultor de merengue (esos que son muy grandes, muy bonitos, pero mas huecos que el craneo de Leticia Sabater) le impresionara que tengas conocimientos de Marketing y Logistica, asi como que domines FI en SAP/R3 y ames Siebel sobre todas las cosas… genial, YO NO quiero trabajar para ellos.

    Lo cojonudo del asunto es que luego esos consultores se quitan el buzo de trabajo (en este caso no lo hace tejidos LaCantora, sino Emidio Tucci, pero para el caso, patatas), y te los encuentras por la calle…

    + ey, ¿que es de tu vida?
    – bien, trabajo 22 horas al dia, aunque no me puedo quejar, no hago casi nada.
    + nah, yo poca cosa, pero estoy metiendole caña a un weblog que me he instalado en el servidor de casa. Va sobre apache y tomcat, general xhtml, todo estatico, cacheable, ideal para un proxy. Ademas, con rsync + ssh es bastante segura la transferencia. Tengo soporte para multimedia y proceso correctamente video, audio e imagen. Ahora estoy con el multilinguismo, redefiniendo el diseño de datos.
    – joder, ¡te pasas la vida currando, y encima sin cobrar! Lo tuyo no es normal…

    No se si sera normal, secante o tangente, el caso es que vivo feliz entre mis bichos (son mis amigos, los creo yo (JF Sebastian) ).

    Este tipo de sentimientos hacia la carrera no se ganan en clases de Siebel, ni de SAP, ni de Marketing… se ganan cuando te das cuenta de que puedes llegar hasta el ultimo atomo de comprension si te apetece, cuando lees a gente que tenia miles de interrogantes -ya resueltos- y se inventaba mas y mas aproximaciones, todas geniales. De vez en cuando a algun profesor se le escapa alguna de ellas, y ahi es cuando a unos cuantos les brillan los ojos. ¿Hay todavia esperanza? Quien sabe, siento poca esperanza cuando a quien mas le brillaron se quiere ir para los USA ;-P

    Cambiando ligeramente de tema, la incompetencia profesoril es un topico entre el alumnado. No basta con saber, ni con saber enseñar, hace falta tambien querer enseñar. A mi entender, un buen profesor debe:

    dominar la materia +
    tener dotes para la docencia +
    tener ganas de dar clases

    Las tres me parece condiciones “sine qua non” para que un curso se desarrolle bien. La triste realidad suele ser:

    – dominio de la materia: superficial -> el camino que guia el temario es una via suficientemente iluminada, pero si quieres dar un rodeo, te enfrentas a la mas absoluta oscuridad.

    – dotes de docencia -> cualquiera podria acabar su tesis doctoral sobre psicopatias en una temporadita por el piso quinto.

    – ganas de dar clase -> aceptables, con notables excepciones.

    Lo mas “divertido” de todo esto es que año tras año la universidad deja escapar autenticas joyas (Gorka Elexgaray, Jagoba Gonzalez…), mientras sigue con los bolsillos llenos de piedras.

    Me intentare poner las pilas en la parte que me toca.

    Un abrazo, borjanet 😉

    Miembro numero dos del “Colectivo Megalomanos con Webs http://www.algonet.com“.

    Me gusta

  5. TE FELICITO, ESPERO TODO TE SALGA BIEN, QUIERO DECIRTE QUE ESA LIMITACION, NO SOLO SE ENCUENTRA EN LAS LICENCIATURAS O TECNICOS, SI NO EN LOS ESTUDIOS SUPERIORES, DESEO QUE ESA INQUITUD SE MANTENGA EN TI Y NO MENOSPRECIES ESOS TÉRMINOS RAROS QUE EL EL CAMINO SE PRESENTEN.
    ADELANTE AMIGO

    Me gusta

  6. Totalmente de acuerdo. En mi facultad si que veiamos ese tipo de asignaturas, y a pesar del fastido general de mis compagneros, a mi eran las que me gustaban. Ahora estoy de erasmus y resulta que esos conocimientos y no C++ es lo que mas util me esta siendo. Un saludo.

    Me gusta

  7. me parece importante tu apreciacion, yo estudio en Unisangil, una universidad de Colombia en este año empezaron a dar esas asignaturas, son muy buenas

    Me gusta

  8. Totalmente de acuerdo con lo que dices. El verdadero objetivo de la Universidad es formar, no fabricar obreros para las empresas. En Peru la mayoria de universidades estan “orientandose al mercado”, o formar profesionales capaces de laborar en las mas grandes empresas, lo cual no es nada nuevo para un pais como el mio… esto deforma a la universidad y la convierte en un centro de capacitacion, mas no en un area de investigacion…

    Me gusta

  9. Hola,

    Quizá en tu universidad se traten esas materias de pasada, en la mía (Universidad de Alicante) si contamos con varias asignaturas que contemplan esas inquietudes científcas.

    Saludos.

    Me gusta

  10. También en Málaga tenemos asignaturas que se explayan en dichos temas, y la queja suele ser la contraria, que no hay apenas asignaturas “prácticas”. Nunca llueve a gusto de todos ^_^. Saludos!

    Me gusta

  11. Hola:

    Te comento que hace algunos años difundì en mi facultad de la UNMSM – PERU el articulo y los comentarios mas saltantes de esta pagina con la ilusa idea de que lograria algun cambio realmente tangible con respecto al tema(ya que la problemática aes basicamente la misma), si bien es cierto en nuestra prestigiosa universidad si se ven estos cursos, por desgracia no todos los profesores son los indicados para dictarlas(con sus respetables excepciones claro està), coincido en que el problema no solo son los docentes sino en su mayoria los alumnos(lo cual me parece aun más lamentable), tengo la esperanza de que un día surgirá una verdadera generación de PROFESIONALES(con una verdadera formación y vocacion de investigador) que nos devolveran el nivel y el respeto que nos merecemos por ahora contribuiré con mi granito de arena.

    Es agradable saber que talvez somos pocos, pero somos!

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s