Simula — Le language de l’ombre.

Simple universal language (Simula), aussi connu sous de le nom de Simula67, fut développé en 1962 sur les bases d’ALGO60. Généralement méconnu des entreprises et du public, il a eu une influence déterminante sur les langages de programmation d’aujourd’hui !

SIMULA — Le Batman de la programmation objet ?

Malgré son nom, Simula a implémenté beaucoup plus de concepts que ceux de la simulation. En effet, il fut le premier langage à implémenter le modèle de classe de Hoare. Ce concept lui permet, notamment, de s’adapter à toutes les situations.

Voici un exemple de code qui représente la définition de la fonction somme :

Real Procedure Sigma (k, m, n, u);
Name k, u; J
Integer k, m, n;
Real u;
Begin
Real s := 0;
k:= m;
While k <= n Do
Begin s:= s + u; k:= k + 1;
End;
Sigma:= s;
End;

Point d’attention sur “Name” qui permet de substituer directement les arguments dans le corps de la fonction.

Voici comment utiliser la fonction précédente pour sommer les 100 premiers termes de la suite s_a(i) = 1/(i+a)²

Z:= Sigma (i, 1, 100, 1 / (i + a) ** 2);

Pour ne pas avoir une saturation de la mémoire, nous passons en paramètre l’indice i. En effet, dans les années 60, la gestion de la mémoire est au centre des attentions.

Simula offre, pour la première fois dans l’univers de la programmation, la notion de classe qui est aujourd’hui largement répandue.

Les classes sont construites à partir de paramètres, d‘attributs, de méthodes et d’un corps.

Exemple de déclaration d’une classe :

Class Circle (Radius);             ! Classe avec un paramètre 
Real Radius; ! Type du paramètre
Begin
Real Area,Perimeter; ! Attributs
Procedure Update; ! Méthode Update
Begin
Area := Radius*Radius*3,14*2; ! Calcule de l'air
Perimeter := Radius*3,14*2; ! Calcule du périmètre
End of Update;
Update; ! Exécute Update lors de la création de l'objet
End of Circle;

A noter qu’un paramètre est issu de la fonction appelante alors qu’un attribut est spécifique à la classe et elle est atteignable uniquement en passant par la classe.

Voici un exemple de création et d’utilisation d’une classe et de sa fonction :

ref (Circle) cercle1 ;
cercle1 :- new Circle(10);
cercle1.Update;

De plus, Simula met en relation ces classes avec l’utilisation de la hiérarchie.

L’héritage entre classes s’exprime en préfixant la définition d’une sous-classe, comme l’exemple ci-dessous :

Exemple de sous classes

Précurseur dans ce domaine, il a pu inspirer dès la conception des langages comme C++, Java, ou encore Eiffel.

--

--