L’ANALISI
Da Fortran 77 a C++ con agenti AI: la parità numerica viene prima della velocità
Mistral descrive la migrazione dei primi 40.000 righi di un simulatore scientifico: gli agenti aiutano, ma solo dentro un workflow con test di parità e revisioni umane.

In breve: il caso mostra che la parte decisiva non è tradurre sintassi, ma costruire prima un harness che confronti risultati finali e checkpoint intermedi. L’autonomia completa ha prodotto codice funzionante ma poco modernizzato.
Che cosa è stato migrato
Mistral riferisce di aver lavorato con un operatore energetico europeo su un simulatore di giacimento in Fortran 77, privo di test centralizzati e con documentazione dispersa. Il primo sprint ha coperto 40.000 dei 300.000 righi complessivi.
Perché la traduzione non basta
COMMON block, tipizzazione implicita e flussi basati su GOTO non hanno una corrispondenza architetturale diretta nel C++ moderno. Nel primo tentativo, un agente per subroutine ha conservato strutture globali e controllo quasi uno a uno: compilava, ma non era una vera modernizzazione.
Il controllo che ha cambiato il progetto
Prima della migrazione sono stati aggiunti export dello stato Fortran e test C++ capaci di confrontare output finali e punti intermedi scelti dagli ingegneri. Questa parità numerica ha trasformato un giudizio soggettivo in una condizione verificabile per ogni modulo.
Dove resta necessario l’intervento umano
Il workflow più efficace ha combinato pianificatore, coder, tester e reviewer, con una persona che sbloccava gli stalli e approvava architettura e pull request. È un case study del fornitore, non un benchmark indipendente, e parte da un sistema ancora eseguibile e relativamente autocontenuto.
Checklist per una migrazione assistita
- Congelare una baseline eseguibile prima di modificare il codice.
- Definire output finali e checkpoint numerici intermedi.
- Separare traduzione sintattica, refactoring architetturale e integrazione.
- Limitare i moduli a unità verificabili e mantenere una coda di task.
- Richiedere revisione umana su architettura, stalli e pull request.
- Misurare equivalenza, difetti e tempo di revisione, non solo righi convertiti.