Primer vídeo demostración de WinQ
- 2 minutos de lecturaEn noviembre del año pasado —hace ya unos cuantos meses de esto— decidí no continuar con el desarrollo de WinQ, principalmente porque tenía la necesidad de sustituir JavaScript, que utilizaba como lenguaje de scripts, por un lenguaje compilado (C# o VB.NET). A esto hay que añadir que existían múltiples bugs sin solucionar y a los que no veía una salida rápida. En definitiva, al no estar convencido en general del resultado final obtenido y debido a que tendría que realizar grandes modificaciones en el diseño de la aplicación para implementar todo lo que quería cambiar, abandoné el desarrollo en favor de uno nuevo realizado con VS2008. Además, en estos últimos meses de uso he ido encontrando nuevos errores, con lo que he podido ir reafirmando que tomé una buena decisión.
Como he dicho, tuve también, por aquel entonces, la idea de iniciar un nuevo desarrollo con VS2008 y .NET Framework 3.5, pero tampoco ha ocurrido así; a día de hoy no he comenzado ningún nuevo desarrollo. Pese a todo, todavía mantenía en mi lista de tareas pendientes publicar un vídeo de demostración de las principales funcionalidades de WinQ. El pasado fin de semana, por fin, lo pude terminar y subir a YouTube.
La realización de este vídeo me ha permitido retomar por unas horas el proyecto y replantearme, con vistas al mes que viene, el inicio del nuevo desarrollo. He comenzado a trabajar en el parser de las expresiones matemáticas, ya que lo que busco es evitar tener que evaluar la expresión compilándola dinámicamente, tal y como se está haciendo actualmente.
Una simple búsqueda en Google devuelve muchísimos resultados de parsers de expresiones matemáticas, tantos que ni se me pasa por la cabeza iniciar el desarrollo desde cero. Lo complicado es entonces decidir cual es el mejor proyecto a utilizar. Las premisas para la elección del parser más adecuado son sencillas: código fuente disponible, y bajo alguna licencia de software libre que permita copiarlo y distribuirlo (léase BSD, MIT o GNU). Después habrá que considerar otros aspectos, como el rendimiento —aunque éste no sea un aspecto crítico—, y sobre todo fiabilidad, que pase un conjunto mínimo de pruebas sin errores.
Entre los programas que he podido probar estos días, lo mejor que he visto es muParser, una librería escrita en C++ que funciona transformando una expresión matemática en bytecode y precalculando la parte constante de la expresión. La librería es open source y se distribuye bajo la licencia MIT, así que hay pocos peros a añadir. Por si todo esto fuera poco, el mismo Ingo Berg, autor de muParser, tiene publicado este articulo en CodeProject en el que explica cómo crear un wrapper en C# para la librería de muParser.
Estoy ansioso por empezar a trabajar en esta nueva versión, mientras tanto tendré que conformarme viendo el primer vídeo de lo que podemos considerar la alpha release de WinQ.