Activa las notificaciones para estar al tanto de lo más nuevo en tecnología.

Algojammer: un editor para Python muy peculiar

Una idea revolucionaria sobre cómo depurar código podría llevar a todo un nuevo paradigma en programación. Así de innovadora es la idea de Bert Victor: Algojammer.

Bret Victor se dedica a diseñar interfaces, es un científico de cómputo e ingeniero en electrónica el cual es conocido por sus pláticas sobre el futuro de la tecnología. A Victor se le conoce por la idea de que la promover la programación si se tienen las herramientas correctas así como los entornos de codificación adecuados. Algojammer es un intento que pretende hacer esto y curiosamente, se está pidiendo la colaboración de todos.

¡Aleluya! La nueva versión de Google Chrome bloqueará anuncios invasivos y engañosos

Victor pues ha intentado crear el entorno del cual habla con frecuencia en sus pláticas. la razón por la cual sus ideas no han sido tomadas tan en cuenta es en muchos sentido un misterio porque de acuerdo con los que lo conocen, tiene ideas innovadoras.

Una de sus ideas, que no necesariamente es nueva, es que la programación debería ser más fácil si fuese más directa, es decir, si al conexión entre lo que se escribe y lo que ocurre fuese más evidente. Sin duda la idea ya ha sido pensada antes pero es claro que tampoco se puede solucionar fácilmente porque el problema es complicado. Es difícil construir un entorno que haga posible la interacción entre el código y lo que hace de forma confiable y simple. Los esfuerzos más recientes en la depuración llamada “time travel”, es decir, la capacidad de moverse en la ejecución de un programa hacia adelante y hacia atrás ha hecho posible entender cómo se construyen muchas cosas que funcionan.

Algojammer es pues las ideas y conceptos de Victor llevados a la realidad. Chris Knott, quien ha trabajado en Algojammer en GitHub dice: “Este es un editor de código que busca probar los conceptos [de Victor] para escribir algoritmos en Python. Fue escrito principalmente para asistir al programador cuando quiere resolver el tipo de problemas algorítmicos que aparecen en competiciones como Google Code Jam, TopCoder y HackerRank”.

“El principio es: por omisión, el código se vuelve a correr inmediatamente después de hacer cualquier cambio. Algojammer es un depurador “de viaje en el tiempo” u “omniscente”, donde los pasos de ejecución pueden brincarse arbitrariamente. No hay realmente el concepto de depuración en el sentido que se controla la ejecución del código a través de “breakpoints” o bien “yendo paso a paso, línea por línea”. La ejecución del código debe pensarse como un hecho físico acerca de las líneas que el programador ha escrito. De la misma manera, podríamos considerar e; “número de letras ‘e’ en el código”, o “el promedio de longitud de cada línea”. Es decir, “la ejecución” del código es un hecho estático que está enteramente determinado por el código”.

El siguiente video quizás lo explica mejor:

El código puede descargarse y el código fuente está bajo la licencia de Apache 2.0.

Hay que tener en cuenta que:

  • La actual implementación de Algojammer es compleja.
  • Puede tirar el sistema si se hacen cosas locas, inesperadas.
  • Es un trabajo que no está terminado y que se sigue trabajando en el mismo.
    Chris Knott piensa re-escribirlo desde cero para hacerlo más estable, pero tiene muchas dificultades al respecto.
  • Si usted lector, es experimentado en Python, quizás podría ayudarle y Knott apela a esta ayuda.

No hay duda que este proyecto es una buena oportunidad que tiene un potencial muy interesante. Una herramienta como la propuesta no parece haber estado antes presente y podría ser estupenda en la enseñanza de la programación.

Sin embargo, hay quienes dudan de esta idea de Bret Victor, por ejemplo, que aunque parece un trabajo revolucionario, resuelve hasta el momento “problemas de juguete”, pero de ahí a escalar a “problemas reales de programación” no parece nada sencillo.

Es claro que Algojammer es por el momento una buena idea que solamente resuelve problemas simplones, de juguete, pero si la idea puede evolucionar a lago más importante sin duda sería un paso novedoso en el desarrollo de herramientas de programación. Habrá que seguirle el paso a Algojammer.

Comentarios