0% encontró este documento útil (0 votos)
184 vistas5 páginas

Introducción a LISP para Ingenieros

LISP es uno de los lenguajes de programación más antiguos creado por John McCarthy en 1958. LISP se basa en la aplicación de funciones a los datos y el uso de funciones matemáticas para controlarlos. LISP tiene características como la programación funcional, la recursión, la gestión dinámica de tipos y la extensibilidad a través de macros.

Cargado por

rene.rml12
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
184 vistas5 páginas

Introducción a LISP para Ingenieros

LISP es uno de los lenguajes de programación más antiguos creado por John McCarthy en 1958. LISP se basa en la aplicación de funciones a los datos y el uso de funciones matemáticas para controlarlos. LISP tiene características como la programación funcional, la recursión, la gestión dinámica de tipos y la extensibilidad a través de macros.

Cargado por

rene.rml12
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

INSTITUTO POLITECNICO NACIONAL

Escuela Superior de Ingeniería Mecánica y Eléctrica


Unidad: Culhuacán
Ingeniería en computación

Optativa II: Inteligencia Artificial


Profesor: Luis Efrén Veloz Ortiz
Equipo
Manuel Lucas René

Paso Hernández Gerardo

Terrazas Nava Pablo

8CM42

List y Prolog

Fecha de entrega: 21/03/2024


¿Qué es LISP?

List processing (Procesamiento de listas). Es una familia de lenguajes de


programación de computadora de tipo multiparadigma Se basa en la aplicación de
funciones a los datos y se apoya en la utilización de funciones matemáticas para
el control de los mismos.

LISP es el más antiguo de los lenguajes de programación dedicados a la


inteligencia artificial entre aquellos que aún siguen en uso; y también es el
segundo lenguaje de programación de alto nivel de la historia.

Historia

Lisp fue inventado por John McCarthy en 1958 mientras estaba en el Instituto
Tecnológico de Massachusetts (MIT). McCarthy publicó su diseño en 1960 en un
artículo de Communications of the ACM titulado "Funciones recursivas de
expresiones simbólicas y su cómputo a máquina, Parte I" (la "parte II" nunca fue
publicada). Allí mostró que con algunos operadores simples y una notación para
las funciones, uno puede construir un lenguaje Turing completo para
procesamiento de algoritmos.
Desde 1955 o 1956, el Information Processing Language fue el primer lenguaje de
AI, y ya había incluido muchos de los conceptos, tales como proceso por lista
y recursión, que vinieron a ser usados en Lisp.
La notación original de McCarthy usaba "expresiones M" en corchetes que serían
traducidas a expresiones S. Como un ejemplo, la expresión M car[cons[A,B]] es
equivalente a la expresión S (car (cons A B)) . Una vez que Lisp fue
implementado, los programadores rápidamente eligieron usar expresiones S, y las
expresiones M fueron abandonadas. las expresiones M emergieron otra vez con
los intentos efímeros del MLISP de Horace Enea y el CGOL de Vaughan Pratt.
Lisp fue implementado primero por Steve Russell en un computador IBM 704.
Russell había leído el artículo de McCarthy, y se dio cuenta (para la sorpresa de
McCarthy) que la función eval de Lisp podía ser implementada en código de
máquina. El resultado fue un intérprete de Lisp funcional que podía ser usado para
correr programas Lisp, o más correctamente, "evaluar expresiones Lisp".
Dos rutinas de lenguaje ensamblador para el IBM 704 se convirtieron en las
operaciones primitivas para descomponer listas: car (contenido del registro de
dirección) y cdr (contenido del registro del decremento). Los dialectos de Lisp
todavía usan el car y cdr (pronunciado /ˈkɑr/ y /ˈkʊdər/) para las operaciones que
retornan el primer elemento y el resto de la lista respectivamente.
El primer compilador completo de Lisp, escrito en Lisp, fue implementado en 1962
por Tim Hart y Mike Levin en el MIT. Este compilador introdujo el modelo Lisp de
compilación incremental, en el cual las funciones compiladas e interpretadas
pueden entremezclarse libremente. El lenguaje en los memos de Hart y Levin es
mucho más cercano al estilo moderno de Lisp que el anterior código de McCarthy.

