¿Los mejores editores de programación? Una batalla interminable sin un ganador claro
Publicado: 2022-03-11Independientemente de la aparente evidencia de lo contrario, los programadores son humanos. Y, como a todos los humanos, nos gusta aprovechar nuestra libertad de elección. Ya sea que esa elección se trate de tomar la pastilla roja o la pastilla azul, usar un vestido o pantalones, o usar un entorno de desarrollo sobre otro, la elección que hacemos nos ubica en un grupo de personas u otro. La elección, inevitablemente, viene después de nuestra evaluación de las opciones. Y habiendo hecho una elección, tendemos a creer que cualquiera que elija de otra manera cometió un error.
Puede buscar fácilmente en Internet y encontrar cientos de debates sobre Emacs vs Vim. Incluso si los lee todos, será imposible elegir objetivamente un ganador. Sin embargo, ¿la elección del entorno de desarrollo le dice algo sobre la calidad del trabajo que puede ofrecer un desarrollador? ¡Absolutamente no!
Un gran desarrollador podría escribir su código en el Bloc de notas y aún así ofrecer cosas excelentes.
Ciertamente, hay muchas cosas que los profesionales consideran cuando seleccionan herramientas para su trabajo. Esto es cierto para todas las profesiones, incluido el desarrollo de software. Sin embargo, muy a menudo, la selección se basa en el gusto personal, no en algo fácilmente tangible.
Los programadores pasan la mayor parte de su tiempo mirando el entorno de desarrollo, por lo que es natural que queramos algo bonito además de funcional. Cada entorno de desarrollo tiene sus pros y sus contras. En su conjunto, son una fuerza impulsora de la industria del desarrollo de software.
¿Cuáles son las cosas que un desarrollador debe evaluar al elegir un conjunto de herramientas de programación como un editor de programación de elección? La respuesta a esta pregunta no es tan simple como podría parecer. El desarrollo de software es casi un arte, y hay muy pocos factores "borrosos" que separen una obra maestra de un coleccionable caro.
Cada lenguaje de programación, ya sea Java, C#, PHP, Python, Ruby, JavaScript, etc., tiene sus propias prácticas de desarrollo relacionadas con la estructura, la depuración y la implementación del proyecto. Sin embargo, una cosa que todos tienen en común es la edición de código. En este artículo evaluaremos diferentes plataformas de desarrollo desde la perspectiva de la tarea más común en el desarrollo de software: escribir código.
IDE frente a editor de texto de uso general
Un entorno de desarrollo integrado (IDE) (o entorno de desarrollo interactivo) es una aplicación de software que proporciona instalaciones integrales a los programadores de computadoras para el desarrollo de software. Un IDE normalmente consta de un editor de código fuente, herramientas de automatización de compilación y un depurador, y muchos admiten muchos complementos y extensiones adicionales.
Los editores de texto son aplicaciones más simples. En comparación con los IDE, generalmente corresponden solo al segmento del editor de código de un IDE. Sin embargo, a menudo son mucho más que eso. Los IDE se crean para cumplir el propósito del desarrollo de software, mientras que muchos editores de texto también están diseñados para ser utilizados por personas que no son desarrolladores.
Los lenguajes de tipo estático pueden obtener muchos beneficios de los IDE. Debido a las estrictas reglas de escritura, es posible que el IDE detecte errores e inconsistencias de nombres entre clases y módulos, e incluso entre archivos, directamente en el editor, antes de compilar. Esta funcionalidad viene de serie con muchos IDE y, por esa razón, los IDE son muy populares para los lenguajes de tipo estático.
Sin embargo, es imposible hacer lo mismo para los lenguajes tipificados dinámicamente. Por ejemplo, si el propio código puede generar un nombre de método, construido a partir de una serie de cadenas concatenadas, tratar de detectar errores de denominación en lenguajes dinámicos requiere nada menos que ejecutar el programa real. Debido a que uno de los principales beneficios de los IDE no se aplica a los programadores de lenguaje dinámico, tienen una mayor tendencia a quedarse con editores de texto como Sublime. Como nota al margen, esta es también una de las principales razones por las que el movimiento de desarrollo basado en pruebas ha crecido en torno a comunidades lingüísticas dinámicas y no ha tenido tantos seguidores en los lenguajes estáticos.
¿Qué hace a un gran editor de programación?
Además de una serie de características diferentes para varios idiomas, cada editor de programación debe tener una interfaz de usuario limpia y bien organizada. El atractivo estético general tampoco debe pasarse por alto. No es solo una cuestión de verse bien, ya que un editor bien diseñado con la elección correcta de fuentes y colores ayuda a reducir la fatiga visual y le permite ser más productivo.
En el entorno de desarrollo actual, una curva de aprendizaje empinada es una responsabilidad, independientemente del conjunto de características. El tiempo siempre es valioso, por lo que es fácil acostumbrarse a un buen editor. Idealmente, el programador debería poder comenzar a trabajar de inmediato, sin tener que pasar por demasiados aros. Una navaja suiza es una herramienta práctica y útil, pero cualquiera puede dominarla en minutos. Asimismo, para los editores de programación, la sencillez es una virtud.
Interfaz de usuario, funciones y flujo de trabajo
Echemos un vistazo más de cerca a la interfaz de usuario, las diferentes funciones y capacidades, y las herramientas de uso frecuente que deberían formar parte de cualquier editor de programación.
Los números de línea, por supuesto, deben estar activados de forma predeterminada y ser fáciles de activar o desactivar.
Los fragmentos son útiles para insertar bloques de texto estandarizados en un diseño fijo. Sin embargo, la programación tiene mucho que ver con decir las cosas solo una vez, así que tenga cuidado con los fragmentos, ya que pueden dificultar el mantenimiento de su código en el futuro.
La capacidad de eliminar o verificar la sintaxis del archivo actual es útil, al igual que la capacidad de iniciarlo. Sin esta función, un programador debe cambiar a una ventana de línea de comando externa, elegir y ejecutar el comando correcto y luego recorrer los mensajes de error para encontrar la fuente del error. Sin embargo, la pelusa debe estar bajo el control del programador, porque el retraso en el que incurre la pelusa podría interrumpir al codificador en un momento crucial.
El documento en línea es útil siempre que no interfiera, pero tener una página de navegador abierta en las definiciones de clase a veces es más útil, especialmente cuando hay muchas clases relacionadas que no se extienden directamente entre sí. Es bastante fácil cortar y pegar código de la documentación del navegador al código que se está escribiendo, por lo que la complejidad adicional de la documentación en línea a menudo se vuelve menos útil, de hecho, más molesta, a medida que aumenta el conocimiento de la documentación por parte del programador.
La finalización de palabras es útil ya que es rápida y casi tan confiable como la documentación en edición, a la vez que es menos intrusiva. Es satisfactorio ingresar solo unos pocos caracteres de una palabra y luego presionar enter para obtener el resto. De lo contrario, uno trabaja bajo la tensión del exceso de escritura, aborrecido por los programadores perezosos, que quieren escribir ee
en lugar de la exponentialFunctionSquared
más larga al cuadrado. La finalización de palabras satisface al minimizar la escritura, al imponer nombres coherentes y al no estorbar.
Cambiar el nombre de las variables y funciones en todo el programa es útil, pero debe poder revisar los cambios y asegurarse de que su código no esté roto. Una vez más, la finalización de palabras es una casa intermedia útil, ya que funciona para todos los idiomas; puede usar nombres largos para elementos que tienen una vida útil prolongada, sin incurrir en una sobrecarga de tipeo. Puede usar referencias a ellos a través de un nombre más corto localmente, para acortar expresiones que de otro modo podrían extenderse en demasiadas líneas. Si necesita cambiar el nombre, los nombres largos son únicos, por lo que este enfoque funciona en todos los idiomas y todos los archivos.
Los archivos de origen a veces pueden crecer mucho. El plegado de código es una buena característica que simplifica la lectura de archivos largos.
Buscar/cambiar con limitación de alcance a local, incremental o global con metacaracteres y expresiones regulares son parte del requisito mínimo en estos días, al igual que el resaltado de sintaxis.

