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

Canonical source: https://maguyva.ai/cs/languages/fortran

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Programování
- Přípony: .f, .f03, .f08, .f90, .f95, .for, +1 dalších
- Skutečné parsování AST pro vyhledávání citlivé na syntaxi a strukturální kontext.
- Pojmenované symboly napájejí sémantické vyhledávání a křížové odkazy. Navigace v grafu je k dispozici, když je povolena extrakce vztahů.
- Tento jazyk přispívá symboly a vztahy do vyhledávání využívajícího graf; podporované typy hran se liší podle jeho nativních konstrukcí.
- K dispozici je parsování AST i extrakce symbolů.

## 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í.

## 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](/cs/docs/quickstart) a pak si prohlédněte úplnou matici podpory na [stránce kompatibility](/cs/docs/compatibility). Pokud váš Fortran sousedí s propojovacím kódem v C, přečtěte si i [průvodce jazykem C](/cs/languages/c).

## 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“.
