www.heig-vd.ch Programmation répartie à l'aide d'un langage fonctionnel Mots clés Algorithmes choisis • Programmation répartie ; • Exclusion mutuelle : Lamport ; • Programmation fonctionnelle ; • • Erlang ; Election en anneau possibles des sites ; • Scala. • Paradigme des sondes et des échos : Description Le but de ce projet est d’implémenter différents algorithmes de programmation répartie dans un ou des langages de programmation fonctionnelle. Ces implémentations sont comparées aux implémentations Ada données dans le cours de programmation répartie. Elles sont aussi comparées entre elles pour déterminer lequel des langages est le plus approprié pour mettre en évidence le principe de ces algorithmes de programmation répartie. Langages choisis • avec pannes o Diffusion d’un message ; o Simple exploration du réseau ; o Exploration en profondeur ; Terminaison par diffusion. Interprétation et implémentation Dans un premier temps, les différents algorithmes sont interprétés pour une représentation fonctionnelle de manière théorique. Cette approche s’affranchit de toute spécificité d’un langage donné. Ainsi, une base de travail théorique est donnée pour pouvoir implémenter ces algorithmes. Plusieurs langages ont été utilisés lors de ce travail puisqu’il est plus intéressant d’avoir différents points de vues. Ensuite, ces algorithmes sont implémentés en Erlang et en Scala. Ces implémentations sont critiquées sur leur lisibilité et sont comparées avec leurs correspondantes en Ada. Erlang est un langage de programmation fonctionnelle qui a été créé pour faire de la programmation sur un réseau. Ainsi, il est, à priori, adapté au problème posé. Quelques implémentations théoriques en Clean sont données pour illustrer ce qui serait faisable dans un langage fonctionnel pur. Scala est un langage de programmation multiparadigme. Il met en œuvre le paradigme orienté objet et le paradigme fonctionnel. Il est donc intéressant de voir ce que ce multiparadigme peut apporter au projet. Ces deux langages fonctionnels impurs. sont des langages Un troisième langage, Clean, est aussi abordé dans ce travail. Cependant, les difficultés à permettre la transmission des messages entre différents nœuds ont exclu toutes approches pratiques. Une approche théorique est néanmoins présentée. Auteur: Répondant externe: Prof. responsable: Sujet proposé par: Jérôme Amiguet Claude Evéquoz Institut SIM HEIG-VD © 2013, filière Informatique