# DYNAMO (linguaggio di programmazione)

DYNAMO ( DYNAmic MOdels ) è un linguaggio di simulazione (dotato di notazione grafica di accompagnamento) che risulta storicamente importante nell'ambito della dinamica dei sistemi. In origine era destinato alla pianificazione industriale, ma ben presto fu impiegato in altri settori, come ad esempio gli studi sul rapporto tra popolazione e risorse o gli studi sulla pianificazione urbana.
Inizialmente DYNAMO fu sviluppato presso il MIT Computation Center alla fine degli anni '50, da Phyllis Fox Alexander L. Pugh III, Grace Duren e altri, sotto la direzione di Jay Wright Forrester.
DYNAMO è stato utilizzato per simulare la dinamica dei sistemi relativi all'esaurimento delle risorse globali trattati nel Limits to Growth del Club di Roma; tuttavia, da allora è caduto in disuso.

## Inizi

Nel 1958 Forrester fu la causa involontaria dello sviluppo di DYNAMO, quando chiese a un programmatore del personale del MIT di calcolare le soluzioni di alcune equazioni necessarie ad un articolo che stava scrivendo per la Harvard Business Review riguardante le dinamiche industriali. Il programmatore, Richard Bennett, scelse di implementare un sistema (SIMPLE, acronimo che sta per "Simulation of Industrial Management Problems with Lots of Equations", cioè "Simulazione di problemi di gestione industriale con molte equazioni") che prendeva come input le equazioni codificate simbolicamente e quindi calcolava le soluzioni. SIMPLE divenne il prototipo per DYNAMO: invece di avere un programmatore di livello avanzato che scrive un risolutore ad hoc in un linguaggio di programmazione generalista, gli utenti possono specificare le equazioni del sistema in un linguaggio di simulazione dedicato e quindi ottenere direttamente i risultati della simulazione.

## Obiettivi di progettazione

DYNAMO è stato progettato enfatizzando:
* la facilità d'uso per la comunità della modellistica della dinamica industriale (che non si riteneva composta da programmatori esperti)
* l'esecuzione immediata del modello sviluppato, senza produrre un file oggetto intermedio
* l'output grafico, per stampanti di linea e plotter.
Tra le caratteristiche nelle quali DYNAMO era superiore allo standard del tempo, c'erano il supporto per l'analisi dimensionale dei tipi numerici e messaggi di errore relativamente chiari.

## Implementazione

Le prime versioni di DYNAMO sono state scritte in linguaggio assembly (per IBM 704, IBM 709 e IBM 7090). DYNAMO II è stato scritto in AED-0, una versione estesa di Algol 60. DYNAMO II / F (1971) è stato scritto in FORTRAN e poteva generare codice FORTRAN; anche DYNAMO III è stato scritto in FORTRAN; l'utilizzo di questo linguaggio ha migliorato la portabilità del sistema.
Originariamente progettato per l'elaborazione batch su computer mainframe, fu reso disponibile sui minicomputer alla fine degli anni '70 e divenne disponibile sui personal computer come "micro-Dynamo" nei primi anni '80. Il linguaggio ha subito diverse revisioni da DYNAMO II fino a DYNAMO IV (1983).

## Impatto e problemi

A parte il suo impatto pubblico (percepito in maniera indiretta) per le questioni ambientali sollevate dalla controversia sui limiti dello sviluppo, DYNAMO ha influenzato la storia della simulazione ad eventi discreti (però, si trattava sostanzialmente di un pacchetto per la simulazione a tempo continuo specificata attraverso equazioni alle differenze). Alcuni hanno sostenuto che sia stata data l'opportunità di operare nel campo della modellazione al computer anche ad utenti con preparazione matematica relativamente modesta. D'altra parte, è stata proprio la mancanza di sofisticazione matematica a venire considerata una delle debolezze (per esempio, il fatto di fare affidamento solo sull'integrazione di Eulero).