REPLUn bucle Lectura-Evaluación-Impresión, REPL por las siglas en inglés de «Read-Eval-Print-Loop», también conocido como alto nivel interactivo o consola de lenguaje, es un entorno de programación interactiva basado en un proceso cíclico donde se lee un fragmento de código ingresado por el usuario, se evalúa y se devuelve un resultado al usuario; las partes de programa escrito en un entorno pueden compartir un estado global mientras el programa esté activo. El término se utiliza normalmente para referirse a interfaces de programación similares al clásico entorno interactivo de programación de la máquina Lisp. Entre los ejemplos comunes se cuentan las interfaces de línea de comandos y entornos similares de lenguajes de programación. Es especialmente característico de los lenguajes de script.[1] ResumenEn un REPL, el usuario introduce una expresión, REPL evalúa y muestra el resultado. El nombre «bucle lectura-evaluación-impresión» viene de los nombres de las funciones primitivas de Lisp las cuales implementan esta funcionalidad:
El entorno de desarrollo, entonces, retorna al estado de lectura, creando un bucle, que termina cuando se cierra el programa. La utilización de este tipo de entornos facilita la programación explorativa y la depuración, puesto que el programador puede inspeccionar el resultado mostrado antes de decidir qué expresión aportar para la siguiente lectura. El bucle lectura-evaluación-escritura involucra al programador más frecuentemente que el clásico ciclo editar-compilar-ejecutar-depurar. Puesto que la función Se pueden crear REPLs compatibles con cualquier lenguaje basado en texto. El soporte de REPL para lenguajes de compilador es comúnmente realizado implementando un intérprete sobre una máquina virtual que provee una interfaz al compilador. Ejemplos de REPLs para lenguajes de compilador serían CINT ─y su sucesor Cling─, ch y BeanShell. UsoPrácticamente todas las consolas UNIX son REPLs para lenguajes de Turing completo. Como una consola, un entorno REPL permite a los usuarios acceder a características relevantes de un sistema operativo además de proveer acceso a funcionalidades de programación. El uso más extendido para los REPLs fuera de las consolas de sistemas operativos es para prototipado de software instantáneo. Otro usos incluyen cálculo matemático, creación de documentos que integran análisis científico (por ejemplo IPython), mantenimiento de software interactivo, benchmarking y exploración de algoritmos Un REPL puede convertirse en una parte esencial del aprendizaje de un nuevo lenguaje ya que provee un retroestímulo para el aprendiz. ImplementaciónPara implementar un REPL en Lisp, es necesario únicamente implementar estas tres funciones y una función de bucle infinito (obviamente, la implementación de eval será complicada, dado que se debe también implementar todas las funciones primitivas como car o + y operadores especiales como if.). Hecho esto, un REPL básico es una única línea de código: (loop (print (eval (read))))
Una posible implementación de eval es un intérprete recursivo que actúa sobre el árbol de sintaxis abstracta creado por read. Otra posibilidad es compilar el árbol de sintaxis en código máquina y ejecutarlo. Las implementaciones reales de REPLs en Lisp son en ocasiones mucho más complicadas. FuncionalidadesFuncionalidades típicas provistas por un REPL Lisp incluyen:
Referencias
Enlaces externos
|
Portal di Ensiklopedia Dunia