Lisp
Una familia de lenguajes que data de 1958, cuyos programas se escriben como las mismas listas que manipulan.
27 pasos en 1 tours, desde lo básico hasta programas completos.
Los tours
- Primera versión
- 1958
- Creado por
- John McCarthy
- Tipado
- Dinámico y fuerte; todo es una expresión, el código es una lista
- Los fragmentos siguen
- ANSI CL (SBCL)
- Extensiones de archivo
- .lisp, .lsp, .cl
Para qué sirve
Lisp es el segundo lenguaje de alto nivel más antiguo que sigue en uso, y la fuente de la que tomaron casi todos los demás: la recolección de basura, los condicionales como expresiones, las funciones de primera clase y el REPL interactivo aparecieron aquí primero. El dialecto que practican estos fragmentos es Common Lisp — la rama grande y estandarizada que mueve el buscador de vuelos de Google (ITA), el núcleo de Grammarly y décadas de código de investigación que nunca necesitaron una reescritura.
Lo que mantiene fieles a quienes programan Lisp a diario es el flujo de trabajo: una imagen viva que redefines de a una función, restarts que te dejan corregir un error y continuar en vez de arrancar otra vez, y CLOS, un sistema de objetos con despacho múltiple que todavía le gana a casi todo lo que vino después. Los programas se construyen de adentro hacia afuera, en vivo, con el compilador (SBCL compila a código nativo) a una tecla de distancia.
Los paréntesis de los que todo el mundo se burla son justamente el punto: el código se escribe directamente como la estructura de listas que el propio lenguaje manipula, y por eso las macros — funciones que escriben código — se escriben en Lisp normal y no en un lenguaje de plantillas aparte. La destreza está en aprender a leer el árbol en lugar de la puntuación, y se transfiere a todo lenguaje orientado a expresiones que llegues a tocar.
De dónde viene
John McCarthy especificó Lisp en el MIT en 1958 como una notación matemática para computar con expresiones simbólicas, y Steve Russell se dio cuenta de que eval simplemente podía implementarse — convirtiendo un artículo en un intérprete. Durante los años sesenta y setenta Lisp fue el lenguaje de la investigación en inteligencia artificial, y le brotaron dialectos en cada laboratorio: Maclisp, Interlisp, Scheme y las máquinas Lisp que lo llevaron al hardware.
Common Lisp fue la tregua de 1984 que fusionó los dialectos enfrentados en un solo lenguaje deliberadamente grande, y llegó a estándar ANSI en 1994 — el primer lenguaje orientado a objetos en tener uno, gracias a CLOS. El invierno de la IA se llevó a las empresas de máquinas Lisp, pero el estándar hizo que el lenguaje sobreviviera en hardware común, con compiladores libres a código nativo como CMUCL y más tarde SBCL.
El estándar no cambia desde 1994, y en la comunidad eso cuenta como virtud: el código de los noventa corre hoy, y el ecosistema de bibliotecas creció alrededor de Quicklisp y no del vaivén del lenguaje. Mientras tanto la familia siguió ramificándose — Scheme en la enseñanza, Racket en la investigación, Clojure sobre la JVM — y todo lenguaje que agregó lambdas, REPLs o macros reimportó un pedazo de 1958.
Cómo se siente teclearlo
Teclear Lisp es cuestión de cadencia de paréntesis: ráfagas de paréntesis abiertos, una cabeza defun o let, luego argumentos separados por un solo espacio y al final la corrida de cierre — muchas veces cuatro o cinco seguidos. Casi no hay operadores infijos ni comas que te frenen, pero los asteriscos de las variables especiales, el #' que cita funciones y las directivas ~ de format mantienen honesta a la mano derecha. La estructura que leen tus ojos la carga la indentación, así que los dos espacios del cuerpo tienen que caer exactos.
27 pasos en 1 tours, desde lo básico hasta programas completos.