Article de reference

MultiLisp

MultiLisp est un langage de programmation fonctionnelle , un dialecte du langage Lisp et de son dialecte Scheme , enrichi de mécanismes pour l' exécution parallèle et la gestion...

langage de programmation fonctionnelle , un dialecte du langage Lisp et de son dialecte Scheme , enrichi de mécanismes pour l' exécution parallèle et la gestion de la mémoire partagée . Ces extensions induisent des effets de bord , rendant MultiLisp non déterministe . Outre ses extensions de programmation parallèle, MultiLisp possédait également des algorithmes de ramasse-miettes et d'ordonnancement des tâches inhabituels. À l'instar de Scheme, MultiLisp était optimisé pour le calcul symbolique . Contrairement à certains langages de programmation parallèle, MultiLisp intégrait des mécanismes permettant de générer des effets de bord et d'introduire explicitement le parallélisme.

Il a été conçu par Robert H. Halstead Jr., au début des années 1980, pour être utilisé sur le multiprocesseur Concert à 32 processeurs alors en développement au Massachusetts Institute of Technology (MIT) et implémenté en Interlisp . Il a influencé le développement des dialectes Scheme Gambit , et Interlisp- VAX .

PCALL et FUTURE

MultiLisp atteint le parallélisme avec la macro PCALL , où

(PCALL Fun A B C ...)

est équivalent à

(Fun A B C ...)

À ceci près que les arguments,A, B, C, etc., peuvent explicitement être évalués en parallèle ; ceci contourne l’ordre d’évaluation habituel, qui est séquentiel et s’effectue de gauche à droite. On utilise également une construction de programmation parallèle appelée futures , qui s’apparente à la création de processus (forking ), combinée à l’évaluation paresseuse . Grâce à cette construction, une expression telle que

(cons (FUTURE A) (FUTURE B))

peut être écrit, ce qui chevauchera l'évaluation des expressions A et B, non seulement entre elles, mais aussi avec les calculs qui utilisent le résultat de l' appel cons , jusqu'à ce qu'une opération soit effectuée qui nécessite des informations correctes sur la valeur de A ou B.