# DYNAMO (langage)

DYNAMO (DYNAmic MOdels) est un précurseur des langages de simulation. Associé à une notation graphique, il a été développé dans le cadre d'analyse de la dynamique des systèmes. Il a initialement été conçu pour des dynamiques d'industries, mais il a rapidement été utilisé pour d'autres applications, y compris des études démographiques, sur les ressources ou d'urbanisme$^,$.
La version initiale de DYNAMO a été développée sous la direction de Jay Wright Forrester à la fin des années 1950, par le Dr Phyllis Fox$^,$, Alexander L. Pugh III, Grâce Duren, et d'autres chercheurs du Centre de Calcul du M.I.T.
Dans les années 1970, DYNAMO a été utilisé pour les simulations de dynamique des systèmes du rapport du Club de Rome intitulé les Limites à la Croissance qui alertait sur la déplétion des ressources, mais il est tombé depuis en désuétude, remplacé notamment par Stella.

## Débuts

Jay Forrester a involontairement initié le développement de DYNAMO en 1958 quand il a demandé à un programmeur du MIT de calculer les solutions nécessaires à certaines équations, pour un article de la Harvard Business Review qu'il était en train d'écrire sur la dynamique industrielle. Le programmeur, Richard Bennett, choisi de mettre en œuvre un système (SIMPLE pour "Simulation of Industrial Management Problems with Lots of Equations") qui prenait les équations codées comme entrée symbolique et qui calculait les solutions. SIMPLE est devenu la preuve de concept de DYNAMO : au lieu de faire appel à un programmeur spécialisé pour "coder en dur" un solveur à usage spécifique dans un langage de programmation général, les utilisateurs pouvaient spécifier les équations d'un système dans un langage de simulation spécifique et obtenir le résultat de la simulation par une simple exécution du programme.

## Objectifs de conception

DYNAMO a été conçu pour mettre en avant les éléments suivants :
* une grande facilité d'utilisation pour les modélisateurs en dynamique industrielle (que l'on ne supposait pas être des experts en programmation),
* une exécution immédiate du modèle compilé, sans produire de fichier objet intermédiaire,
* la présentation du résultat sous forme graphique, avec une interface imprimante et traceur graphique.
Parmi les arguments qui faisaient de DYNAMO un outil supérieur aux outils concurrents de l'époque, il y avait le fait qu'il incluse la vérification des types d'unités numériques et des messages d'erreur relativement clairs.

## Implémentation

Les premières versions ont été écrites en langage d'assemblage pour IBM 704, puis pour IBM 709 et IBM 7090. DYNAMO II a été écrit en AED-0, une version étendue d'Algol 60$^,$. Dynamo II/F, en 1971, générait du code portable FORTRAN et les deux Dynamo II/F et Dynamo III ont amélioré la portabilité du système par leur écriture en FORTRAN.
Conçu à l'origine pour le traitement par lot sur gros systèmes, il a été porté sur mini-ordinateur à la fin des années 1970, et au début des années 1980, il est devenu disponible sur ordinateur personnel sous le nom "micro-Dynamo". Le langage a subi plusieurs révisions, de DYNAMO II à DYNAMO IV en 1983.

## Influence et problèmes soulevés

Au-delà de l'influence (ressentie de manière indirecte) qu'il a eue auprès du grand public sur les questions environnementales qu'a soulevée la controverse sur les Limites de la Croissance, DYNAMO a eu une influence notable dans l'histoire des simulations à événements discrets, même s'il se résumait pour l'essentiel à un outil dédié à la simulation continue par des équations différentielles.
Certains ont affirmé que DYNAMO donnait accès à la modélisation informatique, y compris pour des personnes doté d'une formation mathématique relativement limitée. Par ailleurs, il a aussi été critiqué pour sa faiblesse, là où précisément une certaine sophistication mathématique aurait été nécessaire, ne proposant que la résolution par la méthode d'Euler.