o que fixo de forma diferente de Lisp

1. Condicional Un condicional é unha construción If-entón. Agora dámoslles por sentado. Foron inventados por McCarthy mentres desenvolveu Lisp. (Fortran nese momento só tiña un goto condicional, baseado en estreita colaboración sobre a instrución de transferencia no hardware subxacente). McCarthy, que estaba no Comité de Algol, introducido condicional en ALGOL, desde o que se estendeu á maioría dos outros idiomas.
2 .. Un tipo de función. En Lisp, as funcións son obxectos de primeira clase: son un tipo de datos como enteiros, cadeas, etc., e teñen unha representación literal, pode ser almacenada nas variables, pode ser aprobada como argumentos, etc.
3 .. Recursión A recursión existiu como concepto matemático desde antes de Lisp, por suposto; Pero Lisp foi a primeira linguaxe de programación para apoiala. (Pódese dicir que está implícito en facer as funcións de primeira clase obxectos.)
4. Un novo concepto de variables. En Lisp, todas as variables son, de feito, punteiros. Os valores teñen tipos, non variables e asignar ou as variables de enlace significa copiar poops, non no que apuntan.
5. Recollida de lixo.
6. Programas compostos de expresións. Os programas de Lisp son árbores de expresións, cada unha das cales devolve un valor. (Nalgúns Lisps as expresións poden devolver varios valores.) Isto contrasta con Fortran e a maioría das linguas sucesivas, que distinguen entre expresións e declaracións.
Foi natural ter esta distinción en Fortran, porque (como se esperaba nunha lingua en que o formato de entrada foi as tarxetas perforadas), a linguaxe estaba orientada a liñas. Non se puideron dar as declaracións. Así, mentres necesitabas expresións para que as matemáticas funcionen, non tiña sentido facer nada devolver un valor, porque non podía haber nada esperando por iso.
Esta limitación desapareceu coa chegada das linguas estruturadas en bloques , pero para entón xa era demasiado tarde. A distinción entre expresións e declaracións foi reforzada. Foi transmitido de Fortran a Algol e desde alí aos seus descendentes.
Cando unha lingua está feita enteramente de expresións, pode facelas como queiras. Podes dicir (usando a sintaxe de arco):
(se foo (= x 1) (= x 2))
ou
(= x (se foo 1 2)
7. Un tipo de símbolo. Os símbolos difieren das cadeas nas que a igualdade pode ser probada comparando un punteiro.
8. Unha notación para o código usando árbores de símbolo.
9. Todo o idioma está sempre dispoñible. Non hai ningunha distinción real entre o tempo de lectura, o tempo de compilación e o tempo de execución. Pode compilar ou executar código durante a lectura, ler ou executar o código durante a compilación e ler ou compilar o código en tempo de execución.
Executar o código ao tempo de lectura permite que os usuarios reprogrenan a sintaxe de Lisp; O código de execución en tempo de compilación é a base das macros; A compilación de tempo de execución é a base do uso de Lisp como linguaxe de extensión en programas como Emacs; E a lectura do tempo de execución permite que os programas se comuniquen mediante expresións-S, unha idea reinventada recentemente como XML.

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *