La programación es un animal extraño. El código, los símbolos e instrucciones que dictan cómo se va a comportar una máquina al ejecutar un programa, puede ser un dolor de cabeza para cualquiera que no tenga conocimientos y se enfrente a un fragmento cualquiera. Puede serlo hasta para los programadores experimentados (esa fea costumbre de no comentar el código...).
Preparar el código de forma correcta para ejecutarlo en un entorno seguro requiere de un ritual propio. Los sistemas operativos ya cuentan con editores de texto preinstalados, pero sus capacidades son muy limitadas. Es importante tener claro que elegir un editor adecuado es crucial a la hora de programar, así como que no todos son aconsejables para todos los niveles.
Aún así, el mundo de los editores de texto es una enorme jungla. Algunos cuentan con interfaces gráficas elaboradas, que resultan más intuitivas y que permiten trabajar en grandes proyectos (aquí entrarían los grandes entornos de desarrollo integrado o IDEs). Por otra parte hay otros que son minimalistas y básicos en su concepción, que recompensarán a aquellos que tengan la paciencia de vérselas con una curva de aprendizaje elevada.
Algunos de estos editores están dirigidos a plataformas y lenguajes específicos (como por ejemplo Swift e iOS), mientras que otros tienen un propósito más general cuyas funcionalidades se pueden ampliar mediante plugins que aumentan su capacidad de trabajo.
Ahora supongamos que estás empezando a programar y que te hallas en el punto de tenerte que decidir por un editor. Probablemente ya te hayan recomendado alguno pero, por si decides explorar por tu cuenta (un hábito que todo buen programador debería tener), vamos a darte una serie de diferencias entre editores e IDEs que esperamos te ayuden a tener una idea más clara de qué puede ajustarse mejor a tus necesidades.
Editores de texto "anabolizados"

En esta categoría entrarían programas como Atom o Sublime Text. Atom es gratuito y teóricamente Sublime Text cuesta dinero, si bien puedes mantener la versión de evaluación _ad infinitum_. Yo personalmente llevo un tiempo utilizando Atom para mi trabajo diario, gracias al soporte que ofrece para el lenguaje Markdown. Sinceramente, es de lo mejor que he probado en este sentido.
Cuando abres Atom o Sublime Text por primera vez te da la impresión de estar ante una especie de bloc de notas sofisticado. Es cuando empiezas a trabajar con ellos te das cuenta de que sus funcionalidades van mucho más allá.
Para empezar, los dos vienen equipados de serie con resaltado de sintaxis para prácticamente cualquier lenguaje de programación con el que se pueda trabajar. Esto puede parecer algo trivial cuando estás empezando, pero una vez que conoces bien un lenguaje y tienes claro cómo debería ser el código escrito para él, es fundamental para que el código se pueda leer e interpretar en un golpe de vista (y más cuando alguien no ha tenido la cortesía de comentarlo, volvemos a ello).
Tanto Atom como Sublime Text cuentan con un ecosistema de paquetes para extender sus capacidades. Ambos cuentan con un amplio panorama, ofreciendo soluciones que van desde mejorar el procesado de textos (las ya comentadas capacidades para Markdown, por ejemplo) a plantillas HTML, integración con GitHub, herramientas de control de calidad del código y mucho más.
Son recomendables si ya se tiene algo de experiencia trabajando con un lenguaje concreto, ya que para terminar de afinar sus habilidades será necesario instalar algún paquete (por ejemplo uno para la ejecución de código y un depurador, aunque de esto hablaremos luego). Por tanto, hay que tener más o menos claro lo que se está buscando.
Entornos de desarrollo integrado o IDEs

