POP-2

POP-2 , souvent visé car le POP2 était un langage de programmation développé autour de 1970 de la langue plus tôt POP-1 (à l'origine appelé COWSEL ) par le Robin Popplestone et le Rod Burstall à l'université de d'Edimbourg . Il a tiré des racines de beaucoup de sources : le LISP de langues et algol 60 , et idées théoriques de Landin . Il a employé un compilateur incrémental , qui lui a donné une partie de la flexibilité d'une langue interprétée , y compris permettre de nouvelles définitions de fonction au temps d'exécution et de modification des définitions de fonction tandis qu'un programme fonctionnait (qui sont des dispositifs de la compilation dynamique ), sans frais généraux d'une langue interprétée. Il a été décrit comme « première véritable langue fonctionnelle » à HOPL, l'histoire du site Web de langages de programmation.

Sa syntaxe était Algol-comme, sauf que les tâches étaient vers l'arrière : au lieu de l'écriture

a : = 3 ;

on a écrit

3 - > a ;

La raison de ceci était que la langue a eu la notion explicite d'une pile d'opérande de ; ainsi, la tâche précédente a pu être écrite en tant que deux rapports séparés :

3 ;

ce qui a évalué la valeur 3 et l'a laissée sur la pile, et

- > a ;

ce qui a sauté la valeur supérieure outre de la pile et l'a assignée à la variable « a ». De même, l'appel de fonction

f (x, y, z) ;

a pu être écrit As

X, y, z ; f () ;

(virgules et points-virgules étant en grande partie interchangeables) ou même

X, y, z.f ;

ou

(x, y, z).f ;

Il n'y avait aucune construction de langue spéciale pour créer des rangées ou des structures record comme ils sont généralement compris : au lieu de cela, ceux-ci ont été créés à l'aide des fonctions spéciales de builtin, par exemple newarray (pour les rangées qui pourraient contenir n'importe quel type d'article) et newanyarray pour créer les types limités d'articles.

Ainsi, l'élément de tableau et les accédants de champ de disque étaient des cas simplement spéciaux d'une fonction de doublet de : c'était une fonction qui a eu une autre fonction attachée en tant que son '' updater '', qui a été invité le côté de réception d'une tâche. Ainsi, si le a variable contenait une rangée, puis

3 - > a (4) ;

était équivalent à

updater (a) (3, 4) ;

la fonction updater de builtin renvoyant l'updater du doublet. Naturellement, updater était lui-même un doublet et a pu être employé pour changer le composant d'updater d'un doublet.

En raison du paradigme empiler-basé, il n'y avait aucun besoin de distinguer les rapports de et les expressions de ; ainsi, les deux constructions

si a > puis b c - > e autrement d - > e fin ;

et

si a > puis b c autrement d fin - > e ;

étaient équivalents (noter l'utilisation de close car endif n'avait pas été inventé encore).

Les variables pourraient tenir des valeurs de n'importe quel type, y compris les fonctions, qui étaient les objets de première classe. Ainsi, les constructions suivantes

de x/y maximum de fonction ; si extrémité étroite d'autre de x > de y puis x y ;

et

vars maximum ; lambda de x/y ; si extrémité étroite d'autre de x > de y puis x y - > maximum ;

étaient équivalents.

Une opération intéressante sur des fonctions était '' application partielle '' ; c'était où un certain nombre des arguments extrême droite de la fonction étaient des valeurs données de congelées par , de produire une nouvelle fonction de peu d'arguments. Par exemple, considérer une fonction pour calculer des polynômes de second degré généraux :

fonction poly2 X un b c ; a * x * x + b * x + extrémité de c ;

Ceci a pu être lié, par exemple As

vars less1squared ; poly2 (% 1, -2, 1 %) - > less1squared ;

tels que l'expression

less1squared (3)

renvoie la place de (3 - 1), qui est 4.

Derniers développements

La version originale de POP-2 a été mise en application sur un ordinateur d'Elliott 4130 à l'université d'Edimbourg (seulement le RAM 64KB, étant doublé à 128KB en 1972).

Aux années 70 moyennes POP-2 a été mis en communication sur le BESM-6 (système de POPLAN).

Des versions postérieures ont été mises en application pour Modula un, le PDP-10 , série d'ICL 1900 (courant George du système d'exploitation). Julian Davies, à Edimbourg, a mis en application une version prolongée de POP-2, qu'il a appelé POP-10 sur le courant TOPS-10 de l'ordinateur PDP-10. C'était le premier dialecte de POP-2 qui a traité la caisse comme significative dans des noms de marque, a employé la lettre minuscule pour la plupart des marques de système, et les longues marques soutenues avec plus de 8 caractères.

