jueves, agosto 02, 2007

Emacs, la edición de código y yo

En la entrada pasada escribí algo muy básico sobre IDE's, Editores y compiladores. Esta vez hablaré del proceso de edición de código y mi paso de Eclipse a Emacs.

El Programador Ideal y El Programador Real
El programador ideal (aquel que no se equivoca) tendrá una labor de la forma.

Genera los esqueletos del fuente que necesita con scripts-generador de código del IDE. Escribe el resto del código, compila y listo.

Con valores imaginarios sería algo así:
Generación de Código 5%
Escribír de código 90%
Compilación 5%

El caso real (o será solo mio?) sería:
Genero los esqueletos, Escribo código, pruebo, corrijo... eventualmente me arrepiento del nombre de alguna variable, refactorizo, me doy cuenta que algo se puede flexibilizar mejor, genero nuevo archivo (Cut-Paste), Corrijo errores de espacios de nombres, compilo, pruebo -> y así hasta terminar.

Compilación 10%
Generación de Código 10%
Escribir de Código 40%
Refactorización 5%
Cut-Paste 10%
Leer él código buscando errores 25%

Si uno se pone a ver bien, casi todo corresponde a edición.

La solución en los IDE's (mas bien de Eclipse para trabajar con Java) para hacer mas fáciles y mejores es la siguiente:

En Eclipse por ejemplo para generar código esta la pestaña source. Ahí uno puede generar getters, setters y overrides. Refactor permite cambiar nombres a las clases y además en todos los archivos del proyecto.

Una pestaña de edición: Con esto se pueden hacer pequeños find-replace, el problema resulta cuando son varios archivos, o los criterios de búsqueda no son fácilmente expresables. A veces hay posibilidad de hacer lo mismo con regex

Escribiendo código hay tres cosas fundamentales. Autoidentación, Autocompletar y facilidad para desplazarse. En Eclipse la autocompletación es mientras se va escribiendo (por ejemplo cuando se escribe punto) o también por medio de C-SPACE hasta da ideas para los nombres de las variables y además solo aconseja opciones que tienen sentido tanto sintáctica como semánticamente. Para desplazarse realmente hay un menú a la izquierda con las clases, métodos y atributos.

Para seleccionar texto está Shift y las diferentes combinaciones con Ctrl, Pg up, Pg Down y flechas. Y para leer código como hacer sin un buen highlighting?

Y ahora Emacs

Que tiene Eclipse que no tiene Emacs? Algo fundamental es la integración de la documentación. Pese a que esto no es edición, juega un papel importante en la autocompletación. Con esto uno puede saber cual es el método que uno quiere escribir y esto definitivamente ahorra tiempo a alguien que no se sabe los mil y un detalles en cuanto a parámetros y clases de java.

Pero bueno, las ventajas de eclipse se acaban cuando uno se pasa a trabajar a otro lenguaje. Los plugins disponibles para C, C++, Ruby resultan insuficientes. Carecen de todas las ventajas que acabo de mencionar.

En que es mejor Emacs?

Universalidad y Extensibilidad.
Emacs por ejemplo posee Modos para cualquier lenguaje concebible y resulta mucho mas extensible que cualquier IDE que conozca. Realizar funciones en e-lisp es mucho mas alcanzable que meterse con el API de Eclipse.

Todo está en el teclado.
Esto pareciera algo trivial. Pese a que soy alguien que no sabe teclear (es decir, usaré máximo 6 dedos de 10) resulta mas fácil concienciarse de las acciones repetitivas cuando uno las hace tecleando que cuando se hacen con mouse o por medio de un montón de wizards del editor de turno.

Emacs no pasa de moda.
JEJEJE esto parece bobo, pero no lo es. Alguna vez programe en Visual Basic 6.0. Después trate de hacer lo mismo que hacía con .Net y no fui capaz de hacer nada. Los programas que se mantienen pese a los cambios no hacen sino demostrar que poseen un buen diseño. Emacs es como los cocodrilos, si sigue existiendo... sin cambios significativos después de tanto tiempo es por algo.

No hay ventanas estorbosas!
Si. El caso típico son las búsquedas incrementales. Si uno va a buscar algo para que va a necesitar una ventana enorme sobre el texto? Por ejemplo... una búsqueda incremental en IExplorer vs Firefox quien gana?

Y es mas liviano que cualquier IDE.

1 comentario:

JOSHUA dijo...

Hola.... yo recien empiezo a usar Emacs para edicion de jsp y javascripts... me ha parecido muy bueno por la cantidad de cosas que se pueden hacer y de comando para el tratamiento de texto... pero todavia no he podido encontrar una forma de seleccionar el texto verticalmente o por columnas para copiar... dicen que hay una seleccion rectangular pero no funciona o nose como funciona para coger solo una columna... esto es especialmente util si tienes 10 variables definidas al inicio y quieres copiar solo el nombre de las 10 variables para inicializarlas mas abajo o solo para documentar...
Saludos