Le Langage E

Dylan Fontaine
ELP-2018
Published in
3 min readJun 4, 2018

Il existe de nombreux langages de programmation avec chacun sa particularité et avec des noms plus ou moins exotiques (les blagues sont légions dans le monde de la programmation). Alors qu’est-ce qui fait du langage E un langage si différent des autres?

Le langage E est un langage de programmation orienté objet crée en 1997 par Mark S. Miller. Ce langage est plus un set d’extension pour Java qu’un langage de programmation à part entière, mais possède des éléments de syntaxe différents et est principalement destiné à l’informatique distribuée sécurisée par ses différentes fonctionnalités (car Java, de base, présente quelques faiblesses pour ce type d’usage).

Pour comprendre l’intérêt d’un tel langage, il faut d’abord se pencher sur ce qu’est le calcul distribué. Le calcul distribué est un domaine de l’informatique dans lequel on aura la stratégie du “diviser pour mieux régner”. En effet, lorsque l’on souhaite réaliser un calcul, dans une architecture distribuée, le calcul ne sera pas réalisé par une machine mais plusieurs mises en réseau, et sera divisé en plusieurs sous-opérations qui seront confiées à chacune d’entre elles, l’intérêt est donc de réaliser plus de calculs pour un même intervalle de temps.

Ainsi, une particularité très intéressante de ce langage est la manière dont on peut gérer les communications si on est dans ce type de scénario. En effet, dans le calcul distribué, les machines sur le réseau doivent avoir un moyen de communiquer leurs résultats, si on prend par exemple le cas de Java, lorsqu’on a besoin de faire communiquer un processus avec un autre à travers un réseau, on devra absolument prendre en compte les paramètres de la couche réseau (l’adresse, le protocole utilisé…). En revanche, lorsqu’on travaille en E, il s’agit de communication entre objets, ainsi, il suffira de donner l’objet avec lequel on souhaite communiquer et utiliser la bonne primitive pour pouvoir envoyer un message, et ceci, même si l’objet se trouve sur une autre machine très éloignée géographiquement:

Exemple d’envoi d’un message vers un autre objet nommé “OtherGuy”

Dans le calcul distribué, la gestion des droits est également importante, car il ne faut pas qu’une machine ait beaucoup de droit sur une autre machine(cela permet entre autre d’éviter qu’une machine infectée puisse tout modifier sur une autre machine), ce langage propose alors une solution à cela. Si par exemple, on souhaite qu’un objet ait l’autorisation d’envoyer une information à un autre objet, d’ajouter une entrée dans une base de données ou d’écrire sur le disque, il suffira de le spécifier. En effet, qu’un objet soit présent sur le disque local ou sur une machine distante, il possédera sa propre signature et un ensemble d’actions qu’il souhaite réaliser, ce qui permettra de connaître son niveau de confiance (“trustedness”), et donc de lui accorder les droits nécessaires ou non. L’intérêt de ce mécanisme est donc de nous permettre d’avoir une plus grande flexibilité et un meilleur contrôle sur ce que l’on peut ou non faire.

Enfin, au niveau de sa syntaxe, E n’est pas très dépaysant, sa syntaxe est très proche de Java et du C, avec tout de même quelques subtilités, comme le fait que le “=” n’existe pas pour l’affectation et est remplacé par le “ :=”, ce qui permet plus de clarté, ce qui est tout à fait dans la philosophie de ce langage : être clair lorsque l’on va regarder à nouveau notre code. Ce langage emprunte également quelques éléments de python comme le mot-clé “def”. Voici un exemple de fonction écrit en E qui va retourner la factorielle d’un nombre donné en argument :

Fonction factorielle en E

Avant d’écrire cet article, je n’avais aucune idée des enjeux du monde de l’informatique distribuée et des problèmes qui y sont liés, E représente une des solutions proposé qui, avec ces fonctionnalités, se révèle très adapté pour ce type d’usage. De plus, il est intéressant de remarquer, en tant que programmeur, que pour une utilisation spécifique, il est parfois nécessaire de développer un langage au-dessus d’un autre, pour pouvoir pallier certains de ses défauts.

Références
[1] http://wiki.erights.org
[2] https://www.crockford.com/ec/
[3] http://www.erights.org/
[4] https://en.wikipedia.org/wiki/E_(programming_language)

--

--