Los IDEs suelen ser la primera experiencia con editores dedicados de la mayoría de programadores noveles. Se recomiendan siempre en todos los cursos de desarrollo de aplicaciones (en mi caso particular me recomendaron Eclipse) o de páginas web, y casi siempre por el mismo motivo: son muy poderosos y concentran todo lo necesario para ejecutar un programa que el usuario escriba en su interfaz. También cuentan con resaltado de sintaxis por defecto.
Como ya hemos dicho, un IDE es una herramienta muy poderosa. La diferencia fundamental con los editores de texto como Atom es que su potencia puede abrumar al usuario. Muchos ofrecen extensiones para nuevos lenguajes de programación y _frameworks_ que crean nuevos IDEs dentro de un IDE.
Por otra parte, para quienes se inician en el mundo de la programación suelen ser la mejor manera de empezar a escribir y ejecutar código. Ya no sólo por el resaltado de sintaxis, sino porque cuentan también con correctores de sentencias que detectan palabras mal escritas y con depuradores que señalan los errores en el código (que se presentan aunque la sintaxis de la instrucción sea correcta).
De hecho la depuración resulta esencial al tratar con programas largos y complejos. Gracias a esta característica se puede ver el código en acción mientras se ejecuta, lo que permite tomar medidas mucho más precisas sobre los errores en lugar de estar mirando a un montón de líneas en una pantalla esperando a que la solución se presente por arte de magia.
Hay muchísimos IDEs donde elegir para distintos lenguajes de programación, con capacidades y funcionalidades muy dispares. Personalmente recomiendo a quienes estén empezando a programar que, al menos al principio, se fíen de las recomendaciones que les hagan en sus centros de formación. Cuando ya lleven un tiempo dedicándose a ello, entonces puede valer la pena explorar.
Editores de texto puros y duros

Ya hemos comentado que el Bloc de Notas de Windows, el Gedit de Linux o el TextEditor de Mac tienen sus limitaciones. Con los programas de los que vamos a hablar ahora todas sus capacidades se multiplican por millones, pero también vale la pena comentar que son sólo para los más experimentados, para los que llevan toda una vida trabajando con ellos o para los más _geeks_.
Nos referimos a bestias como Vim o Emacs. Vale la pena diseccionarlos un poquito, especialmente para aquellos que no se las hayan tenido que ver nunca con una de estas dos creaciones históricas. El viaje va a ser, como mínimo, interesante.
Empecemos por el principio. Vim es muy complicado de describir. También es muy complicado de usar. A simple vista parece un editor de texto en su mínima expresión, de esos que nos retrotraen a los tiempos en los que el ratón era una cosa que se usaba para hacerle compañía al teclado y que los menús eran algo que le pasaba a otra gente.
Como los menús no están en el menú (valga la redundancia) de Vim, se funciona con el a base de comandos de texto. Todos ellos se encuentran detallados con profusión en la Vim Cheat Sheet, pero vale la pena comentar unos cuantos:
- _:w_ se usa para guardar el trabajo.
- _:q!_ sirve para salir del programa
- _y_ se utiliza para copiar fragmentos de texto
- _p_ sirve para pegar lo copiado
Y eso es sólo el principio.
En cuanto a Emacs, se trata de un proyecto desarrollado por Richard Stallman durante los años 70 del siglo pasado en el MIT que se ha seguido continuando hasta el día de hoy. Es el competidor natural de Vim y también desprecia la interfaz en favor de comandos, que se pueden consultar en la Emacs Reference Card. Algunos ejemplos:
- _C-x C-f_ abre un archivo.
- _M-DEL_ borra una palabra.
- _M-w_ copia una región marcada.
- _C-y_ sirve para pegar lo copiado.
Visto desde fuera, tanto Vim como Emacs resultan intimidatorios para los usuarios que no están acostumbrados a ellos. Sin embargo, hay muchísimo potencial en ellos que permite escribir en una gran cantidad de lenguajes de programación y a gran velocidad.

