
Para mí gusto, la implementación más feliz de esto es la que actualmente utilizo en Ubuntu. En Linux se utilizan mucho los llamados escritorios virtuales, con lo cual en lugar de mostrarse todas las ventanas cuando el usuario lo desea, se muestran simultáneamente todos los escritorios. La superioridad de esta opción por sobre el licuado de ventanas que se produce en Exposé cuando se tienen muchos programas abiertos proviene del hecho de que además de registrar que programa estamos usando, registramos también en qué lugar de la pantalla está ubicado. Al ver los escritorios completos, esta información se conserva, y nos permite reconocer más fácilmente la aplicación que buscamos, por obra y gracia de alguna extraña combinación entre memoria espacial y fotográfica.

Hace un tiempo se me ocurrió una aplicación de esta idea a la programación. Gran parte del tiempo, si los programas tienen una complejidad sustancial los archivos de código que los componen se vuelven largos (en líneas) con lo cual es vital estar permanentemente scrolleando dentro de los mismos. Muchas veces me encuentro pasando varias veces sobre un archivo para encontrar lo que busco. Si bien podría usar la búsqueda para llegar rápidamente al lugar que deseo, no me resulta intuitivo hacerlo. La existencia de este problema es innegable: un recuerdo particular que conservo de Google son los programadores con cuatro (4!) monitores de 24" dispuestos de forma vertical uno al lado del otro, para poder visualizar una mayor cantidad de código simultáneamente y sin tantos "cambios de contexto" entre una ventana y otra.

La idea es entonces sencilla: en lugar de mostrar una barra de desplazamiento vertical convencional, se muestra en el costado del editor de código un thumbnail o miniatura del archivo completo de código, con alguna indicación de que parte se está viendo en este momento. La idea es que la estructura irregular del código fuente permite identificar fácilmente los elementos del mismo, y llegar con un clic al lugar deseado. A su vez, un menú contextual desplegable puede aparecer cuando se cambia de pestaña dentro del editor para acceder directamente a la sección deseada del archivo.
Como para probar, hice un script con PIL que crea una imagen a partir de un archivo fuente en Python, a razón de 1 pixel por caracter, y con un coloreado de sintaxis minimalista (declaraciones y comentarios). Esta es la pinta que tiene mi trabajo práctico de Teoría de Lenguajes después del proceso:

Haciendo unas pruebas rápidas me pareció que si se reduce el ancho de las miniaturas a un 50% del tamaño que utilicé, todavía resulta identificable la estructura del código, y se ahorra espacio en pantalla (puesto que es vital que la miniatura esté siempre a la vista). En mi opinión esta sencilla idea puede ser muy cómoda para programar. Ahora solo me falta convencer a alguien de que la implemente en Eclipse o algún otro editor Open Source.
Mientras programaba esto hace unos días me encontré con que Microsoft Research tiene un paper de 2006 (que no pude leer, dado que es pago) sobre source code thumbnails (miniaturas de código fuente), pero no encontré ningún programa que lo implemente al día de hoy.
3 comentarios:
La idea suena novedosa. Habría que ver si es aplicable. Digo, si en verdad uno reconoce el código viéndolo muy "de lejos" y si el sistema aumenta de algún modo la productividad del programador.
por eso amo el outline del eclipse.
Hola!
Pablo, yo tengo fe en que debería poder funcionar bien, tal vez con algunos hints adicionales como que el preview enfatice los espacios entre código (por ejemplo, que cuando el programa salte 2 lineas el preview salte 4, o cosas así). Estoy tratando de armar un plugin para GEdit como para hacer la prueba, si lo logro lo posteo acá.
Anónimo, el outline es piola pero no tiene el feedback gráfico intuitivo que tiene una imagen. La idea es que al verlo registres de forma no demasiado consciente donde estás parado, al igual que lo hacés con una hoja de papel. El outline si bien es cómodo es un ejercicio consciente, tenés que buscar en una lista de items verdad?
Saludos ;)
Publicar un comentario