Sobre editar…
Mar 22, 2009 Articulos
Developers still spend a lot of time with plain text. No matter how many wizards and other sorcerers we develop most coding is still in plain text. Most of the information you keep should also reside in plain text because you never know if the tool you are using will be around in five years. It’s a good bet that you’ll be able to read plain ASCII (and probably Unicode) for the next century or so.
The Productive Programmer, Neal Ford y David (FRW) Bock, O’Reilly 2008
El editor de texto es quizás la mas preciada de las herramientas para un programador. El código de cada uno de los programas y scripts que escribimos esta en texto plano, y como bien dice la cita anterior incluso los datos que manipulan esos programas están de alguna forma en texto plano también.
¿Pero le damos la importancia que merece? Como programador, en un día normal, si excluyo las reuniones y conferencias telefónicas, el resto del tiempo, estoy frente a un editor de texto o un navegador web, rara ves me enfrento con herramientas que no reciban datos a través del teclado. Esto da la pauta de lo mucho mejor que se puede programar si se utiliza bien el editor de texto. Hasta llegue a leer en algunos artículos de distintos blogs sobre que al entrevistar gente para puestos de IT una de las preguntas que no puede faltar es “¿Que editor de texto usa?” (Por cierto, las respuestas “validas” que daban los autores eran Emacs, Vim y Textpad).
Bram Moolenaar, autor de vim en su charla de Google Edu sobre como editar texto de forma efectiva distingue tres pasos para ser mas efectivo:
- detect inefficiency
- find quicker way
- make it a habit
Son tres pasos muy simples, que imponen una curva de aprendizaje bastante alta, dado que al principio vamos a encontrar muchas insuficiencias en la forma que editamos texto, y de hecho hasta tengamos que cambiar el programa que usamos para encontrar mejores formas de hacer las tareas diarias.
El mismo Moolenar tiene un muy buen texto “Seven habits of effective text editing” en el que distingue varios puntos en los que uno tiene que poder contar con su editor de texto para ser efectivo:
- Move around quickly: Navegar el texto de forma cómoda, sin depender del mouse o teclas que se ubican lejos de la posición normal de las manos en el teclado (como pageup/down y las “flechitas”).
- Don’t type it twice: Poder tener varios textos copiados en varios clipboards y elegir cual pegar, facilitar elegir donde va a ser pegado el texto, permitirme hacer tareas como reemplazar X palabra en el texto que pegue, etc.
- Fix it when it’s wrong: “typos” es uno de los tipos de bugs mas faciles de cometer y donde el editor de texto te puede dar mas ayuda.
- A file seldom comes alone: ¿Que programa mas o menos complejo ocupa un solo archivo de codigo fuente? La habilidad de editar mas de un archivo a la ves es obligatoria.
- Let’s work together: El editor en si es solo una parte de todo el arsenal de herramientas para modificar texto, ¿Para que hacer que el editor ordene alfabéticamente algo cuando ya tengo sort? ¿Para que hacer una compleja función de buscar en todos los archivos del directorio cuando ya tengo grep?
- Text is structured: Que el editor nos ayude a mantener la estructura del texto/código, como la identacion en Python (si usas espacios que te autoidente con espacios, si usas tabs con tabs), que te avise cuando no cerraste una llave en C, o si tenes un end sin begin en un bloque de Ruby).
- Make it a habit: Encontrás la mejor forma de hacer una tarea, sabes que te ahorraste 10 o mas pasos que hubieras tenido que hacer para obtener el mismo resultado de otra manera: ¿Vas a tirar ese conocimiento a la basura? Editar texto es algo que aprendes y mejoras todos los dias y no tenes por que perder ese conocimiento cuando pases a trabajar en otro lenguaje o en otro sistema operativo, utiliza un editor que te permita abstraerte de esa particularidad y lo tengas disponible en cualquier lado.
En su libro “The Pragmatic Programmer” (Addison-Wesley 2000) Andrew Hunt y David Thomas distinguen tres grandes puntos al momento de elegir el editor: Configurable, Programable y Extensible.
Configurable: hace referencia a la capacidad de editar cosas como los colores, tipografía, y apariencia en general. Suena trivial pero como aclare antes la mayor parte del tiempo que uno pasa frente a la computadora programando lo hace en frente del editor de textos, es muy importante que luzca amigable, cómodo, y nos permita resaltar las cosas que nos importan.
Hay un viejo tip entre programadores que dice que cosas como los “magics numbers” (números dentro del código que aparezcan directamente en las funciones y no declarados en una variable o constante cuyo nombre nos ayude a identificar la razón de la misma) deben resaltarse con un color chocante, que salga del esquema de colores al que estamos acostumbrados hasta si se quiere decir así “se vea feo”, para que tratemos de tener la menor cantidad (o si es posible ninguno) de ellos.
Programable: Muchas tareas que hacemos cuando escribimos texto responden a un patrón, y la mayoría de esos patrones podemos programarlos para que el editor de texto lo haga por nosotros. Extender el editor con un lenguaje de scripting como Python o Perl puede resultar muy útil cuando trabajamos, a veces invertir 10′ en una pequeña extensión nos ahorra horas. Hay editores que tienen su propio lenguaje de scripting, otros que utilizan lenguajes conocidos (Emacs con Lisp), y otros que brindan ambas opciones (Vim tiene bindings para Python, Perl y Ruby, y aparte tiene su propio “lenguaje”).
Extensible: Aparte de la configuración y las opciones, esta el hecho de poder extenderlo mas allá del uso que le damos hoy, en este punto es difícil distinguir una buena herramienta que este preparada “para lo desconocido”, pero nos ayuda mirar al pasado y ver que editores como vim, emacs, y otros han sido usados para APL, C, Pascal, y después se adaptaron a lenguajes como Ruby y Perl sin mayores cambios.
¿Como elegir un editor? Joel Spolsky tiene el “The Joel Test” donde habla de 12 pasos a seguir para tener mejor codigo y en el punto 9 dice “Las mejores herramientas que el dinero pueda comprar”, y si bien coincido con la idea que el gasto en herramientas y programas para que los equipos de programadores trabajen mejor y mas cómodos se traduce en mejor código, en el caso del editor de texto encontré, en mi experiencia, que los mejores son gratuitos.
Las funcionalidades de editores como Vim y Emacs no estan en Ultraedit, Textpad o BBEdit, existen varios comparaciones de editores, y como la mayoría de las comparaciones suelen estar viciadas por quien hizo la comparación, así que un buen criterio el que puede dar una fuente neutral de información como Wikipedia.
Les dejo a ustedes la tarea de elegir uno, pero el desafió es hacerlo conscientemente, no dejar que el entorno en el que trabajan o el lenguaje de programación que usan elija las herramientas con las que tienen que lidiar a diario. Me gustaría leer sobre su elección en los comentarios.
Marzo 23rd, 2009 at 02:46
probe algunos ides bastante comodos pero funcionan solo cuando estoy en mi maquina, si tengo q laburar en otro lado tengo q instalarlo y muchas veces no existe esa posibilidad.
asi q prefiero usar un editor q esta presente en todos los lugares donde trabajo y a su vez es potente (cuando t acostumbras a usarlo).
vim es mi eleccion.
Marzo 23rd, 2009 at 12:23
Sobre editar……
En este articulo se explica la importancia de los editores de texto y su injerencia en el mundo de la programación. Hay algunas recomendaciones sobre como elegirlos y también se nombran las mejores opciones….
Marzo 23rd, 2009 at 13:28
Pruebo editores de texto desde hace mucho tiempo y ninguno (comercial o free) me termina de convencer. De momento no tengo un editor de cabecera. El último “gran” editor que usé por mucho tiempo es UltraEdit (mencionado arriba), que hace poco fue destronado por Notepad++ (por mencionar editores para win32). Coincido que lo free tiene su ventaja: es sexy cuando una herramienta no-comercial le pasa el trapo a una comercial.
La mejor forma de aprender a usar una herramienta nueva es experimentar con ella, haciendo muchas veces que se enlentezca el laburo (por esto es que mucha gente tiene reticencia al cambio, además de la paja de cambiar). Pero así y todo, y por experiencia, creo que es la mejor manera de aprender una herramienta: usándola realmente para el laburo, y no “practicando a ver qué pasa” (aplicable a sistemas operativos también, guiño guiño).
Dicho sea, cierro con lo mismo que abrí el comment, y es que no tengo un editor de cabecera. ¿Por qué? Sencillamente, me faltan probar muchos más antes de emitir una valoración sensata.
Marzo 23rd, 2009 at 13:41
@Santiago: Justamente el objetivo del post es motivar esa búsqueda de forma consiente. Hay que elegir un editor, tanto sea para programar como para editar. Hay extremistas que dicen que una ves que tenes un editor de cabecera lo tenes que utilizar para todo, incluyendo emails y posts en blogs. Particularmente aun no adquirí esa destreza (tengo instalado un plugin en Thunderbird para usar vim desde ahí , pero no me convence, y de hecho me estan dando ganas de pasar mi cliente de email a mutt justamente para aprovechar vim ahi).
Pero en lo que quiero hacer fuerza es en resaltar la importancia de elegirlo bien, de lo mucho que se gana, y si bien algunos editores tienen una curva de aprendisaje grande, se paga sola.
Yo cuando entre a mi trabajo actual estaba verde con vim, pero me lo puse como uno de los objetivos, y ya me habia desencantado con otras opciones (Emacs en Linux/FreeBSD, y EditorPlus/UltraEdit en Windows).
Marzo 24th, 2009 at 13:33
ya q estan los dos aca aprovecho para hacer una sugerencia. q les parece aumentar un cachito el tamanio de la fuente y usar una sans serif.
no mejoraria la lectura desde la pantalla?
Marzo 24th, 2009 at 15:42
A mi gusto Monaco es una de las mejores fuentes.
Existen varios criterios sobre elegir fuentes para programadores, de hecho aca hay una lista de las mas comunes. Da para charlarlo en otro articulo por ahi.
Este es justo el final de mi .vimrc:
if !has("unix")
set shell=cmd.exe
set shellcmdflag=/c
set noshellslash
set guifont=Lucida_Console:h10:cANSI
else
set guifont=Monaco\ 14
endif
Marzo 30th, 2009 at 14:23
[...] Mark Pilgrim, autor de Dive Into Python (y preparando Dive Into Python 3) hace cada tanto una lista del software que esta usando llamada “Essentials” (la ultima es “Essentials 2008”) en la que enumera las versiones que usa, que tan contento esta y que opciones esta viendo. Me parece interesante de hacerlo porque las herramientas que cada uno utiliza son muy importantes y siempre es bueno hacer una elección pro-activa de las mismas. [...]
Mayo 6th, 2009 at 18:53
[...] ya mencioné en otros posts la elección de las herramientas con las que trabajo es una obsesión, una sana pero exigente [...]
Mayo 20th, 2010 at 12:36
Buenas noches, este wordpress es excelente. Es excelente leer esto dando vueltas. Sigan comentando con esta excelencia. Hasta pronto
Enero 28th, 2011 at 04:18
~,, I am really thankful to this topic because it really gives up to date information -~:
Enero 29th, 2011 at 03:55
I went over this web site and I believe you have a lot of excellent information, saved to fav (:.
Junio 8th, 2011 at 17:13
This kind of surgical treatment itself is usually accomplished underneath oftentimes basic or maybe local have you considered anesthesia. In part dependent upon the doctor, on the other hand around the scope from the breast lift on it’s own. The best way considerable the particular enterprise can be might figure out how quite a few incisions are needed plus ways in which very long they will ought to be, that could not surprisingly impact healing and in addition scars.
Junio 8th, 2011 at 17:20
Мебель для ванных комнат ведущих производителей, сантехника, санфаянс, всегда в наличии с доставкой, на нашем сайте http://vasha-vanna.ru
Junio 19th, 2011 at 09:54
I relish, cause I discovered just what I was looking for. You have ended my 4 day lengthy hunt! God Bless you man. Have a nice day. Bye
Julio 16th, 2011 at 15:38
Whats up this is somewhat of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with HTML. I’m starting a blog soon but have no coding skills so I wanted to get guidance from someone with experience. Any help would be enormously appreciated!
Julio 18th, 2011 at 01:31
Hello, I think your blog might be having browser compatibility issues. When I look at your website in Chrome, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, great blog!
Agosto 1st, 2011 at 05:17
Do you have a spam problem on this site; I also am a blogger, and I was wondering your situation; we have created some nice procedures and we are looking to swap strategies with other folks, be sure to shoot me an e-mail if interested.
Diciembre 17th, 2011 at 08:29
I just like the helpful information you supply in your articles. I’ll bookmark your blog and test once more right here frequently. I am slightly sure I will learn many new stuff right here! Best of luck for the next!
Enero 5th, 2012 at 07:23
You got a very nice website