Programmation répartie à l`aide d`un langage fonctionnel

Transcription

Programmation répartie à l`aide d`un langage fonctionnel
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