5. Editores

En este curso haré uso de Emacs con Spacemacs por ser el más utilizado en el desarrollo con Clojure [^6], además de ser totalmente Opensource, estar programado en un lenguaje funcional vivo (Common Lisp), ser Emacs un exponente de la programación funcional, por un flujo constante de actualizaciones y por su fantástica integración con atajos de Vim (no sé vivir sin ellos, ¡socorro!). Sinceramente no encuentro qué más puedo pedir a una herramienta para desarrollar software funcional. ¿Qué pueda jugar al Tetris o me haga de terapeuta? Pues también es posible en Emacs ejecutando tetris o doctor.

Ello no significa que no puedas utilizar otros editores, aconsejable si eres nuevo en estas tierras, que centren tus energías en el código y no tanto en "¿cómo se usa este editor tan raro?". Por ello voy a dejar una lista de los más populares para que encuentres cuál encaja en estos momentos contigo.

Emacs (con Cider)

Emacs

Ventajas

  • Altamente configurable.

  • Muy maduro.

  • Compatible con casi cualquier sistema operativo y arquitectura.

  • Preparado para la programación funcional.

Contras

  • Gran inversión de tiempo en aprendizaje y configuración.

  • No apto para todos los perfiles, sobre todo si estás iniciándote.

Recomendado si…

  • Necesitas un entorno de trabajo personalizado.

  • Te gusta construir tu propio editor.

  • Quieres ampliar el potencial del editor con otras herramientas.

  • Deseas programar con Lisp.

  • Te gustan los retos.

Vim/Neovim + Fireplace

Neovim con Fireplace plugin

Ventajas

  • Altamente configurable.

  • Grandísima comunidad.

  • Compatible con casi cualquier sistema operativo y arquitectura.

  • Sensación de alta productividad con sus miles de atajos de teclado.

Contras

  • Gran curva de dificultad. Pasará tiempo hasta que realices los atajos de forma natural.

  • Instalación de multitud de plugins. Es un editor no un IDE, deberás buscar e instalar todas las extensiones que creas necesario hasta que funcione como una herramienta preparada para su uso diario: compatibilidad con lenguajes, autocompletador, árbol de directorios, linter…

  • Clojure es tratado como un lenguaje cualquiera dentro de sus herramientas.

Recomendado si…

  • Trabajas con el terminal.

  • Buscas un entorno de gran productividad.

  • Dispones de una larga experiencia como desarrollador.

  • Tu equipo no tiene muchos recursos.

Light Table

Light Table

Ventajas

  • Original y muy bien diseñado para Clojure.

  • Previsualizador de cambios en el propio editor.

  • Comandos rápidos.

  • Sistema de plugins variados para cualquier desarrollo.

  • Interfaz minimalista con un diseño práctico.

Contras

  • La última gran actualización vino de 2016… y aunque el creador quiere actualizar algunos paquetes, parece ser que el desarrollo está estancado.

  • No existe instalador oficial para Linux. También añado que he encontrado problemas al ejecutar en Ubuntu.

Recomendado si…

  • No quieres complicarte para trabajar con Clojure.

  • Quieres tener una vista en vivo sin recurrir a herramientas externas.

  • Si apoyas los proyectos de Kickstarter, fue una de las iniciativas que más ruido causaron en su momento.

Nightcode

Nightcode

Ventajas

  • Minimalista.

  • Muestra en vivo el contenido de tus variables.

  • Fácil de utilizar.

  • Construido en Clojure para programar en Clojure

Contras

  • …y nada más. Olvídate de hacer un HTML o cualquier otro lenguaje.

  • Sin extensiones.

Recomendado si…

  • Te estás iniciando en Clojure.

  • Buscas un debug potente.

  • Quieres sencillez.

Sublime Text + SublimeREPL + Enhanced Clojure

Sublime Text

Ventajas

  • Sencillo de utilizar.

  • Plugins para hacerlo compatible con casi cualquier herramienta.

  • Eficiente. Cuando más lo notas es con archivos grandes.

  • Rápido de instalar y abrir.

Contras

  • Es gratuito, pero no libre.

  • Las actualizaciones no aportan nuevas características, se centran en la estabilidad. La filosofía es que lo extiendas por medio de plugins.

  • Los plugins para Clojure son buenos, pero no excelentes.

