typestar

Lenguajes

Lisp

Una familia de lenguajes que data de 1958, cuyos programas se escriben como las mismas listas que manipulan.

Practica Lisp

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.

Practica Lisp

27 pasos en 1 tours, desde lo básico hasta programas completos.

Documentación oficial

Otros lenguajes