LISP, acrónimo de list processing (procesamiento de listas), es un lenguaje de programación que fue diseñado para una fácil manipulación de cadenas de datos. Es uno de los lenguajes de programación más antiguos todavía en uso.
En LISP, todos los cálculos se expresan en función de al menos un objeto. Los objetos pueden ser otras funciones, elementos de datos (como constantes o variables) o estructuras de datos. La capacidad de LISP para calcular con expresiones simbólicas en lugar de números lo hace conveniente para aplicaciones de Inteligencia Artificial (IA).
- Historia
La historia de LISP se remonta a mediados o finales de la década de 1950, John McCarthy, del Instituto Tecnológico de Massachusetts (MIT), tenía un problema que resolver. Como parte de un proyecto de IA, necesitaba un lenguaje de programación que pudiera procesar listas de datos. Las oraciones estructuradas de manera formal representarían información sobre el mundo. La computadora podría navegar y procesar listas de oraciones para imitar el razonamiento humano, por ejemplo, la capacidad de responder una pregunta comparando posibles oraciones organizadas en listas.
¿El problema al que se enfrentaba McCarthy? No existía un lenguaje de programación adecuado para trabajar con listas. McCarthy tuvo que crear su propio lenguaje.
Pero luego sucedió algo gracioso. McCarthy creó su lenguaje al que llamó Lisp, abreviatura de procesamiento de listas. Y, como dijo Paul Graham, «McCarthy hizo para programar lo que Euclid hizo para Geometry«. Construyó un lenguaje de programación a partir de operadores simples y un sistema de notación para funciones. Pero las partes del lenguaje que él consideraba más importantes, las «m-expressions» para manejar la sintaxis matemática, resultaron ser las menos importantes para las personas que usaban Lisp. Y una de las partes menores del lenguaje de McCarthy, las «s-expression» utilizadas para describir datos, pasó a influir en varios lenguajes de programación durante cincuenta años y contando.
Aún más interesante, Stephen Russell convirtió la función de evaluación teórica en Lisp en código de máquina real. Lisp ahora podría interpretar declaraciones de s-expressions de Lisp utilizadas para describir datos y ejecutar programas Lisp. En 1962, el primer software en compilar Lisp en código mezcló código evaluado (procesado cuando el código se ejecutó) y código compilado (procesado antes de que se ejecutara el código). En la década de 1970, Daniel Edwards del MIT agregó la recolección de basura a Lisp, la capacidad de liberar memoria no utilizada para hacer que el lenguaje sea más eficiente.
Lo que comenzó como una elegante solución minimalista a un problema (procesar listas como parte de un proyecto de inteligencia artificial) contenía las semillas de un lenguaje de programación completo con ideas innovadoras para influir en docenas de lenguajes. Por ejemplo, McCarthy creó las declaraciones condicionales if-then-else ahora comunes para que Lisp pudiera procesar listas de una manera estrechamente estructurada. Paul Graham también cree que Lisp representa una segunda forma de pensar sobre los problemas de programación de software.
- Ventajas
Los puntos a favor de Lisp como buen lenguaje son fuertes, debido a su longevidad. Muchas personas inteligentes y creativas han trabajado en Lisp para refinar y optimizar el lenguaje.
También es cierto que Lisp siempre ha sido una solución inusual y perspicaz para problemas de programación e informática. Por un lado, Lisp siempre se ha inclinado hacia soluciones simples y flexibles donde otros lenguajes han agregado complejidad (por buenas razones). La corazonada de McCarthy era que un lenguaje más simple proporcionaría más flexibilidad con el tiempo.
Una de las partes inusuales de Lisp son los macros. Si no lo sabes, las macros son códigos que escriben en el código o manipulan otros programas. Piensa en una tarea repetitiva, tal vez agregando números, y colocando el código en un bloque y luego llama al bloque en lugar de volver a escribir el código utilizado para agregar números. Si has utilizado macros de Word, es posible entiende la idea. Los macros amplían el poder de un lenguaje de programación.
Sin embargo, con Lisp, los macros también permiten a los programadores incrustar lenguajes específicos dentro de Lisp. Los macros tienen acceso directo al analizador contenido en el idioma. Además, el analizador es simple. Desarma listas, recorre listas y vuelve a armar listas.
Con Lisp, el código son datos (listas) y los datos pueden ser códigos. Es un lenguaje de software programable. Las funciones pueden pasar como variables y procesarse en otra parte del código o procesarse directamente como funciones.
imagen: Roozbeh Eslami
excelente resumen.
[…] Lisp, acrónimo de «LISt Processing», es un lenguaje de programación que fue diseñado para una fácil manipulación de cadenas de datos. […]