[pyar] Cosas que me gustaria que existieran 1: ragel-python
Roberto Alsina
ralsina en netmanagers.com.ar
Vie Feb 25 15:28:27 ART 2011
Dado que ya estoy grande y he decidido que no voy a escribir todos los
programas que quisiera tener (porque la lista es cada año mas larga, por
algun motivo), voy a empezar, de vez en cuando, a mandar acá a la lista
a ver si alguien me hace el gran favor de implementarlos :-)
El primero, porque es copado, útil y realmente pero REALMENTE no existe,
es un backend de ragel para Python.
Primero: qué es ragel? Ragel es un compilador de máquinas de estado finito.
Alguno querrá saber qué es una maquina de estado: bueno, es un sistemita
que tiene estados y transiciones entre los mismos. Cada transicion tiene
una accion de entrada y una accion de salida.
Por ejemplo, podemos tener una maquina que sea una puerta:
Estado 1: Abierta
Estado 2: Cerrada
Para pasar de 1 a 2, se hace la accion "cerrar puerta". Para pasar de 2
a 1, se hace la accion "abrir puerta".
Eso es muy pavote, pero pensemos en por ejemplo en la implementación de
un protocolo o en un parser para un lenguaje (limitado a lenguajes
regulares).
Resulta que usar maquinas de estado es super piola, porque producís
código eficiente y recontra estable con muy pocas sorpresas, porque
definís EXACTAMENTE que pasa en cada caso.
En serio, la MEJOR manera de implementar un protocolo es probablemente
con una maquina de estado. Y para parsers? ragel te toma la gramática en
BNF y te produce código, asi, casi de una.
Cual es el problema? Que ragel genera ruby. Y C. Y C++. Y Java. Pero no
python.
Entonces no puedo (no podemos) usar ragel para hacer cosas copadas con
python. Y tenemos peor código del que debiéramos.
Yo estimo que arrancando con el generador de ruby, es un proyecto de un
mes trabajando de a ratitos.
Entonces, quién se copa, eh?
More information about the pyar
mailing list