martes, 24 de febrero de 2015

Mientras tanto, en PSeInt... (II)

Es tiempo de volver a hablar de PSeInt. Hace no mucho escribí un artículo que empezaba con "Hace ya un buen rato que no vemos versiones nuevas de PSeInt. En buena parte se debe a que..." y continuaba con una serie de excusas y pseudo-promesas. La mayoría de las excusas siguen siendo muy ciertas, y algunas hasta se agravaron, pero como dije aquella vez, esto no significa que en el desarrollo de PSeInt no ocurra nada. A solo dos días de aquel post publiqué una actualización con esos pocos cambios que había comentado. Esta vez no van a ser dos días, pero sí otra vez muy pocos hasta que publique oficialmente una nueva versión. Este post es más o menos un informe de situación para actualizar esa lista de excusas y pseudo-promesas, comentando otra vez qué fue lo poco que estuvo ocurriendo, y qué esperar para el futuro.

Una de las tareas que me quitaba buena parte del tiempo libre que le podría haber dedicado a PSeInt, era la de terminar de ajustar y publicar lo grandes cambios que hubo en ZinjaI. Finalmente me puse más o menos al día con eso, ya subí una nueva versión, y ahora (si no surge nada raro) solo me falta actualizar los complementos, pero con eso no tengo tanto apuro (los viejos aún funcionan). Hasta me puse al día en los foros de ZinjaI!

Y hablando de foros y volviendo el foco a PSeInt, lo que más me pesa actualmente es que tengo varias decenas de mensajes atrasados en sus foros. Lleva tiempo leerlos, decidir cuales contestar, cómo contestarlos, etc. A veces, antes de la respuesta tengo ponerme a probar (por ejemplo si se trata de un bug), o planificar con cuidado antes de prometer una solución o una nueva funcionalidad. En fin, tarde o temprano voy a responder todos los que me parezca que requieren una respuesta, pero por el momento se me están acumulando más rápido de lo que los contesto.

Pasando ahora a lo que sí hice, hay algunas cosas nuevas que no considero tan impactantes, pero que buscan de alguna forma empezar a responder a los pedidos y se ajustan al poco tiempo que tuve. Por ejemplo, a raíz de una sugerencia en el foro, implementé una ventana que permite previsualizar la conversión del algoritmo a un lenguaje de programación real, pudiendo hacer cosas como cambiar de lenguaje o cambiar el algoritmo y ver cómo repercute en la conversión. También implementé lo de los colores en el diagrama de flujo, basándome en los cambios que había compartido mncarbone en el foro. Hay mejoras en la consola de ejecución. Corregí además los errores que me reportaron, al menos los que llegué a leer (tal vez encuentre otros en los mensajes pendientes). Y hasta empecé a experimentar con wxWidgets 3, y logré que el editor compile correctamente con esta nueva versión de la biblioteca (pero todavía hay algunas características sin funcionar del todo).

La nueva ventana permite previsualizar el algoritmo convertido, elegir el 
lenguaje, o hasta ver cómo cambia al modificar el pseudocódigo.

Hay además una nueva funcionalidad, que ya está algo avanzada en su implementación, y que creo que merece un párrafo aparte. Se trata del modo "ejercicio" (nombre provisorio y no del todo convincente). Comenté la idea en el post anterior, se trata de usar PSeInt para evaluar al alumno de una forma más automatizada, pensado para pequeños ejercicios con el fin de hacer evaluación continua y rápida en el aula. La idea es darle al alumno un archivo, que al abrirlo en PSeInt presente un problema (un enunciado y opcionalmente un pseudocódigo de base), le dé la oportunidad de resolverlo (completando el algoritmo) y luego evalúe su respuesta en base a un conjunto de casos de prueba (es opcional que el alumno pueda ver o no los casos de prueba). Ya está implementada la parte que ve el alumno. Es decir, ya se puede abrir y evaluar un ejercicio. Un ejercicio es un archivo zip que adentro contiene todo lo que antes mencioné (enunciado, pseucódigo base, entradas y salidas de los casos de prueba, un archivo de configuración, etc). Opcionalmente puede estar encriptado, para lograr en el aula que todos comiencen la evaluación al mismo tiempo (primero hago que copien el archivo, y cuando estén todos listos les digo la contraseña). Me falta hacer alguna interfaz simple para el docente, para que pueda empaquetar el ejercicio fácilmente. Esto es algo que quiero usar en el cursado que empieza en mi Facultad en solo tres semanas. Para lograrlo, tendré que completarlo y publicarlo en ese lapso. Por ahora, les dejo un video de lo que ya hay andando para que vean y si quieren hagan sugerencias (la interfaz todavía podría cambiar mucho).

Ejemplo de uso del nuevo modo "ejercicio", desde el punto de vista del estudiante.

Hay muchas cosas por hacer, y solo unas pocas estarán listas para la próxima versión que acabo de prometer publicar en breve.
Quedan por ejemplo otros cambios muchísimo más interesantes que el de los colores por analizar en las contribuciones de mncarbone, ya están los ejemplos para agregar entre los lenguajes a los que se puede exportar al viejo y querido BASIC, cientos de sugerencias para evaluar pendientes en el foro, mucho por hacer para completar la migración a wxWidgets 3, algunas ideas propias nuevas que no quiero comentar hasta no analizar mejor, etc. Ya vendrán tiempos mejores para el desarrollo de PSeInt, pero sea como sea, lo importante es que sigue avanzando, muy lentamente, pero avanzando.

8 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Esta en camino la opción de exportar a QBASIC?

    ResponderEliminar
    Respuestas
    1. Sí, ya subí los ejemplos al repositorio, agregué le lenguaje a la lista y los menúes, y tengo una buena parte ya implementada en la traducción a VB, así que supongo que para la próxima release ya estará lista para empezar a probar.

      Eliminar
  3. Actualmente se codifica en ANSI, por favor agregar EXPORTAR TEXTO A UNICODE, con el propósito de crear tutoriales o documentos relaciones con PSEINT con caracteres.

    La siguiente lista son los valores de conversión en UNICODE estándar, es decir cualquier editor de texto los vera siempre igual

    leftarrow => 8592 "←"
    -> => 8594 "→"
    <= => 8804 "≤"
    !=\ => 8800 "≠"
    >= => 8805 "≥"
    root => 8730 "√"


    Es buena idea

    ResponderEliminar
  4. Hola, excelente aplicación, una pregunta, es difícil hacer la interfaz con GTK? Te lo pregunto, ya que soy una persona con discapacidad visual total y solo puedo acceder a los menús , sin poder hacer nada mas, saludos.

    ResponderEliminar
    Respuestas
    1. Usar directamente gtk es un poco más engorroso que otras alternativas porque su api (al menos en la versión 2 que es la que usé alguna vez) no es la más moderna, y ni siquiera es orientada a objetos. Yo uso wx, pero wx en realidad por detrás está usando gtk en linux, es solo un envoltorio, así que se podría decir que pseint en linux usa gtk para las interfases.

      Eliminar
  5. Deseo saber si es posible dibujar lineas y figuras geometricas en 2 o 3 dimnsiones.
    gracias.-

    ResponderEliminar
    Respuestas
    1. No, solo texto. La idea es enfocarse en el diseño de los algoritmos y el procesamiento de la información, más que en la "interfaz"... Aunque el dibujo 2d ofrecería problemas interesantes también desde lo algorítmico.

      Eliminar