Spring til indhold
AiNews.dkDanske nyheder om Kunstig Intelligens

Topnyheder

Uden tests tvinger AI-oversat kode til blind tillid

Reservoirsimulatoren havde hverken tests eller dokumentation. Mistral brugte AI-agenter til at oversætte og omlægge koden.

1 kildeVedtaget af NIel AutopilotRettet 9. september 2026 kl. 20.28
Læst op af en AI-stemme

Læs i dit tempo

Kort

Mistral har oversat 40.000 linjer gammel Fortran-kode til C++ for en energivirksomhed.

Det betyder noget, fordi gammel kode er svær at vedligeholde, og oversættelsen kræver store arkitektoniske ændringer.

Nu skal den nye kode verificeres, hvilket er svært, da der ikke er nogen direkte sammenligning mellem de to versioner.

Begynder

Energiselskabet havde et gammelt computerprogram, der blev brugt til at simulere, hvordan olie og gas bevæger sig i undergrunden. Programmet var skrevet i et programmeringssprog fra 1977, som hedder Fortran 77. Det bestod af 40.000 linjer kode, og der var ingen tests, der kunne vise, om programmet virkede korrekt, og heller ingen beskrivelse af, hvordan det hele hang sammen. Sådan noget kode kalder man for »legacy-kode«, fordi det er gammelt og svært at forstå, især når de folk, der oprindeligt skrev det, ikke længere arbejder der.

Det sværeste var ikke at oversætte selve koden fra et sprog til et andet. Det er næsten automatisk i dag. Det sværeste var at ændre hele måden, programmet er bygget op på. Fortran 77 er et såkaldt »procedureorienteret« sprog, hvor man skriver en lang række trin, der udføres efter hinanden. Det nye sprog, C++, er »objektorienteret«, hvilket betyder, at man samler data og de handlinger, der bruger dataene, i små selvstændige enheder, man kalder objekter. Det kræver en helt anden arkitektur, og man kan ikke bare oversætte linje for linje.

Fortran 77 havde nogle mærkelige begrænsninger, som gjorde koden svær at læse. For eksempel kunne variabelnavne kun være seks tegn lange, så de blev kryptiske forkortelser. Der var også en regel, der sagde, at hvis en variabel begyndte med et bogstav fra I til N, så var den automatisk et heltal – ellers var den et decimaltal. Det betød, at en tastefejl i et navn kunne skabe en helt ny variabel uden at give nogen fejlbesked. Al data blev gemt i fælles hukommelsesblokke, som hele programmet kunne se, hvilket gjorde det svært at holde styr på, hvad der påvirkede hvad.

I det nye C++-program samlede man alle de spredte data i én samlet parameter, der beskriver gasens egenskaber, og man flyttede beregningsløkkerne ud til den kode, der kalder dem. Det betyder, at der ikke er nogen direkte sammenligning mellem den gamle og den nye kode, og derfor er det svært at bevise, at de gør det samme. Det er netop den slags arkitektoniske ændringer, der kræver menneskelig ekspertise og grundig verifikation, selvom selve oversættelsen er automatiseret.

Redaktionel illustration til „Uden tests tvinger AI-oversat kode til blind tillid“
Genereret illustration · ikke et fotografi fra historien

Mistral har hjulpet en europæisk energioperatør med at flytte 40.000 linjer Fortran 77 til C++. Koden er en fysiktung reservoirsimulator uden testsuite og uden samlet dokumentation.

Legacy-kodebaser vokser gennem årtier, og når de oprindelige forfattere forlader projektet, bliver viden i koden svær at genfinde. Sprog uden et aktivt udviklerøkosystem betyder desuden, at man går glip af muligheden for at bygge videre på andres arbejde.

Den svære del var ikke selve oversættelsen. Ifølge Mistral er det stort set løst at oversætte syntaks fra et sprog til et andet. Men at omlægge et helt system fra procedureorienteret Fortran til objektorienteret C++ kræver arkitektoniske ændringer.

Fortran 77 blev standardiseret i 1977, og koden bærer præg af datidens begrænsninger: ingen moduler, ingen namespaces, ingen strukturerede typer. Tilstanden ligger i COMMON-blokke, global hukommelse, der er delt på tværs af hele programmet. Variabler får implicit type ud fra deres første bogstav, så en stavefejl i et variabelnavn opretter lydløst en ny variabel i stedet for at udløse en kompileringsfejl. Variabelnavne er kryptiske, fordi længden er begrænset til seks tegn.

Mistral viser et eksempel: en Taylor-ekspansion af første grad, hvor input og output ligger i en COMMON-blok, og hvor IC kun er et heltal, fordi navnet begynder med et bogstav mellem I og N. I C++ bliver de spredte COMMON-arrays til en enkelt GasProperties-parameter, og løkken flytter ud til kaldende kode. Der er ingen linje-for-linje-overensstemmelse at tjekke, og det er netop det, der gør verifikationen svær.

Det er uklart: Artiklen bygger udelukkende på Mistrals egen case-beskrivelse. Mistral oplyser ikke, hvilke konkrete agenter eller modeller der blev brugt, og der er ingen uafhængig kilde.

Kilder

  1. Modernizing complex legacy code with AI agents. mistral.ai
Produktionshistorie
  1. Radar Signal ? af 100 · spredning 1 kilder
  2. Vurdering Nyheds 3/5 — Mistral viser konkret brug af AI-agenter til modernisering af legacy-kode, relevant for udviklere.
  3. Skrevet Model: deepseek-v4-flash · temperatur 0.4
  4. Overskrift 5 kandidater, valgt af deepseek-v4-flash
  5. Billede Genereret af gemini-2.5-flash-image
  6. Vedtagelse ainews-auto-v3 · score 0.4142