POP-2, referido a menudo pues el POP2 era un lenguaje de programación desarrollado alrededor de 1970 de la lengua anterior POP-1 (original nombrado COWSEL ) por el petirrojo Popplestone y Rod Burstall en la universidad de Edimburgo . Extrajo raíces de muchas fuentes: el lisp de las idiomas y ALGOL 60, e ideas teóricas Landin . Utilizó un compilador incremental, que le dio algo de la flexibilidad de una lengua interpretada, incluyendo permitir nuevas definiciones de función en el tiempo de pasada y de modificación de las definiciones de función mientras que un programa funcionaba (que son características de la compilación dinámica ), sin los gastos indirectos de una lengua interpretada. Se ha descrito como “la primera lengua funcional verdadera” en HOPL, la historia del Web site de programación de los lenguajes.
Su sintaxis estaba ALGOL-como, salvo que las asignaciones estaban al revés: en vez de la escritura
a: = 3;
uno escribió
3 - > a;
La razón de esto era que la lengua tenía noción explícita de un apilado del operando; así, la asignación anterior se podía escribir como dos declaraciones separadas:
3;
cuál evaluó el valor 3 y lo dejó en el apilado, y
- > a;
cuál hizo estallar el valor superior del apilado y lo asignó a la variable “a”. Semejantemente, la llamada de función
f (x, y, z);
podía ser escrito como
x, y, z; f ();
(comas y puntos y comas que son en gran parte permutables) o aún
x, y, z.f;
o
(x, y, z).f;
No había construcciones de lengua especiales para crear órdenes o las estructuras de registro como se entienden comúnmente: en lugar, éstos fueron creados con la ayuda de las funciones especiales del builtin, e. newarray (para los órdenes que podrían contener cualquier tipo de artículo) y newanyarray para crear tipos restringidos de artículos.
Así, el elemento de arsenal y los accessors del campo del expediente eran casos simplemente especiales de una función de doblete del : ésta era una función que tenía otra función atada como su '' updater '', que fue invitado el lado de recepción de una asignación. Así, si el a variable contuvo un arsenal, entonces
3 - > a (4);
era equivalente a
updater (a) (3, 4);
la función updater del builtin que vuelve el updater del doblete. Por supuesto, updater era sí mismo un doblete y se podía utilizar para cambiar el componente del updater de un doblete.
Debido a el paradigma apilar-basado, no había necesidad de distinguir entre las declaraciones del y las expresiones del ; así, las dos construcciones
si a > b después c - > e d - > e cierre;
y
si a > b después c d cierre - > e;
eran equivalente (observar el uso de close pues endif no había sido inventado todavía).
Las variables podrían llevar a cabo valores de cualquier tipo, incluyendo las funciones, que eran objetos de primera clase. Así, las construcciones siguientes
función x máximo y; si extremo cercano otro de x > de y entonces x y;
y
vars máximos; lambda x y; si extremo cercano otro de x > de y entonces x y - > máximo;
eran equivalente.
Una operación interesante en funciones era '' uso parcial ''; éste era donde estaba valores un cierto número de las discusiones de derecha de la función dados congelados de, producir una nueva función de pocas discusiones. Por ejemplo, considerar una función para computar polinomios de segundo grado generales:
función poly2 x un b c; a * x * x + b * x + extremo de c;
Esto se podía limitar, por ejemplo como
vars less1squared; poly2 (% 1, -2, el 1%) - > less1squared;
tales que la expresión
less1squared (3)
vuelve el cuadrado de (3 - 1), que es 4.
En los años 70 medios POP-2 fue virado hacia el lado de babor en el BESM-6 (sistema de POPLAN).
Versiones posteriores fueron ejecutadas para Modula uno, PDP-10, serie del ICL 1900 (que funciona con el sistema operativo de George). Davies juliano, en Edimburgo, ejecutó una versión extendida de POP-2, que él llamó POP-10 en el corriente TOPS-10 de la computadora PDP-10. Éste era el primer dialecto de POP-2 que trató la caja como significativa en nombres del identificador, utilizó la minúscula para la mayoría de los identificadores del sistema, e identificadores largos apoyados con más de 8 carácteres.
Poco después que, una nueva puesta en práctica conocida como WPOP (para WonderPop) fue ejecutada por Roberto Rae y Allan Ramsay en Edimburgo, en un proyecto financiado investigación-consejo. Que la versión introdujo enjauló los espacios de dirección, el cierto mecanografiar sintáctico de tiempo de compilación (e. para los números enteros y los reals) así como algunas construcciones de la adaptación de modelos para el uso con una variedad de dato-estructuras.
Paralelamente a ese Steve robusto en la universidad de Sussex ejecutó un subconjunto de POP-2, que él llamó el POP-11 que funcionó en una computadora de la DEC PDP-11/40. Fue diseñado original para funcionar en el sistema operativo RSX-11D de la DEC, en el modo time-shared para enseñar, pero ése causó tan muchos problemas que una versión temprana Unix fue instalada y utilizada en lugar de otro. Que la versión fue escrita en el ensamblador de Unix, y el código fue compilado incremental a un código intermedio del octeto que fue interpretado. Que el puerto fue terminado alrededor de 1976 y consecuentemente de Pop-11 fue utilizado en varios lugares para enseñar. Para apoyar su función de enseñanza muchas de las características sintácticas de POP-2 fueron modificadas, e. substituyendo el extremo de la función del … por el definir… el enddefine y adición de una variedad más amplia de construcciones de colocación con los soportes cerrados para emparejar sus soportes de la abertura en vez del uso del cierre para todos los lazos en POP-2. Pop-11 también introdujo una unidad emparejadora del patrón para las estructuras de la lista, haciéndolo mucho más fácil enseñar a la programación del AI.
Pop-11 alrededor an o 80 fue virado hacia el lado de babor a una computadora VAX-780 por Steve Hardy y Juan Gibson, y eso fue substituido pronto después por un compilador incremental lleno (que produce máquina-código en vez de un código intermedio interpretado). La existencia del recopilador y de todas sus subrutinas en el tiempo de pasada permitió apoyar extensiones de lengua lejos más ricas que posible con macros, y consecuentemente Pop-11 fue utilizado (por Steve Hardy, Chris Mellish y Juan Gibson)) para producir una puesta en práctica del prólogo, usar el sintaxis estándar del prólogo, y el sistema combinado se conocía como Poplog, a el cual el campo común balbucea y el ml estándar fueron agregados más adelante. Esta versión fue virada hacia el lado de babor más adelante a una variedad de máquinas y los sistemas operativos y consecuentemente Pop-11 se convirtieron en el dialecto dominante de POP-2, aún disponible en el sistema de Poplog.
Alrededor 1986 una nueva compañía Cognitive Applications Ltd del AI., colaborado con los miembros de la universidad de Sussex para producir una variante de Pop-11 llamó el AlphaPop que funcionaba en las computadoras de Apple Mac, con los gráficos integrados. Esto fue utilizada para un número de proyectos del anuncio publicitario, así como ser utilizado para enseñar al AI que programaba en varias universidades. El hecho de que fuera ejecutado en un dialecto temprano de C, usar un recopilador idiosincrásico hecho le muy duro mantener y aumentar a las nuevas versiones del sistema operativo del mac. Además de esto, AlphaPop no era " clean" de 32 bits; debido al uso de los altos pedacitos de la dirección como " bits" de la etiqueta; para significar el tipo de objetos, que era incompatible con el uso de la memoria sobre 8Mb en Macintoshes posterior.
.
| Random links: | Cazador (aldea), Nueva York | Districto de Haa | Xanadu (banda de sonido) | Newhall, Santa Clarita, California | Observatorio de Kvistaberg |