Le langage G se base sur le principe du flot de données, auquel ont été rajoutées des structures de programmation afin d'obtenir un langage de programmation complet.
Un diagramme flot de données permet d'exprimer une fonction de manière graphique. Un tel diagramme (Figure 4) est composé de :
Terminaux
: ils définissent les entrées (rectangle gras) et les sorties
(rectangle fin) de la fonction,
Noeuds :
ils définissent les opérations à effectuer. Ils sont
représentés par un carré pouvant éventuellement
contenir une image illustrant leur fonctionnalité,
Arc orientés
: ils relient noeuds et terminaux et permettent d'indiquer le passage de
données d'un noeud vers un autre. Par convention, ces arcs sont
orientés implicitement de gauche à droite,
Jetons
: ils représentent les données transitant sur les arcs. Ils
sont représentés par des points.
Des règles d'évolution permettent de faire évoluer ce diagramme :
A
l'initialisation, les terminaux d'entrée produisent chacun un jeton,
Lorsqu'un noeud
possède un jeton sur chacun de ces arcs entrant, le noeud peut être
exécuté : chaque jeton en entrée est consommé
et le noeud produit un jeton sur chacun de ces arcs sortants.
Un diagramme flot de données peut être encapsulé afin d'être réutilisé, en tant que noeud, par d'autres diagrammes flot de données. Les terminaux du diagramme deviennent alors les entrées/sorties du noeud.
Ainsi le diagramme de la Figure 4 exprime le calcul de "d = a + b * (b - c)" et de "e = b - c". A l'instant considéré, le noeud "+" peut être tiré, le noeud "-" a été tiré. Le noeud "*" ne peut être tiré pour l'instant puisqu'un de ces arcs d'entrée ne possède pas de jeton. Cela sera possible lorsque le noeud "+" aura été tiré et qu'il aura produit un jeton sur son arc de sortie. La Figure 5 représente la forme encapsulée de ce diagramme.
Emmanuel Geveaux - 1997