Recomendado si…

  • No te vas a centrar solo en el desarrollo de Clojure.

  • Quieres una herramienta estable.

  • No quieres invertir tiempo en aprender a usar un editor.

Atom + Proto REPL + Paredit + Parinfer

Atom

Ventajas

  • Creado y mantenido por GitHub.

  • Buena integración con GitHub.

  • Visualmente precioso.

  • Plugins destacables.

Contras

  • No aporta realmente nada al desarrollo de Clojure, hay que instalar 3 plugins independientes.

  • Las diferencias entre VSCode y Sublime Text son anecdóticas.

Recomendado si…

  • Buscas un editor enriquecido similar a VSCode o Sublime Text.

  • Quieres un editor equilibrado, no muy grande pero tampoco minimalista.

IntelliJ IDEA Community + Cursive

IntelliJ

Ventajas

  • Si buscas la IDE más completa del mercado, lo acabas de encontrar: integraciones, atajos, paleta de comandos, lenguajes, snippets, autocompletador excelente… y todo en grandes cantidades.

  • Fácil de instalar y utilizar.

  • Muy estable.

Contras

  • No soporta oficialmente Clojure, debes instalar el plugin Cursive.

  • Es gratuito pero no libre, tanto el editor como la extensión Cursive.

  • No está preparado para desarrollar web. Hay que dar el salto a su versión de pago Ultimate Edition o WebStorm.

  • Sin duda, el más pesado de la lista.

Recomendado si…

  • Buscas una herramienta profesional ya equipada, instalar y usar.

  • Usas un equipo que puede soportar un software exigente.

  • No tienes problemas de hacer un desembolso económico si fuera necesario.

Visual Studio Code + Calva

Visual Studio Code

Ventajas

  • Editor más popular.

  • Soporte a cargo de Microsoft con todo lo que conlleva: estabilidad, soporte para TypeScript, Azure…

  • Una biblioteca interminable de plugins, y además bastantes actualizados.

  • Sentirás que no te falta de nada: integración con git, test, debug, lanzador de builders, terminal…

  • Estéticamente muy parecido a Sublime Text o Atom.

Contras

  • No apto para un equipo con pocos recursos.

  • La conexión con REPL puede darte algún dolor de cabeza.

  • Calva está muy desarrollado y funcional, pero no terminado.

Recomendado si…

  • Buscas una navaja suiza para tus proyectos.

  • Quieres una alternativa gratuita de IntelliJ y Sublime Text.

  • Usas JavaScript.

Spacemacs

Spacemacs

Ventajas

  • Posiblemente el editor más equipado para trabajar con programación funcional.

  • Automatización: se instala una capa para usar Clojure a las mil maravillas sin tocar nada. Es un editor que no es necesario configurarlo, todo es autoinstalado según las necesidades. Es increíble.

  • Todas las herramientas que puedes necesitar para usar REPL.

  • Compatible con todos los atajos de Neovim/Vim de forma nativa.

  • Lo mejor de 2 mundos: la productividad de Neovim/Vim y las herramientas de Emacs.

Contras

  • Necesitarás instalar previamente Emacs.

  • Su dificultad de uso radica en que es totalmente diferente al resto. Los atajos son llamados nemotécnicamente a partir de la barra espaciadora.

  • Está orientado a desarrolladores con una buena experiencia que quieran dar un salto.

Recomendado si…

  • Quieres trabajar con otros lenguajes de programación funcional.

  • No quieres gastar muchos recursos.

  • Buscas trabajar con atajos de Neovim/Vim.

Consejo que nadie me dijo: Si quieres allanar la curva de dificultad, y no has tocado antes Emacs o Vim, ve directo a IntelliJ IDEA Community o VSCode sin dudarlo. Bastante dramático es el cambio de objetos a funcional para encima pelearte con una herramienta que debería ayudarte.

Resumen

  • IntelliJ IDEA Community o VSCode son alternativas fantásticas y rápidas, tan solo hay que instalar el plugin adecuado. Ideal para nuevos desarrolladores.

  • El editor más utilizado es Emacs con el Framework Spacemacs y el módulo de Clojure activo. No obstante está recomendado para desarrolladores con cierta experiencia.

Ejercicios

  1. Instala un solo editor, configúralo y especialízate.

  2. Aprende a conectar con un servidor de REPL levantado por ti.

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Will you buy me a coffee?

Visitors in real time

You are alone: 🐱