viernes, 19 de septiembre de 2014

Mientras tanto, en PSeInt...

Hace ya un buen rato que no vemos versiones nuevas de PSeInt. En buena parte se debe a que por diversos motivos le he dedicado realmente poco tiempo últimamente. Pero no quiere decir que no haya ocurrido nada. Hay algunos cambios ya implementados para la próxima versión oficial, y hay más cambios en camino, algunos muy interesantes. En este post les cuento un poco qué nos depara el futuro a corto y mediano plazo en PSeInt.

El tiempo no sobra, y últimamente se consume casi totalmente en mi trabajo, en mi tesis de doctorado, en cuestiones personales, y entre mis proyectos, mayormente en ZinjaI, por ser el que más uso en mi trabajo en esta parte del año. ZinjaI tiene en marcha cambios de esos que rompen funcionalidades ya establecidas (por ejemplo, lo de reescribir todo el sistema de inspecciones), y que necesito terminar para recuperar la "normalidad" del desarrollo, ya que mientras tanto no puedo publicar otra versión ni tampoco probar todo lo nuevo al 100%. Por esta clase de razones es que ZinjaI ha recibido mucho más atención que en PSeInt en estos meses. Además de notarlo por la ausencia de nuevas versiones, lo notarán tal vez en las gigantescas demoras que están teniendo mis respuestas en el foro. Tengo realmente muchísimos mensajes atrasados (pido disculpas, tarde o temprano los voy a leer a todos). Empecé a ponerme al día con algunos, pero mayormente en mi correo personal, porque es allí donde recibo los nuevos perfiles que envían los docentes. Y agregar perfiles es algo fácil y rápido, así que para la próxima versión verán alrededor de 30 perfiles nuevos.

Un cambio más interesante que está implementado desde hace poco es una extensión a las funcionalidades inspiradas en el live-coding y las charlas de Bret Victor. Ahora, al hacer click en algún texto de entrada o salida en la terminal de ejecución, el editor de pseudocódigo muestra (selecciona) la instrucción exacta que produjo esa entrada o salida. Así, se agrega una herramienta más para facilitar la asociación entre el estático código fuente y la dinámica ejecución, ese puente que PSeInt tiene por objetivo ayudar a construir.


Entre otros cambios, voy también preparando cada vez más el camino para migrar a wxWidgets 3 y poder aprovechar varias mejoras en esta biblioteca, como el soporte Unicode, y principalmente la actualización de Scintilla. Por ahora, el editor principal ya compila con wx 3 unicode, pero no todo funciona correctamente, así que habrá un par de versiones más con wx 2.8 hasta que todo quede pulido.

Pero hay otras novedades no tan recientes aunque sí muy importantes. A principio de año se generó en el foro alguna discusión sobre cosas que PSeInt debería agregar, y cosas que no, y cómo debería agregarlas, etc, mayormente cuestiones del lenguaje. De estas discusiones he tenido miles. Respecto de algunas propuestas, a veces simplemente pienso que PSeInt está bien como está, otras veces sé que habría que agregar algo pero no tengo el tiempo necesario, o peor aún, la arquitectura base de PSeInt no está preparada para ello, y en otros casos necesito que alguien me discuta un poco más, con argumentos convincentes, para mostrarme que estaba equivocado. Ha pasado un poco de todo a lo largo de la vida de PSeInt, pero por primera vez este año un usuario no del todo conforme con mis mejoras y/o con mi velocidad de desarrollo decidió intentar implementar él mismo algunos cambios y lo logró (hablo de Martín Carbone, al que espero que le tengamos que agradecer en breve varias mejoras en el intérprete).

Meterse con las tripas de PSeInt es todo una travesía, no es fácil adentrarse en mi código, carente de documentación en muchas partes, con errores heredados de otras épocas, mañas personales por doquier, etc. Pero poder hacerlo igual es la esencia del software libre. Después de interesantes discusiones tanto en el foro como en mi correo personal, creo que al final no tenemos visiones taan diferentes, y si bien hay varios cambios suyos que siguen sin convencerme, hay muchos otros muy interesantes y que seguramente requirieron mucho y muy buen trabajo de su parte (todavía no analicé el código). Uno de los próximos objetivos es analizar en detalle esos cambios para ir seleccionándolos e incorporándolos en PSeInt. Es de alguna forma una experiencia nueva para mi, porque si bien PSeInt es software libre, durante estos 10 años nadie más aportó código para este proyecto (aunque sí muchas ideas, igualmente valiosas).

Finalmente, les cuento que estoy maquinando un mecanismo para empaquetar ejercicios de pseudocódigo con sus soluciones ocultas para que PSeInt corrija/diagnostique/califique/lo-que-sea el trabajo del alumno automáticamente. Imaginen que el alumno abre un archivo con PSeInt, y este le muestra un código incompleto para que implemente lo que falta, un enunciado describiendo la tarea, y que al ejecutarlo PSeInt informa si el resultado es o no el esperado. Por ejemplo, un código que lee un vector, y al final muestra los 3 valores mayores, pero le falta el algoritmo que determina cuales son esos 3 valores mayores luego de la lectura y antes de informar el resultado. El alumno deberá implementar esa parte, y PSeInt probará el algoritmo con casos de prueba empaquetados previamente por el profesor para verificar si la solución es correcta. Mi objetivo es poder hacer evaluaciones en mis cursos clase por medio, para medir cuanto van entendiendo los alumnos al final de cada unidad temática, pero de forma que la evaluación no consuma mucho tiempo de clase, ni requiera excesivo tiempo de corrección debido a la gran cantidad de alumnos. Por eso, pretendo hacer que PSeInt pueda automatizar el proceso, y de paso podría servir también para armar conjuntos de ejercicios para que los alumnos practiquen en sus casas, con un mejor e inmediato feedback sobre sus resultados.

Creo que recién veremos lo más interesante terminado para principios de 2015, planeo usar varias de estas mejoras para el dictado de clases en el primer cuatrimestre, pero seguramente veremos antes versiones de prueba para empezar a experimentar.

2 comentarios:

  1. dado los siguientes datos por cada alumnos de una universidad :codigo carrera ; nombre de alumno; notas de plan de estudio; notas practica laboral; y nota de examen de titulo, obtener:
    cantidad de alumnos procesados
    nombre, carrera y nota de titulacion del mejor de ellos.

    en psint

    ResponderEliminar