Para esto tenemos explicación. Cualquier programa con una interfaz gráfica requiere que se interactúe con él en una combinación de pulsaciones en el teclado y movimientos del ratón. Hay elementos que piden que saquemos las manos del teclado y tengamos que coger el ratón, lo que resulta poco eficiente. Con Emacs y Vim se puede escribir sin soltar el teclado y conseguir un flujo de trabajo muy eficiente.
Por lo demás, se trata de editores muy personalizables que nos permiten elegir entre distintos resaltados de fuentes, colores del texto y demás, si bien es necesario tocar los archivos de configuración a mano (al menos en sus versiones para Linux). Personalmente no tengo mucha experiencia con estos editores, quizá más con Vim cuando aprendía a escribir scripts Bash para Linux. Debo decir que no me familiaricé mucho con él.
Conclusiones
¿Con qué debes empezar a programar? Personalmente creo que un IDE puede ser lo mejor para novatos. Después siempre se puede dar el salto a los editores enriquecidos como Atom o Sublime Text. Los más sencillos como Vim o Emacs sólo los he visto siendo usados de forma eficiente (y con cierta envidia por mi parte, debo añadir) por parte de personas muy expertas con un gran dominio de lo que hacen.
Como ya he dicho, hay opciones para todos los gustos. Mis recomendaciones no son absolutas ni pretenden sentar cátedra. Si algo pretendo con este artículo no es, nada más, que dar a conocer las que se pueden encontrar. La última palabra como usuario la tienes tú, que en última instancia tendrás que elegir lo que más se adapte a tus necesidades.
En Genbeta | Codingame o cómo divertirte mejorando tus dotes de programación
Ver 13 comentarios
13 comentarios
Usuario desactivado
Emacs es un excelente sistema operativo, aunque le falta un editor de textos decente.
Exia
Muy buen artículo, de los que se extrañaban por acá. Sin sesgos de ningún lado, solo enfatizando en lo importante, que son solo herramientas para un propósito final -programar en este caso- y no una religión como se ha visto en otros casos. En particular me agradó ver Vim siendo ejecutado en Windows, ya que es costumbre verlo en plataformas Linux, creo que es un ejemplo de la ecuanimidad de este escrito. Muy bien por el redactor.
En lo personal, cuando comencé en el mundo de la programación, empecé con NetBeans (ya imaginarán que lenguaje estaba aprendiendo) e intruseando en otros lenguajes con Notepad++. Luego me decanté por Sublime Text debido que es multiplataforma y terminé mis andanzas con GNU nano en Linux. Luego dejé de programar y comencé mis estudios de Derecho, pero siempre de la mano con Sublime a la hora de tomar apuntes (es otra de sus bondades, tiene un entorno limpio y que no lleva a distracciones, aparte que me había acostumbrado a él). Tengo como tarea pendiente aprender a usar Vim / Vi, cualquier persona que sepa usarlos se merece mis respetos.
Itero, mis congratulaciones al redactor, artículos como estos deben estar en un blog de tecnología.
ojoquetecojo
Una pregunta sobre este tema chicos:
Me pasé a Atom hace poquito, venía de Aptana y echo mucho de menos la comodidad del FTP y el sistema de ficheros desplegable siempre presente como columna a la derecha de la pantalla. Los plugins FTP para Atom que probé no me convencieron demasiado, parecían muy amateurs. ¿Conocéis algún modo de editar código remoto con Atom o debería adaptarme al workflow offline/online que parecen proponer los editores modernos? Gracias.
miquelangeldd
Yo beso el suelo que pisan los que hicieron PHPStorm.
w0lfch4m4n3
Sinceramente, para coger un editor de texto y tener que doparlo hasta que deja de ser un editor de texto y se convierte en un IDE, ¿no es mejor coger un IDE directamente?
Yo he usado de todo: Atom, Sublime, Vi, Vim, NotePad, PSPad, NotePad++, NetBean, Eclipse ...
Al final, la mejor opción: JetBrains y sus diferentes IDEs.
sysmaya
Para mi usando PHP, Html, el mejor y gratuito es Pspad.
Ligero, con soporte de resaltado para muchos lenguajes y conexion con FTP.
el último danzarín rostro
Los IDEs de Jetbarins están a años luz de cualquier otra cosa, a muchísimos años luz. No hay color.
Alex
Solo un comentario, el código no debería estar comentado debería tener significado por si mismo :-P