emacs lisp slime lisp-in-a-box

emacs - Lisp In A Box-¿Por qué está iniciando un servidor?



slime lisp-in-a-box (4)

Decidí volver a LISP (no lo he usado desde mis clases de IA) para estar más cómodo con la programación funcional en general, así que descargué Lisp In A Box (que usamos en una clase anterior) que viene con CLISP y Emacs.

Cuando lo ejecuto, dice:

Conectado en el puerto 1617. Toma este REPL, hermano, y que te sirva bien.

¿Que? Así que miré en la página web de Lisp In A Box más de cerca y encontré esto:

SLIME es un entorno de desarrollo integrado para Emacs que interactúa con una implementación Common Lisp en un socket de red. Se puede encontrar mucha información sobre SLIME en el nodo SLIME en CLiki. El manual para SLIME está disponible en formato PDF en línea.

Entiendo un poco lo que es SLIME (una especie de extensión de emacs, ¿no?) Pero, ¿por qué en el mundo hay un editor de texto que inicia su propio servidor y se conecta a él?


Los enchufes son más flexibles que las tuberías. Por un lado, SLIME le permite conectarse a servidores Swank en la red, lo cual es muy útil para realizar arreglos en vivo en máquinas remotas con procesos de larga ejecución (como servidores web). Teniendo en cuenta esto, ¿por qué agregaría otra capa de complejidad al abstraer la comunicación de tal manera que sea compatible con las tuberías y los zócalos? No es como si las tuberías fueran más simples de programar que las tomas, de todos modos.


Obtiene un REPL (leer-evaluar-imprimir-bucle) ejecutándose en paralelo, de modo que puede compilar y probar fragmentos de código sobre la marcha desde su editor. "Practical Common Lisp" (disponible gratuitamente en la web) tiene una buena explicación para esto, y es un muy buen libro para aprender Lisp.


Bueno, Slime inicia el proceso de Lisp para brindarte un entorno de desarrollo integrado. Para que pueda probar y depurar su código sobre la marcha y también poder inspeccionar objetos. Creo que la arquitectura con sockets fue elegida para una mejor portabilidad entre diferentes lisps (Btw, Slime también admite Clojure y MIT Scheme ) y OS-es (Slime también funciona en Windows). También permite el desarrollo multiplataforma: puede probar su software en la arquitectura de destino desde su Emacs.

Entonces, creo que esta decisión es grandiosa, simplemente no deberían poner swank (Slime back-end) en los servidores de producción.


El propósito es que Lisp se ejecute en paralelo.

Slime se conecta a la sesión y luego puede tener el mismo entorno, definiciones, etc. de muchas ventanas diferentes (o incluso máquinas). Esto significa que puede iniciar su aplicación y depurarla sobre la marcha, por ejemplo.

Para más información, mira este blog .