Características distintivas:

 LISP posee un manejo de memoria automático que libera el espacio


utilizado por los objetos que dejan de ser necesitados.

 Incluye un mecanismo bastante simple para utilizar evaluaciones lentas de


expresiones

 LISP no posee un sistema de datos estáticos los errores solo pueden ser
detectados en tiempo de ejecución y no de compilación.

 Recurso a la recursión: Lisp fomenta el uso de la recursión como técnica de


programación. Esto significa que los programas Lisp a menudo están
estructurados en torno a funciones que se llaman a sí mismas para resolver
un problema.

 Programación funcional: Lisp es un lenguaje funcional, lo que significa que


trata las funciones como ciudadanos de primera clase. Esto permite
construir programas utilizando funciones de orden superior, funciones
anónimas y funciones recursivas.

 Macroexpansión: Lisp permite la creación de macros, que son fragmentos


de código que se expanden en otros fragmentos de código durante la
compilación o la ejecución. Esto permite a los programadores extender el
lenguaje para adaptarlo a sus necesidades específicas.

 Gestión dinámica de tipos: Lisp es dinámicamente tipado, lo que significa


que las variables no están asociadas a un tipo específico de datos y pueden
cambiar de tipo durante la ejecución del programa.

 Sistema de evaluación interactiva: Muchos entornos Lisp proporcionan una


interfaz interactiva en la que los fragmentos de código pueden ser
evaluados y probados de manera incremental, lo que facilita el desarrollo y
la depuración de programas.
Ventajas del lenguaje de programación LISP

 Expresividad y flexibilidad: Lisp es conocido por su sintaxis basada en listas


y su capacidad para manipularlas de forma dinámica, lo que lo hace
extremadamente expresivo y flexible. Esto facilita la escritura de código
conciso y poderoso.
 Extensibilidad: Lisp permite la creación de macros, que son fragmentos de
código que se expanden durante la compilación o la ejecución. Esto permite
a los programadores extender el lenguaje según sus necesidades
específicas, lo que lleva a un alto grado de flexibilidad y adaptabilidad.
 Programación funcional: Lisp es un lenguaje funcional, lo que significa que
trata las funciones como ciudadanos de primera clase. Esto permite
construir programas utilizando funciones de orden superior, funciones
anónimas y funciones recursivas, lo que puede conducir a un código más
limpio y modular.
 Recursión: La recursión es una técnica de programación fundamental en
Lisp. Permite la escritura de algoritmos de manera elegante y concisa, lo
que a menudo conduce a soluciones más claras y simples para problemas
complejos.
 Gestión dinámica de tipos: Lisp es dinámicamente tipado, lo que significa
que las variables no están asociadas a un tipo específico de datos y pueden
cambiar de tipo durante la ejecución del programa. Esto puede llevar a un
desarrollo más rápido y flexible.

Desventajas del lenguaje de programación LISP

 Curva de aprendizaje: La sintaxis única y la filosofía de Lisp pueden


presentar una curva de aprendizaje pronunciada para los programadores
nuevos en el lenguaje. La notación basada en listas y el enfoque funcional
pueden ser difíciles de asimilar para aquellos acostumbrados a lenguajes
más tradicionales.
 Rendimiento: Aunque Lisp es conocido por su expresividad y flexibilidad, no
siempre es el lenguaje más eficiente en términos de rendimiento. En ciertos
casos, los programas Lisp pueden ser más lentos que los escritos en otros
lenguajes de programación más optimizados para tareas específicas.
 Depuración de macros: Si bien las macros en Lisp pueden proporcionar una
gran flexibilidad, también pueden complicar la depuración del código. Las
macros complejas pueden generar código difícil de entender y depurar,
especialmente para programadores menos experimentados.
 Falta de herramientas modernas: Aunque Lisp ha existido durante décadas,
puede carecer de algunas de las herramientas modernas y bibliotecas
estándar que se encuentran en lenguajes más populares. Esto puede hacer
que el desarrollo en Lisp sea más difícil o menos eficiente en ciertos
contextos.

También podría gustarte