Přeskočit na obsah
cd /languages
  • Vědecké dědictví
  • Programování
  • Podpora AST a symbolů

Fortran v Maguyva: grafy kódu pro vědecké kódové základny

Maguyva podporuje Fortran s AST, symboly a grafem, takže AI agenti sledují podprogramy, moduly a odvozené typy dřív, než změní numerický kód.

Proč Fortran potřebuje strukturu, ne porovnávání řetězců

Kódové základny ve Fortranu bývají staré, rozsáhlé a psané odborníky na danou oblast, ne softwarovými týmy. Rutiny pojmenované SOLVE, Solve a solve jsou jedna a tatáž rutina. Moduly sdílí stovky souborů a knihovna vestavěných procedur je tak velká, že naivní seznam volání tvoří hlavně SQRT, SUM a WRITE.

Agent, který umí jen grep, se v tom šumu utopí. Maguyva mu nejdřív dá strukturu: jaké programové jednotky existují, které moduly používají a které vlastní rutiny se navzájem volají.

Co Maguyva ve Fortranu extrahuje

Maguyva pokrývá zdrojový kód v pevném i volném formátu (.f, .for, .ftn, .f90, .f95, .f03, .f08). Funkce a podprogramy se extrahují jako volatelné symboly a odvozené typy lze ve strukturním vyhledávání vybrat jako definice typů.

Porovnávání symbolů nerozlišuje velikost písmen, stejně jako samotný Fortran. Vazby importu vznikají z use a include; klíčové slovo se odstraní, takže graf uchovává název modulu. Součástí grafu jsou i volání, čtení, přiřazení, odkazy na typy a dědičnost z rozšířených odvozených typů.

Filtr vazeb vyřazuje přibližně 165 vestavěných procedur (příkazy vstupu a výstupu a rutiny pro matematiku, pole, řetězce, převody typů a práci s bity), takže zbylé hrany ukazují na váš vlastní kód.

Ukázkové prompty pro agenty

  • „Které podprogramy volají compute_flux a jaké moduly používají?“ (find_symbol, pak dependency_search incoming)
  • „Dohledej, jak se v cyklu řešiče uplatňují okrajové podmínky.“ (get_task_context)
  • „Najdi všechny programové jednotky, které používají modul constants.“ (text_pattern_search pro use constants, pak find_symbol)

Známá omezení

  • Fortran nemá dekorátory ani zpracování výjimek, proto jsou tyto typy vazeb označeny jako nepoužitelné.
  • Procedury vázané na typ sdílejí stejné uzly jako běžné funkce a podprogramy. V structural_search použijte preset functions; preset methods žádné uzly Fortranu nevybere.
  • Volání odfiltrovaných vestavěných procedur se v grafu neobjeví jako hrany. Když potřebujete každé WRITE nebo OPEN, použijte text_pattern_search.

Další kroky

Připojte repozitář podle rychlého startu a pak si prohlédněte úplnou matici podpory na stránce kompatibility. Pokud váš Fortran sousedí s propojovacím kódem v C, přečtěte si i průvodce jazykem C.

Nejlépe se hodí pro

  • > Výzkumné, inženýrské a HPC týmy, které udržují řešiče, simulace nebo numerické knihovny ve Fortranu starší než současný tým.
  • > Repozitáře, kde soubory `.f` v pevném formátu leží vedle modulů `.f90` a novějších ve volném formátu, často spolu s obalovým kódem v C nebo jazyce Python.
  • > Revize s podporou agentů, kde je prvním krokem zjistit, které podprogramy zasahují do sdíleného modulu, než se změní numerika.

Workflow agentů

  • > Dohledat, které podprogramy a funkce volají rutinu řešiče, než se změní její argumenty nebo jednotky.
  • > Vypsat moduly, které programová jednotka importuje přes `use`, a přejít k jejich definicím.
  • > Najít, kde je odvozený typ deklarován a které procedury s ním pracují.

Podrobnosti enginu

  • > Podpora Fortranu pokrývá zdrojový kód v pevném i volném formátu: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` a `.f08`.
  • > Funkce a podprogramy jsou volatelné symboly, porovnávání symbolů nerozlišuje velikost písmen a `use` a `include` se stávají vazbami importu.
  • > Přibližně 165 vestavěných procedur (vstup a výstup, matematika, pole, řetězce, převody typů a bity) se z vazeb odfiltruje. Vazby dekorátorů a výjimek jsou označeny jako nepoužitelné.

Užitečné vstupní body MCP

  • find_symbol

    Začněte názvem podprogramu, funkce nebo modulu; porovnání stejně jako Fortran nerozlišuje velikost písmen.

  • dependency_search

    Použijte procházení incoming na rutině řešiče nebo sdíleného modulu a před numerickou změnou uvidíte všechny volající.

  • get_task_context

    Použijte pro prompty typu „dohledej, jak se v cyklu řešiče uplatňují okrajové podmínky“.