Peu de temps après que, une nouvelle exécution connue sous le nom de WPOP (pour WonderPop) a été mise en application par Robert Rae et Allan Ramsay à Edimbourg, sur un projet placé parconseil. Que la version a présenté a mis en cage les espaces d'adressage, la dactylographie syntactique au moment de la compilation (par exemple pour des nombres entiers et des reals) aussi bien que quelques constructions de configuration avec un modèle pour l'usage avec une série de donnée-structures.

Parallèlement à ce Steve robuste à l'université du Sussex a mis en application un sous-ensemble de POP-2, qu'il a appelé le POP-11 qui a fonctionné sur un ordinateur du DEC PDP-11/40 de . Il a été à l'origine conçu pour fonctionner sur le DEC RSX-11D du système d'exploitation, en mode en temps partagé pour l'enseignement, mais cela a posé tant de problèmes qu'une version tôt de Unix a été installée et employée à la place. Que la version a été écrite en assembleur d'Unix, et code a été incrémentalement compilé à un code intermédiaire de byte qui a été interprété. Que le port a été accompli autour de 1976 et en conséquence de Pop-11 a été employé dans plusieurs endroits pour l'enseignement. Afin de soutenir sa fonction de enseignement plusieurs des dispositifs syntactiques de POP-2 ont été modifiés, par exemple en remplaçant l'extrémité de fonction de … par le définir… l'enddefine et ajouter une plus grande variété de constructions de bouclage avec les parenthèses fermantes pour assortir leurs parenthèses d'ouverture au lieu de l'utilisation de la fin pour toutes les boucles dans POP-2. Pop-11 a également présenté une bouveteuse de modèle pour des structures de liste, le facilitant beaucoup pour enseigner la programmation d'AI.

Pop-11 environ 1980 a été mis en communication à un ordinateur VAX-780 par Steve Hardy et John Gibson, et peu ensuite cela il a été remplacé par un plein compilateur incrémental (produisant le machine-code au lieu d'un code intermédiaire interprété). L'existence du compilateur et de tous ses sous-routines au temps d'exécution a permis pour soutenir les élargissements de langue bien plus riches que n'était possible avec des macros, et en conséquence Pop-11 a été employé (par Steve Hardy, Chris Mellish et John Gibson)) pour produire une exécution du Prolog , using la syntaxe standard du Prolog, et le système combiné est devenu notoire comme Poplog , à laquelle le terrain communal de blèsent et ml standard plus tard ont été ajoutés. Cette version plus tard a été mise en communication à une série de machines et les logiciels d'exploitation et en conséquence Pop-11 sont devenus le dialecte dominant de POP-2, encore disponible dans le système de Poplog.

Environ 1986 une nouvelle compagnie Cognitive Applications Ltd. d'AI, collaboré avec des membres d'université du Sussex pour produire une variante de Pop-11 a appelé le AlphaPop fonctionnant sur des ordinateurs d'Apple Mac, avec les graphiques integrated. Ceci a été employé pour un certain nombre de projets de film publicitaire, aussi bien qu'être employée pour enseigner l'AI programmant dans plusieurs universités. Le fait qu'il a été mis en application dans un dialecte tôt de C, using un compilateur idiosyncratique fait lui très dur pour maintenir et améliorer à de nouvelles versions du Mac du système d'exploitation. En plus de ceci, AlphaPop n'était pas " ; clean" à 32 bits ; en raison de l'utilisation du peu élevé d'adresse comme " ; bits" d'étiquette ; pour signifier le type d'objets, qui était incompatible avec l'utilisation de la mémoire au-dessus de 8Mb sur plus défunt Macintoshes.

Voir également

Langage de programmation du COWSEL
Langage de programmation du POP-1
Langage de programmation du POP-11
Environnement de programmation de Poplog

.

Random links:Technologie de langue | Anne Heggtveit | Yuri Averbakh | Janet Jackson (album) | POP-2