Es por eso que su ciclo de lectura-evaluación-impresión es tan asombroso

Una de las cosas que hace que la comunidad tecnológica sea tan especial es que siempre estamos buscando formas de trabajar de manera más eficiente. Todos tienen su conjunto de herramientas favorito, lo que los hace funcionar mejor. Como desarrollador de UI profesional, Chrome DevTools y Node.js read-eval-print-loop (REPL) se convirtieron en mis herramientas favoritas desde el principio. Noté que me permitieron trabajar de manera más eficiente y me permitieron aprender cosas nuevas más rápidamente.

Esto realmente me hizo sentir curiosidad por investigar por qué esta herramienta es tan útil. Podría encontrar fácilmente muchas publicaciones de blog que explican qué son los REPL y cómo usarlos, por ejemplo, aquí o aquí. Pero esta publicación aquí está dedicada al por qué (como en el por qué los REPL son una gran herramienta para los desarrolladores).

"La razón principal por la que las escuelas se alejan de Java como lenguaje de enseñanza son los altos estándares de los programas Hello-world". - Stuart Halloway

¿Qué es un REPL?

REPL significa lectura-evaluación-impresión-bucle y esto es básicamente todo lo que hay que hacer.

El tiempo de ejecución de su aplicación se encuentra en un estado específico y el REPL le ayuda a interactuar con él. El REPL leerá y evaluará los comandos e imprimirá el resultado y luego volverá al inicio para leer su próxima entrada. El paso de evaluación puede cambiar su tiempo de ejecución. Este proceso puede verse como una entrevista con su aplicación para consultar su estado actual.

En otras palabras, el REPL hace que su tiempo de ejecución sea más tangible y le permite probar hipótesis al respecto.

Según Stuart Halloway, la ausencia de un REPL en Java es la razón más importante por la que las escuelas comenzaron a cambiar a otros lenguajes para enseñar programación. Algunas personas incluso usan REPL para escribir mejores pruebas unitarias.

¿Ya utilizo un REPL (herramienta similar a) hoy?

Esta explicación básica podría haberle recordado algunas herramientas que usa todos los días. Si conoce y utiliza una de las siguientes herramientas, la respuesta es "sí":

  • Las herramientas de desarrollo de su navegador (como Chrome DevTools)
  • Tu terminal / shell
  • Cuadernos Jupyter
  • El proceso REPL en Clojure
  • Repl.it, jsfiddle.net o jsbin.com
  • Validadores de expresiones regulares en línea

¿Por qué es tan útil el REPL?

Esta pregunta me mantuvo despierto por la noche porque no entendía qué nos hace ineficientes en primer lugar. Comencé a investigar algunos efectos psicológicos comunes y traté de vincularlos a mis interacciones diarias con REPL. Aquí están mis tres hipótesis principales:

Estar en el flujo

El flujo es el estado mental de funcionamiento en el que una persona que realiza una actividad está completamente inmersa en una sensación de concentración energizada, participación total y disfrute en el proceso de la actividad. (fuente)

Creo que todos estamos familiarizados con este estado, nos hace extremadamente productivos y el tiempo vuela básicamente. Desafortunadamente, es bastante fácil "perder" el flujo, por ejemplo, cuando te interrumpen o cuando tienes que esperar un tiempo. Aprendí que esto puede suceder muy rápido: los investigadores descubrieron que un segundo es aproximadamente el límite para que el flujo de pensamiento del usuario permanezca ininterrumpido.

El REPL no necesita compilar o implementar su código. Esto conduce a un tiempo de respuesta muy corto (<100 ms). Por lo tanto, puede probar sus hipótesis sin perder el flujo.

Refuerzo positivo

El refuerzo positivo implica la adición de un estímulo de refuerzo después de un comportamiento que hace que sea más probable que el comportamiento vuelva a ocurrir. (fuente)

Este es el efecto que más me atrae. Tu cerebro aprende a favorecer ciertas acciones cuando fueron recompensadas en el pasado. Esta recompensa podría ser una bonificación de su jefe después de un mes sobresaliente o un simple "¡Buen trabajo!" de su instructor de esquí.

Cada vez que tu experimento REPL tiene éxito y resuelves un acertijo / problema, ¡tu cerebro también se siente recompensado! Esto también ocurre cuando codifica en un IDE común. Pero el REPL responde mucho más rápido y le permite iterar con más frecuencia. Entonces, más experimentos conducen a más refuerzo. Este efecto te hace usar el REPL con más frecuencia y te mantiene atento (en lugar de distraerte revisando los correos electrónicos).

Amnesia digital

Tendencia a olvidar información que se puede encontrar fácilmente en línea mediante motores de búsqueda de Internet. (fuente)

Tengo que admitir que a menudo mezclo sintaxis de Java, Python y JavaScript, porque esa información se puede encontrar en Internet. Me preguntaría "¿Necesito usar add () , append () o push () para agregar un nuevo elemento a una matriz en JavaScript?". Por lo tanto, para mí, un ejemplo de este efecto es recordar nombres de métodos de API y referencias de lenguaje.

En el REPL, puedo ver las funciones disponibles inmediatamente con autocompletar:

Lo bueno es que esto funciona más allá de los objetos estándar de los lenguajes de programación. ¡Esto funciona para todos los marcos y módulos , lo que hace que REPL sea más poderoso que su IDE! Ya no es necesario comparar los números de versión de los módulos y las referencias de API:

“La verdad solo se puede encontrar en un lugar: el código.” - Robert C. Martin, Clean Code

Espero que este artículo te haya ayudado a comprender cómo funciona tu cerebro y cómo el REPL puede ayudarte a ser más productivo.

Tengo curiosidad por ver si estás de acuerdo con mis hipótesis o si conoces más herramientas para ser un desarrollador más eficiente.

Actualización 13/02/2019:

También escribí una publicación de blog sobre el uso de REPL en entornos Cloud Foundry.

Mira este video de DJ Adams si quieres ver el REPL en acción :)