Sunteți pe pagina 1din 8

Gnesis y principios de Haskell.

Los lenguajes de programacin funcionales tienen una larga historia, comenzando con la invencin de John
McCarthy de Lisp en finales de 1950.
En la dcada de 1960, Peter Landin y Christopher Strachey identificaron la importancia fundamental del
clculo de lambda para lenguajes de programacin modelado y perezoso, la semntica operacional y la
semntica denotativa.
A principios de los aos 70, Rod Burstall y John Darlington estaban haciendo la transformacin de programas
de primer orden funcional lenguaje con definicin de funcin por la coincidencia de patrones. Durante el
mismo perodo, David Turner, un estudiante de Strachey, desarroll SASL, un lenguaje puro funcional de
orden superior con variables de alcance lxico del clculo lambda.
Gerry Sussman y Guy Steele desarrollaron Scheme, un dialecto de Lisp implementando el lxico, Robin
Milner invento ML como un metalenguaje para la LCF demostrador de teoremas a Edinburgh. Tanto Scheme
y ML fueron lenguajes estrictos y a pesar de que contenan caractersticas imperativas, que hicieron mucho
para promover el estilo de programacin funcional, en particular, el uso de funciones de orden superior.
Luego, a finales de los aos 70 y principios de los 80, algo nuevo sucedi. La serie de publicaciones encendi
una explosin de inters en la idea de perezoso (o no estricto) los lenguajes funcionales como un vehculo
para la escritura de programas serios. La evaluacin perezosa parece que fue inventada
independientemente en tres ocasiones.
David Turner introdujo una serie de las lenguas influyentes: SASL, que fue diseado inicialmente como un
lenguaje estricto en 1972, pero se hizo perezosa en 1976, Turner mostr la elegancia de la programacin
con evaluacin perezosa, y en particular el uso listas de perezosas para emular muchos tipos de
comportamientos . Al mismo tiempo, hubo un esfuerzo simbitico en nuevos y emocionantes formas
para implementar lenguajes perezosos. En particular: En el software, una variedad de tcnicas basadas en
la reduccin de grafos se estn estudiando, y en particular de Turner y su inspiracional uso elegante de los
combinadores SK.
En agosto de 1987, Cam Richards de la Universidad de Texas, David Turner organiz una escuela
internacional en Programacin declarativa en Austin, Texas, como parte del "Ao de la programacin". Una
parte importante de la escuela era por supuesto la programacin funcional perezosa. Todo esto llev a una
tremenda sensacin de emocin. La sencillez y la elegancia de la programacin funcional cautivaron a los
presentes autores y muchos otros investigadores con ellos. Evaluacin perezosa con su conexin directa a la
pura, llamada clculo de Lambda, que brindaba la posibilidad extraordinaria de la representacin y
manipulacin de estructuras de datos infinitas.
Como resultado de toda esta actividad, a mediados de la dcada de 1980 hubo un nmero de
investigadores, incluyendo los autores, que estaban profundamente interesados en diseo y tcnicas de
implementacin de lenguajes puros perezosos.
Los lenguajes que contribuyeron a la perezosa Torre de Babel son:
Miranda, un sucesor de SASL y KRC, diseado e implementado por David Turner.
Lazy ML (LML), fue pionera en Chalmers por Augustsson y Johnsson, y se recopil en el University College de
Londres por Peyton Jones.
Orwell, un lenguaje vago desarrollado por Wadler, influenciado por KRC y Miranda, y el OL, una variante
posterior de Orwell.
Alfl, diseado por Hudak, cuyo grupo en Yale desarrollo un intrprete basado combinador para Alfl.
Id, un lenguaje de flujo de datos no estricto desarrollado en el MIT por Arvind y Nikhil.
Clean, un lenguaje vago basado explcitamente en la reduccin de grafos, desarrollado en Nijmegen por
Rinus Plasmeijer y sus colegas.
Ponder, un lenguaje diseado por Jon Fairbairn, con un impredicativo de mayor rango sistema de tipos y
alcance lxico de tipo variable que se utilizan para escribir un sistema operativo para SKIM.
Daisy, un dialecto de Lisp perezoso, desarrollado en Indiana por Cordelia Hall, John O'Donnell y sus colegas
En este momento, tanto en las comunidades Scheme y ML haban desarrollado sus propias normas.
Para 1987 Peyton Jones se detuvo en Yale para ver Hudak en su camino hacia el FPCA en Portland,
Oregn. Despus de discutir la situacin, Peyton Jones y Hudak decidieron iniciar una reunin durante la
FPCA, para atraer el inters de la firma de un nuevo lenguaje funcional, comn. Wadler tambin se detuvo
en Yale en el camino a FPCA, y tambin hizo suya la idea de una reunin. As la reunin FPCA marc el inicio
de Haskell de proceso de diseo, aunque no tenan un nombre para el idioma y produjeron algunas
discusiones tcnicas o decisiones de diseo. De hecho, un punto clave que sali de esa reunin fue que la
forma ms fcil avanzar era comenzar con un lenguaje actual y evolucionar en cualquier direccin que los
dejara satisfechos. De todas las lenguas perezosas bajo desarrollo, Miranda de David Turner era, por mucho,
el ms maduro, era puro, bien diseado, cumpla muchas de sus finalidades. Turner no estaba presente en la
reunin, por lo que llegaron a la conclusin de que el primer punto de accin del comit sera pedir a Turner
si les permitira adoptar Miranda como el punto de partida para el nuevo idioma.
Despus de un intercambio breve y cordial, Turner se neg. Sus objetivos eran diferentes de las
suyos. Queran un lenguaje que podra ser utilizado, entre otros fines, para la investigacin de las
caractersticas del lenguaje, en particular, se busc la libertad para que cualquiera pueda ampliar o
modificar el lenguaje, y para crear y distribuir una aplicacin.
En lugar de partir de una base bien desarrollada, les permiti la libertad de contemplar de forma ms radical
muchos aspectos del diseo del lenguaje.
La primera reunin fsica, se celebr en la Universidad de Yale en 1988, donde Hudak fue Profesor
Asociado. La primera orden fue establecer las siguientes metas para el lenguaje:
1. Debe ser adecuado para la enseanza, la investigacin y las aplicaciones, incluyendo la construccin de
grandes sistemas.
2. Debe ser completamente descrito a travs de la publicacin de una sintaxis formal y semntica formal.
3. Debe ser de libre acceso. Cualquier persona debe permitir poner en prctica el idioma y distribuirlo a
quien ellos gusten.
4. Debe ser utilizable como base para la investigacin de un nuevo lenguaje.
5. Debe basarse en las ideas que gozan de un amplio consenso.
6. Se debe reducir la diversidad innecesaria en programacin de lenguajes funcional ming.
Los dos ltimos objetivos reflejan el hecho de que tenan la intencin de la lengua a ser bastante
conservadora, en lugar de abrir nuevos caminos. Aunque result bastante diferente, tenan la intencin de
hacer poco ms de encarnar el consenso actual de las ideas y para unir sus diferencias, detrs de un solo
diseo.
Elegir un nombre fue importante, ya que un pequeo pero importante momento en la evolucin de
cualquier lenguaje es el momento en que es nombrado. En la reunin de Yale se utiliz el siguiente proceso
para elegir el nombre.
Cualquier persona puede proponer uno o ms nombres de la lengua, que fueron escritos en una pizarra. Al
final de este proceso, la siguientes nombres aparecan: Semla, Haskell, Vivaldi, Mozart, CFL, Funl 88, semlor,
Vela, Diversin, David, Niza, Luz, ML Nouveau, Mirabelle, Concord, LL, Delgado, Meet, Leval, Curry, Frege,
Peano, Facilidad, Portland, y Haskell B Curry. Despus cada persona era libre entonces para tachar un
nombre que no le gustaba. Cuando terminaron, haba un nombre a la izquierda. Ese nombre fue "Curry", en
honor al matemtico y logico Haskell B.
Despus de algunos debates, qued asentado "Haskell" como el nombre para el nuevo idioma.
Se pidi a Hudak y Wise escribir a la viuda de Curry, Virginia Curry, para preguntarle si le importara nuestra
refiere al lenguaje despus de su esposo. Hudak tarde visit a la Sra. Curry en su casa y escuch de historias
de personas que haban estado all, ella fue muy amable. Su despedida fue "Sabes, Haskell realidad nunca le
gust el nombre Haskell."
Las reuniones Glasgow continuaron fervientemente despus de la Reunin de Yale, esa reunin se celebr
abril 6 a 9, 1988 en la Universidad de Glasgow, cuyo grupo de programacin funcional fue comenzando un
perodo de rpido crecimiento. Fue en esta reunin que se tomaron muchas decisiones clave. Tambin se
acord en esta reunin que Hudak y Wadler seran los editores de la primera Memoria de Haskell.
Agosto de 1991. El 1.1 Versin del Haskell fue publicado (153 pginas), editadas por Hudak, Peyton Jones y
Wadler.
Marzo de 1992. La versin Haskell 1.2 Informe se public (164mpginas), editadas por Hudak, Peyton Jones
y Wadler, introduccin slo cambios menores en Haskell 1.1. Dos meses ms tarde, en Mayo 1992, que
apareci en avisos SIGPLAN, acompaado por una "suave introduccin a Haskell", escrito por Hudak y Fasel.
SIGPLAN, Stu Feldman y el editor de Avisos Dick Wexelblat, brind a Haskell tanto la visibilidad y
credibilidad.
1994. Haskell gan presencia en Internet cuando John Peterson registro el nombre de dominio haskell.org y
configuro un servidor y sitio web en Yale.
Mayo de 1996. La versin Haskell 1.3 Informe fue publicado, editado por Hammond y Peterson. En cuanto a
los cambios tcnicos, Haskell 1.3 fue la versin ms importante de Haskell despus 1.0.
Abril de 1997. Se public el Informe de la versin Haskell 1.4 (139+ 73 pginas), editado por Peterson y
Hammond.
En 1998 Informe Haskell: Lengua y Bibliotecas fue publicado (150 + 89 pginas), editadas por Peyton Jones y
Hughes, las listas por comprensin volvieron a slo listas.
En 1999, el Comit Haskell dej de existir.
Peyton Jones tom en la suela editorial, con la intencin de recoleccin y fijacin de los errores
tipogrficos. Las decisiones no eran ya limitadas a un pequeo comit.
Diciembre de 2002 Haskell Informe Revisado, se public (260 pginas), editadas por Peyton Jones.
Cambridge University Press public generosamente el Informe como un libro. Su flexibilidad de acordar la
publicacin de un libro en los trminos poco usuales era extraordinariamente til para la comunidad Haskell.
La primera edicin del Informe Haskell fue publicado el 1 de abril, 1990. Fue sobre todo un accidente que
apareci en Da de los inocentes, el lanzamiento fue lo suficientemente cerca para para justificar el uso de
esa fecha. Por supuesto Haskell no era una broma, pero la liberacin se ha traducido en una serie de chistes
posteriores al dia de los Inocentes de abril.
Hudak como editor del Informe, el 1 de abril de un ao o dos ms tarde, envi un mensaje de correo
electrnico al Comit Haskell diciendo que todo era demasiado para l, y que l no slo renunciaba a la
comisin, que era tambin dejar de Yale para seguir una carrera en la msica. Muchos miembros del comit
y David Wise inmediatamente llamaron a Hudak para rogarle que reconsidere su decisin. Por supuesto que
era slo una broma del Da de los Inocentes.
Pereza fue sin duda el nico tema que uni a los distintos grupos que contribuyeron al diseo de
Haskell. Tcnicamente, Haskell es un lenguaje con un no-semntica estricto; evaluacin perezosa es
simplemente una tcnica de implantacin de un lenguaje no estricto.
La pereza tiene sus costos. Llamada por necesidad suele ser menos eficiente que llamada por valor, a causa
de la contabilidad extra que se requiere para retrasar se requiere evaluacin hasta un plazo, por lo que
algunos trminos pueden no ser evaluado y sobrescribir un trmino con su valor, por lo que ningn trmino
es evaluado dos veces. Este coste es un factor significativo, pero constante, y se entenda en el momento
Haskell fue diseado.
Un problema mucho ms importante es la siguiente: es muy difcil, incluso para programadores con
experiencia para predecir el comportamiento de los espacios de perezoso programas, y no puede ser mucho
ms que un factor constante en juego.
Una consecuencia inmediata de la pereza es que el orden de evaluacin es impulsado por la
demanda. Como resultado, se hace ms o menos imposible realizar de forma fiable de entrada / salida o de
otros efectos secundarios como el resultado de una llamada a la funcin. Haskell es, por lo tanto,
un lenguaje puro.
La pureza es una gran apuesta, con consecuencias generalizadas. Lado sin restricciones efectos son, sin
duda, muy convenientes.
El mayor beneficio de la pereza no es la pereza per se, sino ms bien que la pereza lo mantuvo puro, y
motivados por lo tanto una gran cantidad de trabajo productivo en mnadas y estado encapsulado.
Inicialmente, las clases de tipo estaban motivados por el problema de la estrecha sobrecarga de operadores
numricos y la igualdad.
La introduccin de la nocin de una clase de tipos que posea un conjunto dado de operaciones (como
operaciones numricas o la igualdad).
La solucin de clase de tipo era atractivo para ellos, ya que pareca ms principios, sistemtica y modular
que cualquiera de las alternativas, de modo que, a pesar de su naturaleza ms radical y no probado, que fue
adoptada por aclamacin. Y nacieron las clases de tipo! El estudiante de Wadler, Steven Blott ayud a
formular las reglas de tipo.
Haskell no tiene semntica formal. En particular, la ausencia de una definicin de lenguaje formal no deje
que el lenguaje se desarrolle con mayor facilidad, porque los costos de productoras especificaciones
totalmente formales de cualquier cambio propuesto son pesados, y por s mismos desalentan cambios.
Haskell es un lenguaje diseado por el comit, sin embargo, como resulta ser, con todas sus deficiencias es a
menudo descrito como "hermoso" o "elegante", incluso "cool".
Una fuente importante de tensin tanto dentro como entre los miembros del comit fue la competencia
entre belleza y utilidad. Queran disear un sencillo y elegante lenguaje, por otro lado, tambin Haskell
quera ser una lengua til, tanto para la enseanza y verdaderas aplicaciones.
El objetivo de usar Haskell para la investigacin exige la evolucin, mientras que utilizando el lenguaje de la
enseanza y las aplicaciones requieren estabilidad. Al principio, el nfasis estaba firmemente en la
evolucin, En respuesta a esta presin, el comit desarroll un simple y solucin obvia: simplemente
nombramos un caso particular del lenguaje "Haskell 98," y los implementadores de lenguaje comprometidos
a continuar apoyando a Haskell 98 indefinidamente. Considerban Haskell 98 como un diseo bastante
conservador.
"Haskell 98" es una variante estable de la lengua.
En el momento que Haskell naci, el lenguaje ms usado, ms maduro y ampliamente, funcional no estricto
fue Miranda. Miranda era un producto de la compaa de David Turner, Investigacin Software Limited, que
fund en 1983. Turner concebido Miranda para llevar la programacin funcional perezosa, el diseo de
Haskell fue, por lo tanto, fuertemente influenciada por Miranda.
En ese momento, Miranda fue la mxima expresin de un no estricta, lenguaje puramente funcional con un
sistema de tipos Hindley-Milner y tipos de datos y algebraicas que era precisamente el tipo de lenguaje
Haskell que aspiraba a ser. Como resultado, hay muchas similitudes entre los dos lenguajes, tanto en su
enfoque bsico (pureza, de orden superior, la pereza, la tipificacin esttica) y en su aspecto sintctico y
sentir.
Hoy en da, Miranda ha sido prcticamente desplazado por Haskell. Una indicacin de ello es la publicacin
de los libros de texto: mientras que los libros de Haskell siguen apareciendo con regularidad, el ltimo libro
de texto en ingls para usar Miranda fue publicado en 1995.


















