Stanford MOOC Automata W2

Automata Theory At CourseraLa segunda semana del curso de autómatas se enfocó a revisar la última parte a lo que nos conducen los DFA, NFA y ε-NFA: las expresiones regulares (usadas por muchos, conocidas por pocos, entendidas por menos).

Aunque varios lenguajes de programación incluyen facilidades para hacer uso de expresiones regulares, es raro ver que se utilicen y la mayoría de las aplicaciones que uno ella a encontrar es tan sólo para una fracción de lo que permiten. Mucho código podría ahorrarse de aplicarlas correcta y exhaustivamente. Yo puedo dar cuenta de cómo llegué a implementar la validación y formación del RFC en un formulario web que desarrollé cuando trabajaba para Banamex. Las diez reglas fueron implementadas en un JavaScript de no más de 20 líneas (más algunas funciones de soporte para suplir las carencias del lenguaje para el parsing o ciertas necesidades lingüísticas o lexicográficas). Ya indentado, bonito y documentado (documentación, incluyendo autoría, que debió retirarse por cosas del “compliance” de Banamex y cosas de ethical hacking tests) el archivo no llegaba a los 4K.

En unix, las expresiones regulares son el pan de cada día y, claro, no podía ser ignorado en estas video lecturas. Se menciona que las expresiones regulares permiten implementar pequeños lenguajes para el manejo de eventos y flujos de caracteres como por ejemplo, y con respecto al logo del curso (el diagrama de estados mostrado arriba), éste puede simplificarse por la expresión regular .*ing, donde . es la cualquier caracter y * la cerradura de Kleene.

Otro de los temas de la semana fue el que tiene que ver con las propiedades de los lenguajes regulares, propiedades de cerradura y propiedades de decisión. Aquí es donde el curso empieza a ponerse pesado.

Muchas veces uno piensa que este conocimiento es demasiado teórico y sin un mayor uso fuera del ámbito académico. El Dr. Ullman menciona en las primeras lecturas casos de desarrollos comerciales basados en el uso de las expresiones regulares. Aunque ya no da ejemplos de casos prácticos sobre el uso de las propiedades de los lenguajes generados por expresiones regulares pero no es difícil apreciar que este conocimiento puede ser aplicado una vez que comiencen a ser usadas exhaustivamente las expresiones regulares y uno empiece a ver la necesidad de hacer transformaciones, generalizaciones o reducciones de expresiones regulares, así como validaciones de código en busca de su simplificación, refactorización o mero mantenimiento.

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