Stanford MOOC Automata W3

Automata Theory At Coursera

La tercer semana del curso de autómatas comenzó con la revisión de las gramáticas libres de contexto (context-free grammars, CFG) y lo que éstas permiten derivar: lenguajes libres de contexto (context-free languages, CFL). Antes de continuar con la descripción de los temas revisados, hay un par de temas que incidentalmente han coincidido con este curso y que creo importante comentar.

El pasado martes se presentó Oracle en el CIC, como parte de su regular programa de reclutamiento que realiza cada seis meses (y una de las razones por las que hace dos años decidí meterme al doctorado). En la plática el director en general del centro de desarrollo en México de Oracle, preguntó a la audiencia algunas experiencias sobre el desarrollo de software que hubieran tenido, y tras las respuestas  hacía notar que se trataba de desarrollos a la medida o dentro de un contexto específico, donde lo que importe es terminarlo, no importa cómo, ni si es hecho bien o mal. Obviamente  miles de recuerdos de mis experiencias, particularmente en Banamex, vinieron a mi mente… si yo les contara; quick and dirte, era el motto en Banamex). Esta persona hizo hincapié en que el área de desarrollo de Oracle, al ser una empresa dedicada a productos de software que deben ser usados en diversos contextos y por diversas empresas, la administración es hecha por científicos e ingenieros y así no sólo importa la calidad sino la generalidad y estabilidad de lo producido. Conocimiento como el expresado en este curso y al respecto de programación, desarrollo de algoritmos y estructuras de datos es lo que Oracle busca al reclutar en el CIC (que al margen de esto, si bien trabajar en el centro de desarrollo de Oracle es atractivo— y han crecido de los 400 empleados cuando supe de esto y dos pisos en el edificio que ocupan a 800 (¿o mencionaron 1200?) y 7 pisos —ya no me parece tanto como hace dos años, explicaré esto en un futuro post). Como escribía en el post previo de esta serie, el Dr. Ullman ya ha mencionado la importancia de la utilización de estos conocimientos en el desarrollo de software.

Otro punto que ha coincidido con esto es lo que he venido leyendo recientemente sobre desarrollo de software, buscando literatura más seria que la simple aplicativa pero no la científica. No hay de otra, el verdadero desarrollador conoce de autómatas, gramáticas, desarrollo de algoritmos y estructuras de datos. Coincidiendo con lo del párrafo anterior (aunque no encuentro la liga, si la recupero actualizó este post), leía las impresiones de alguien que regularmente encontraba gente en sus entrevistas con buenos y amplios conocimientos de algún lenguaje de programación (supongo que muchos de ellos inclusive certificados) pero que ignoraban o desechaban conocimientos básicos de algoritmos. Al preguntarles al respecto, según relataba, indicaban que eso no lo habían necesitado o lo considerabas sólo cmo algo académico y de poco valor práctico.

Pasando a lo revisado esta semana en el MOOC, los temas vistos fueron:

  • Context-free grammars (formalismos, derivaciones y derivaciones porla izquierda y derecha).
  • BNF, (Backus-Naur Form), la notación que John Backus usó en la descripción de Fortran y Peter Naur en ALGOL.
  • Ambigüedad en gramáticas
  • Árboles de análisis sintáctico (parse trees).
  • Formas normales para las CFG.
  • El autómata pushdown (PDA).

Pushdown Automaton

Finalmente, con respecto a la tecnología del MOOC. Había venido teniendo problemas con los videos del curso, que se congelaban. Tenía configurado ver los videos en HTML5. Cambié a Flash. Eso parece haber arreglado el problema.

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 )

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 )

Google+ photo

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

Conectando a %s