Historia de Lisp.
Este documento se concentra en el desarrollo de las ideas bsicas y en periodos del verano de 1956 y 1958,
cuando la mayor parte de ideas clave se desarrollaron (algunos de los cuales se ejecutaron en el FORTRAN
basado FLPL y Fall, de 1958 hasta 1962, cuando el lenguaje de programacin fue desarrollada y aplicada a los
problemas de la inteligencia artificial.
Despus de 1962, el desarrollo de LISP convirti multifilar, y diferentes ideas han sido retomadas en
diferentes lugares. Como un lenguaje de programacin, LISP se caracteriza por las siguientes ideas en
computacin con expresiones simblicas en lugar de nmeros, la representacin de expresiones simblicas
y otra informacin de estructura de lista en la memoria de un ordenador, la representacin de la
informacin en los medios de comunicacin externos principalmente por listas de varios niveles y, a veces
por expresiones S, un pequeo conjunto de selector y operaciones de constructor expresan como funciones,
composicin de funciones como una herramienta para la formacin de funciones ms complejas, el uso de
las expresiones condicionales para conseguir la ramificacin en la definicin de funciones, el uso recurrente
de condicional expresiones como una herramienta suficiente para la construccin de las funciones
computables, el uso de expresiones- para las funciones de asignacin de nombres, la representacin de los
programas LISP como datos LISP, la interpretacin de la expresin condicional conectivas booleanas, la
funcin eval LISP que sirve a la vez como una definicin formal de la lengua y como un intrprete, y la
recoleccin de basura como un medio de manejo de la problema de borrado. Las declaraciones LISP tambin
se utilizan como un lenguaje de comandos, cuando se utiliza LISP en un entorno de tiempo compartido.
Algunas de estas ideas fueron tomadas de otros lenguajes. Hacia el final del perodo inicial, se hizo evidente
que esta combinacin de ideas realizado un sistema matemtico elegante.
Los resultados de Cartwright y McCarthy, 1978, que muestran que los programas LISP pueden interpretarse
como frases y esquemas de la lgica de primer orden, proporcionar nueva confirmacin de la intuicin
original que la pulcritud lgico seran rentable.
El deseo de un lenguaje algebraico procesamiento de listas para la inteligencia artificial, se present en el
verano de 1956 durante el Proyecto de Investigacin de Verano de Dartmouth sobre la inteligencia artificial,
que era el primer estudio organizado de la IA. Durante esta reunin, Newell, Shaw y Simon descrito IPL 2, un
lenguaje de procesamiento de lista para la Rand Corporation JOHN-Equipo CANI en que implementaron su
programa de lgica Terico.
Hubo poca tentacin de copiar IPL, debido a que su forma se basa en un JOHNNIAC cargador que pas a
estar disponible para ellos, y porque FORTRAN idea de los programas de escritura algebraica era
atractivo. Fue inmediatamente evidente que las sub expresiones arbitrarias de expresiones simblicas
podra ser obtenido mediante la composicin de las funciones que extraen inmediata Sub expresiones, y
esto pareca razn suficiente para ir a un lenguaje algebraico.
Haba dos motivaciones para el desarrollo de un lenguaje para la IBM 704.
En primer lugar, IBM fue generosamente estableciendo un Centro de Computacin de Nueva Inglaterra en el
MIT que Dartmouth sera utilizar. En segundo lugar, IBM estaba llevando a cabo para desarrollar un
programa para demostrar teoremas en geometra plana (sobre la base de una idea de Marvin Minsky), y
estaba para servir como asesor de ese proyecto.
En ese momento, IBM pareca una buena apuesta para perseguir la inteligencia artificial investigar
vigorosamente y se esperaban otros proyectos. FORTRAN de IBM llevara a un lenguaje en el cual
procesamiento de listas convenientemente podra llevarse a cabo o si un nuevo idioma sera necesario. Sin
embargo, muchas consideraciones fueron independientes de cmo que podra resultar.
Adems de la consulta sobre el programa de geometra, la propia investigacin en la inteligencia artificial se
estaba desarrollando a lo largo de las lneas que llevaron al Consejo Taker propuesto en 1958 (McCarthy
1959). Esta informacin que representa involucrados sobre el mundo de las oraciones en un lenguaje formal
adecuado y un programa de razonamiento que decide qu hacer al hacer inferencias lgicas. Representa
frases por estructura de lista lo que le parece apropiado y una lista lenguaje de procesamiento.

As, la mayora de los programas LISP utilizan una notacin de prefijo para las expresiones algebraicas,
porque por lo general debe determinar la principal conectiva antes de decidir qu hacer a continuacin. LISP
se diferencia de casi cualquier otro sistema de clculo simblico.
COMIT, Programas Formac, y la Frmula Algol todos expresan los clculos como operaciones sobre alguna
aproximacin a las formas usuales de impresos expresiones simblicas. SNOBOL opera en cadenas de
caracteres, pero es neutral sobre la forma de cadenas de caracteres se utilizan para representar informacin
simblica. Esta caracterstica, probablemente explica el xito de LISP, en competencia con estos lenguajes,
sobretodo cuando los grandes programas tienen que ser por escrito.
Programas para hacer el tipo de entrada y salida habitual hoy ni siquiera caba en las memorias disponibles
en ese momento. Por otra parte, no existan keypunches e impresoras con juegos de caracteres adecuados).
El primer problema era cmo hacer la estructura de lista en el IBM 704. Este equipo tiene una palabra de 36
bits y 15 bits de dos partes, llamada la direccin y el decremento, se distingue por instrucciones especiales
para moverse hacia los registros ndices de 15 bits.
En este punto hubo cierta indecisin sobre lo que los operadores bsicos deben ser, porque la operacin de
extraccin de una parte de la palabra mediante el enmascaramiento fue considerado por separado de la
operacin de tomar el contenido de una palabra en la memoria como una funcin de su direccin. En ese
momento, pareca dudoso considerar la ltima operacin como una funcin, ya que su valor depende del
contenido de la memoria en el momento de la operacin se llev a cabo, por lo que no actuo como una
funcin matemtica apropiada. Sin embargo, las ventajas de tratarla gramaticalmente como una funcin de
modo que podra estar compuesto tambin eran evidentes.
Los IBM 704 hicieron estas operaciones fciles de implementar. Una operacin de construccin para la toma
de una palabra fuera la lista de almacenamiento y el relleno con contenidos dados. En algn momento se
defini un cons (a, d, p, t), pero se consideran como una subrutina y no como una funcin con un valor. Este
trabajo fue realizado en Dartmouth, pero no en un ordenador, ya que el Centro de Clculo de Nueva
Inglaterra no se esperaba recibir el IBM 704 por un ao ms.
En relacin con el proyecto de la geometra plana de IBM, Nathaniel Rochester y Herbert Gelernter (por
consejo de McCarthy) decidi implementar un lenguaje de procesamiento de lista dentro de FORTRAN,
porque esto pareca a la del manera ms fcil de empezar, y, en esos das, escribir un compilador para un
nuevo lenguaje se crea que tomar muchos aos-hombre. Este trabajo fue realizado por
Herbert Gelernter y Carl Gerberich en IBM y llevaron a FLPL, de pie para Lista FORTRAN. Gelernter y
Gerberich notaron que contras deben ser una funcin, no slo una subrutina, y que su valor debe
ser la ubicacin de la palabra que haba sido tomado de la lista de almacenamiento gratuito.
Esto permiti que las nuevas expresiones que se construir fuera de sus subsubexpresiones componiendo
las ocurrencias de los contras.
Invent expresiones condicionales en relacin con un conjunto de ajedrez rutinas de movimiento legal que
escribio en FORTRAN para la IBM 704 en el MIT durante 1957-1958. Este programa no hizo uso de
procesamiento de listas.
La implementacin de LISP comenz en el otoo de 1958. La idea original era para producir un compilador,
pero esto se considera una tarea de gran envergadura, y les fue necesario un poco de experimentacin con
el fin de obtener buenos convenios para subrutina de vinculacin, manejo de pila y el borrado. Por lo tanto,
comenzaron con la compilacin, diferentes funciones en lenguaje ensamblador y escribir subrutinas para
proporcionar un "ambiente" LISP. Estos programas incluidos para leer y de listas de impresin estructuras.
Los programas que se han compilado a mano fueron escritos en una notacin informal denominado
expresiones M destinadas a parecerse a FORTRAN tanto como sea posible.
Adems de las instrucciones de asignacin FORTRAN, el lenguaje permitido expresiones condicionales y las
funciones bsicas de LISP. Permitir la definicin de funciones recursivas requieren ninguna nueva notacin
de funciones permitidas en FORTRAN I - slo la eliminacin de la restriccin, no declarada en el manual
FORTRAN, prohibiendo funciones recursivas.
La notacin M tambin utiliza corchetes en lugar de parntesis para encerrar los argumentos de las
funciones a fin de reservar parntesis para la lista de la estructura constantes. Fue pensado para compilar
desde una cierta aproximacin a la notacin M, pero la notacin M nunca fue completamente definida, ya
que representa Funciones LISP, que se convirtieron en el lenguaje de programacin dominante cuando el
intrprete ms tarde lleg a estar disponible.
Una consideracin matemtica que influy en LISP era expresar programas en forma de expresiones
aplicativas construidas a partir de las variables y constantes que utilizan funciones. Estas expresiones
obedecen a las leyes matemticas habituales que permiten la sustitucin de expresiones dando el mismo
valor. El motivo fue permitir que las pruebas de las propiedades de programas utilizando mtodos
matemticos ordinarios. Esto slo es posible a la medida en que los efectos secundarios se pueden
evitar. Desafortunadamente, los efectos secundarios son a menudo una gran comodidad a la hora eficiencia
computacional es importante, y "funciones "con efectos secundarios estn presentes en LISP. Sin embargo,
el llamado LISP puro est libre de efectos secundarios, y Cartwright y McCarthy en 1978 muestran cmo
representar los programas LISP puros mediante oraciones y esquemas en lgica de primer orden y
demostrar sus propiedades. Se trata de una reivindicacin de la lucha por la pulcritud matemtica, porque
ahora es ms fcil demostrar que los programas LISP puros cumplen sus especificaciones que para cualquier
otro lenguaje de programacin en uso extenso.
Otra manera de demostrar que LISP era ms ordenado que las mquinas de Turing era escribir una funcin
LISP universal y demostrar que es ms breve y ms comprensible que la descripcin de una mquina
universal de Turing. Esto fue la funcin de LISP EVAL [e, A], que calcula el valor de una expresin Lisp
e - el segundo argumento a ser una lista de asignaciones de valores a las variables.
La Integridad lgica requerida que la notacin utilizada para expresar funciones utilizado como argumentos
funcionales sea extendida para proveer para las funciones recursivas, y la notacin ETIQUETA fue inventada
por Nathaniel Rochester para ese propsito.
SR Russell not que eval podra servir como intrprete de LISP, rpidamente codificado, y que ahora tena un
lenguaje de programacin con una intrprete. La inesperada aparicin de un intrprete tiende a congelar la
forma del lenguaje, y algunas de las decisiones que se toman en lugar para la "Funciones recursivas " ms
tarde resultaron desafortunada. Estos incluyeron la notacin COND para expresiones condicionales que
conduce a una innecesaria profundidad y el uso del nmero cero para denotar la lista vaca NIL y el falso
valor de verdad.
Las listas de propiedades. La idea de proporcionar a cada tomo con una lista de propiedades estuvo
presente en la primera implementacin en lenguaje ensamblador. Tambin fue uno de las ideas tericas del
Consejo Taker, aunque el Consejo Taker (Mc-Carthy 1959) habra requerido una lista de propiedades para
cualquier expresin sobre qu informaciones se sabe que no se desprende de su estructura. Fue necesario
para indicar si una funcin fue un SUBR en cdigo mquina o fue un EXPR representada por la estructura
lista. Varias de las funciones que se ocupan de las listas de propiedades que tambin se pusieron a
disposicin de los programas de aplicacin que hacen un uso intensivo de ellos.
Insercin de elementos en las listas y su eliminacin. Uno de los originales virtudes anunciadas de
procesamiento de listas para el trabajo de AI fue la capacidad de insertar y eliminar elementos de listas. Por
desgracia, esta instalacin coexiste con inquietud con la estructura de la lista compartida. Por otra parte, las
operaciones que insertan y eliminan no lo hacen tiene una representacin ordenada como funciones.
Los nmeros fueron implementados originalmente en LISP I, como las listas de los tomos y esto result ser
demasiado lento para todos, pero los clculos ms simples. En LISP 1.5, pero en todos los primeros Lisps,
clculos numricos estaban todava 10 a 100 veces ms lento que en FORTRAN.
Algunas recientes versiones de LISP permiten distinguir tipos, pero en el momento, esto pareca
incompatible con otras funciones.
Como lenguaje de programacin LISP tena muchas limitaciones. Algunos de lo ms evidente en la dcada de
1960, era ultra lento el clculo numrico, la incapacidad para representar objetos por bloques de registros y
recoger la basura de los bloques, y la falta de un buen sistema de entrada-salida de las expresiones
simblicas en convencional notaciones. Todos estos problemas y otros iban a ser fijo en LISP 2. En el
Mientras tanto, hemos tenido que conformarse con LISP 1.5 desarrollado en el MIT que corrige slo las
deficiencias ms evidentes.
El proyecto LISP 2 fue una colaboracin de Desarrollo de Sistemas de Corporacin y de Informacin
Internacional Inc., y se planific inicialmente para el equipo P32, que fue construido por IBM para fines
militares y que tena una palabra de 48 bits y 18 bits de direcciones, es decir, era mejor que la de IBM
7090 para un proyecto ambicioso. Por desgracia el proyecto result ms caro de lo esperado, la
colaboracin result ms difcil de lo esperado, y as LISP 2 fue abandonado, esto fue lamentable, ya que
mucho ms dinero ya se ha gastado, para desarrollar Lisps con menos funciones.
LISP es ahora el lenguaje de programacin segundo ms antiguo en la actual despus de FORTRAN y sin
contar APT, que no se utiliza para programacin. Debe su longevidad a dos hechos. En primer lugar, su
ncleo ocupa un ptimo el espacio de lenguajes de programacin d que la friccin esttica desalienta
cambios puramente de notacin. El uso recurrente de expresiones condicionales, la representacin de la
informacin simblica externamente por listas e internamente por la estructura de la lista, y la
representacin del programa en la misma manera, probablemente tendr una vida muy larga.
En segundo lugar, LISP todava tiene caractersticas operativas no igualadas por otro lenguaje eso lo hace un
vehculo ideal para sistemas de nivel superior para simblica computacin y la inteligencia artificial. Estos
incluyen el sistema de tiempo de ejecucin que dar un buen acceso a las caractersticas de la mquina host y
de su sistema operativo, su lenguaje interno con estructura de lista hace que sea un bueno para la
compilacin de lenguajes de nivel an ms altos, su compatibilidad con los sistemas que producen binario o
programa de nivel de ensamblador y la disponibilidad de su intrprete un lenguaje de comandos para la
conduccin de otros programas.
LISP quedar obsoleto cuando alguien hace una ms amplia lenguaje que domina LISP da prcticamente y
tambin un clara semntica matemtica a un conjunto ms amplio de caractersticas.

S-ar putea să vă placă și