# Fortran dans Maguyva : des graphes de code pour le calcul scientifique

Canonical source: https://maguyva.ai/fr/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 prend en charge Fortran avec AST, symboles et graphe, pour que les agents IA suivent sous-programmes, modules et types dérivés avant de modifier du code numérique.

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Programmation
- Extensions: .f, .f03, .f08, .f90, .f95, .for, +1 de plus
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

## Idéal pour

- Les équipes de recherche, d'ingénierie et HPC qui maintiennent des solveurs, simulations ou bibliothèques numériques Fortran plus anciens que l'équipe actuelle.
- Les dépôts qui mêlent des fichiers `.f` en format fixe à des modules `.f90` et plus récents en format libre, souvent à côté de wrappers C ou Python.
- Les revues assistées par agent où il faut d'abord savoir quels sous-programmes touchent un module partagé avant un changement numérique.

## Workflows d'agent

- Retrouver les sous-programmes et fonctions qui appellent une routine de solveur avant d'en changer les arguments ou les unités.
- Lister les modules qu'une unité de programme importe avec `use` et remonter jusqu'à leurs définitions.
- Trouver où un type dérivé est déclaré et quelles procédures l'utilisent.

## Pourquoi Fortran demande de la structure, pas de la recherche de chaînes

Les bases de code Fortran sont souvent anciennes, volumineuses et écrites par des spécialistes du domaine plutôt que par des équipes logicielles. Les routines nommées `SOLVE`, `Solve` et `solve` sont une seule et même routine. Les modules sont partagés par des centaines de fichiers, et la bibliothèque des procédures intrinsèques est si vaste qu'une liste d'appels naïve contient surtout `SQRT`, `SUM` et `WRITE`.

Un agent qui se contente de grep se noie dans ce bruit. Maguyva lui donne d'abord la structure : quelles unités de programme existent, quels modules elles utilisent et quelles routines utilisateur s'appellent entre elles.

## Ce que Maguyva extrait en Fortran

Maguyva couvre les sources en format fixe et libre (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Les fonctions et sous-programmes sont extraits comme symboles appelables, et les types dérivés peuvent être sélectionnés comme définitions de type dans la recherche structurelle.

La correspondance des symboles ignore la casse, comme le fait Fortran. Les relations d'import proviennent de `use` et `include`, le mot-clé étant retiré pour que le graphe stocke le nom du module. Les appels, lectures, affectations, références de type et l'héritage des types dérivés étendus font aussi partie du graphe.

Le filtre de relations écarte environ 165 procédures intrinsèques (instructions d'E/S, routines mathématiques, de tableaux, de chaînes, de conversion de type et de manipulation de bits), si bien que les arêtes restantes pointent vers votre propre code.

## Exemples de prompts pour agents

- « Quels sous-programmes appellent `compute_flux`, et quels modules utilisent-ils ? » (`find_symbol`, puis `dependency_search` en incoming)
- « Retrace comment les conditions aux limites sont appliquées dans la boucle du solveur. » (`get_task_context`)
- « Trouve toutes les unités de programme qui utilisent le module `constants`. » (`text_pattern_search` sur `use constants`, puis `find_symbol`)

## Limites connues

- Fortran n'a ni décorateurs ni gestion des exceptions, ces types de relations sont donc marqués comme non applicables.
- Les procédures liées à un type partagent les mêmes nœuds que les fonctions et sous-programmes ordinaires. Utilisez le préréglage `functions` dans `structural_search` ; le préréglage `methods` ne sélectionne aucun nœud Fortran.
- Les appels aux procédures intrinsèques filtrées n'apparaissent pas comme arêtes du graphe. Utilisez `text_pattern_search` quand il vous faut chaque `WRITE` ou `OPEN`.

## Étapes suivantes

Connectez un dépôt avec le [démarrage rapide](/fr/docs/quickstart), puis consultez la matrice de prise en charge complète sur la [page de compatibilité](/fr/docs/compatibility). Si votre Fortran côtoie du code de liaison C, lisez aussi le [guide C](/fr/languages/c).

## Détails du moteur

- La prise en charge de Fortran couvre les sources en format fixe et libre : `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` et `.f08`.
- Les fonctions et sous-programmes sont des symboles appelables, la correspondance des symboles ignore la casse, et `use` et `include` deviennent des relations d'import.
- Environ 165 procédures intrinsèques (E/S, mathématiques, tableaux, chaînes, conversion de type et bits) sont filtrées des relations. Les relations de décorateur et d'exception sont marquées comme non applicables.

## Points d'entrée MCP utiles

- `find_symbol`: Commencez par le nom du sous-programme, de la fonction ou du module ; la correspondance ignore la casse, comme Fortran.
- `dependency_search`: Utilisez la traversée incoming sur une routine de solveur ou de module partagé pour voir chaque appelant avant un changement numérique.
- `get_task_context`: Utilisez-le pour des prompts comme « retrace comment les conditions aux limites sont appliquées dans la boucle du solveur ».