Descripción general de los editores de programación populares
A lo largo de los años, pasé por varios editores, y esto es lo que pienso de ellos:
Emacs: Uno de los editores más populares del mundo. La mayor característica de Emacs es su extensibilidad, a pesar de la complejidad de su lenguaje de extensión (incluso puedes jugar Tetris con
Mx tetris
). Los fanáticos de Emacs consideran que su interfaz basada en terminal es una gran característica, mientras que otros podrían debatir que es un inconveniente. En mi experiencia personal, me pareció demasiado para adoptar y aprender. Estoy seguro de que si sabes usar Emacs nunca usarás otra cosa, pero asumir y aprender toda la cultura era más de lo que quería hacer. Sin embargo, su popularidad entre los desarrolladores demuestra que está lejos de ser una reliquia de los viejos tiempos y sigue siendo parte de nuestro futuro también.Vi/Vim: Vim es otro potente editor basado en terminal y viene de serie con la mayoría de los sistemas operativos xNIX. Aparte de tener una interfaz diferente a la de Emacs, mi vista es prácticamente la misma. Si creciste con eso, estoy seguro de que nunca usarás nada más. Tener habilidades de Vi hará que su vida sea mucho más simple cuando opere a través de SSH y otros lugares difíciles, y no tendrá problemas con la velocidad, una vez que se familiarice con las pulsaciones de teclas. Si bien no es tan difícil de descifrar como Emacs, la curva de aprendizaje sigue siendo bastante empinada, y definitivamente podría usar algunas características agradables de un editor de ventanas.
SublimeText: fiel a su nombre, SublimeText es un hermoso editor de texto con toneladas de funciones. A diferencia de algunos editores similares, SublimeText es de código cerrado, por lo que no se puede modificar a un nivel bajo. SublimeText ofrece la simplicidad de los editores de texto tradicionales, con una interfaz de usuario sencilla y rápida. Muchos desarrolladores lo encuentran más fácil de usar que Vim, y esto es especialmente cierto para los recién llegados. La curva de aprendizaje no es tan empinada. Si bien la interfaz de usuario es mínima y sencilla, SublimeText ofrece algunas características ingeniosas, como un código de visualización reducido a la derecha de la interfaz de usuario, que permite a los usuarios desplazarse rápidamente por su código y navegar con relativa facilidad. Si bien no es completamente gratis, la versión de demostración con funciones limitadas sí lo es. Desbloquear todas las funciones te costará $70.
Atom es el resultado de un esfuerzo de GitHub para producir un editor de programación para una nueva generación de desarrolladores. Si bien todavía es un trabajo en progreso, Atom es un editor muy capaz con una comunidad vibrante de desarrolladores interesados en nuevas extensiones, bibliotecas de JavaScript y más. Sus desventajas incluyen algunas peculiaridades de la interfaz de usuario, la posibilidad de que algunos paquetes complementarios se comporten mal y problemas de rendimiento informados al trabajar con archivos (muy) grandes. Pero el proyecto está en desarrollo activo y es probable que se mejoren las deficiencias actuales. Atom es un proyecto de código abierto y se puede modificar fácilmente para adaptarlo a sus necesidades.
Nano: Excelente en un rincón estrecho, pero no lo suficientemente rico en funciones como para evitar que el pensamiento inevitable se deslice en la mente de uno de que debe haber una manera más rápida de hacer esto mientras uno lucha con las pulsaciones de teclas para sangrar un bloque de código, mientras mantiene los comentarios alineados. arriba en la columna 80! Ni siquiera tiene resaltado de texto, y no debe usarse para nada más que cambios en el archivo de configuración.
TextMate2: el mayor inconveniente de TextMate es que solo se ejecuta en Mac. Como lo expresaron sus creadores, "TextMate lleva el enfoque de Apple a los sistemas operativos al mundo de los editores de texto". Al unir los fundamentos de UNIX y la GUI, TextMate selecciona lo mejor de ambos mundos, en beneficio tanto de los expertos en secuencias de comandos como de los usuarios novatos. Es el editor elegido por muchos desarrolladores de Ruby, Python y JavaScript, y también es muy compatible con Bash o Markdown. Al momento de publicar este artículo, TextMate 2 aún está en Beta, pero ya cuenta con un ecosistema de complementos muy maduro que promete extenderlo incluso más allá de las extensiones de Emacs.
jEdit: basado en Java y considerado lento por algunos. La configuración lista para usar puede alejar a ciertas personas, pero jEdit puede ser extremadamente rápido si se configura correctamente, además de tener un aspecto extremadamente agradable.
Eclipse: otro IDE ampliamente utilizado, Eclipse es muy popular entre los desarrolladores de Java, pero se ha adaptado a muchas plataformas diferentes. Podríamos argumentar que su arquitectura monolítica es una roca que lo arrastrará bajo el agua, pero sigue siendo una de las plataformas más populares entre los desarrolladores.
Aptana Studio: un completo IDE de aplicación web de código abierto. Está disponible como complemento de Eclipse, lo que lo hace popular entre algunos desarrolladores de Java. La versión independiente es aún más sencilla y ofrece una gama de diferentes temas y opciones de personalización. Las capacidades de gestión de proyectos de Aptana también pueden ser útiles para los programadores que perfeccionaron sus habilidades en Eclipse. Si bien las versiones anteriores sufrieron problemas de rendimiento en algunas plataformas de hardware, estos problemas se solucionaron en Aptana Studio 3 y deberían ser cosa del pasado.
NetBeans: otro IDE de código abierto relativamente popular con soporte multiplataforma. Es algo más lento en el inicio que los editores lean como SublimeText, y la elección de complementos es limitada en comparación con algunas alternativas. Muchos desarrolladores de Java han llegado a amar NetBeans gracias a la perfecta integración de SCM y la compatibilidad con HTML5. El soporte de NetBeans para PHP también ha mejorado en las últimas versiones.
JetBrains: ofrece una familia de IDE para Java, Ruby, Python y PHP. Todos se basan en el mismo motor central. Muy capaces por derecho propio, los IDE de JetBrains han ido ganando un número cada vez mayor de seguidores. Sin embargo, no son soluciones gratuitas de código abierto, aunque hay disponible una versión de prueba de 30 días y el precio es razonable.
Komodo Edit: Komodo Edit tiene un gran potencial y, sin embargo, está lleno de pequeños errores e idiosincrasias molestos que pueden ser frustrantes por su falta de ortogonalidad. Komodo Edit se siente abarrotado, lo cual es una pena porque claramente tiene una capacidad inmensa. Sigo volviendo a Komodo Edit con la esperanza de haberme perdido algún principio organizativo, y cada vez, soy rechazado por un torbellino de capacidad desorganizada.
Geany: Geany no es un jugador de gran poder como muchos de los otros editores en esta lista. Se define más por “lo que no es” que por “lo que es”. No es lento, no tiene mucha herencia de los viejos tiempos, no tiene una capacidad de macro, o mucha capacidad de ventana múltiple en el búfer. Sin embargo, las cosas que hace, las hace bastante bien. Es, quizás, el menos exigente de todos los editores que probé y todavía puede hacer el 90 por ciento de lo que esperaría del editor de un programador. Geany se ve lo suficientemente bien en Ubuntu, que es una de las razones por las que lo elegí como mi editor preferido.
Mi conclusión
Sería presuntuoso declarar a uno solo como el mejor editor de programación entre estas grandes herramientas. Y hay bastantes editores que ni siquiera probé. No existe una solución única para todos. Esto es lo que me obligó a probar varios editores diferentes; si está más interesado en la longevidad del editor, también querrá leer la evaluación de los editores de código de Roben Kleene.
Actualmente estoy usando Geany, pero es porque se ajusta a los requisitos que tengo. Con Geany y mucha ayuda de Perl/Gimp/Audacity/Sox, puedo desarrollar y mantener el código base de Java para las aplicaciones de Android que desarrollo, prepararlas para la compilación en diferentes configuraciones para múltiples distribuidores, fuente, lint , compile, dex y produzca archivos .apk
, y entregue estas aplicaciones a nivel mundial.
Su línea de desarrollo puede prescribir un conjunto diferente de requisitos, y espero haberle ahorrado algo de tiempo en la búsqueda de los editores de programación más apropiados.