# Fortran-tuki Maguyva-palvelussa: koodigraafit tieteellisille koodikannoille

Canonical source: https://maguyva.ai/fi/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 tukee Fortrania AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata aliohjelmia, moduuleja ja johdettuja tyyppejä ennen numeerisen koodin muuttamista.

## Tukikatsaus

- Taso: AST- ja symbolituki
- Ohjelmointi
- Päätteet: .f, .f03, .f08, .f90, .f95, .for, +1 lisää
- Oikea AST-jäsennys syntaksitietoiseen hakuun ja rakenteelliseen kontekstiin.
- Nimetyt symbolit syöttävät semanttista hakua ja ristiviittauksia. Graafinavigointi on käytettävissä, kun suhteiden poiminta on käytössä.
- Tämä kieli tuo symboleja ja suhteita graafia hyödyntävään hakuun; tuetut reunatyypit vaihtelevat kielen omien rakenteiden mukaan.
- Sekä AST-jäsennys että symbolien poiminta ovat käytettävissä.

## Parhaiten sopii

- Tutkimus-, insinööri- ja HPC-tiimit, jotka ylläpitävät nykyistä tiimiä vanhempia Fortran-ratkaisijoita, simulaatioita tai numeerisia kirjastoja.
- Repositoriot, joissa kiinteän muodon `.f`-tiedostot ovat vapaan muodon `.f90`- ja uudempien moduulien vieressä, usein C- tai Python-kääreiden kanssa.
- Agenttiavusteiset katselmoinnit, joissa ensin selvitetään, mitkä aliohjelmat koskevat jaettua moduulia, ennen kuin numeriikkaa muutetaan.

## Agenttien työnkulut

- Jäljittää, mitkä aliohjelmat ja funktiot kutsuvat ratkaisijarutiinia, ennen kuin sen argumentteja tai yksiköitä muutetaan.
- Listata moduulit, jotka ohjelmayksikkö tuo `use`-lauseella, ja siirtyä niiden määrittelyihin.
- Löytää, missä johdettu tyyppi on esitelty ja mitkä proseduurit käsittelevät sitä.

## Miksi Fortran tarvitsee rakennetta eikä merkkijonohakua

Fortran-koodikannat ovat usein vanhoja ja suuria, ja niitä ovat kirjoittaneet alan asiantuntijat eivätkä ohjelmistotiimit. Rutiinit nimeltä `SOLVE`, `Solve` ja `solve` ovat sama rutiini. Moduuleja jakavat sadat tiedostot, ja sisäänrakennettujen proseduurien kirjasto on niin laaja, että naiivi kutsulista koostuu enimmäkseen kutsuista `SQRT`, `SUM` ja `WRITE`.

Pelkkää grepiä käyttävä agentti hukkuu tähän kohinaan. Maguyva antaa sille ensin rakenteen: mitä ohjelmayksiköitä on olemassa, mitä moduuleja ne käyttävät ja mitkä omat rutiinit kutsuvat toisiaan.

## Mitä Maguyva poimii Fortranista

Maguyva kattaa kiinteän ja vapaan muodon lähdekoodin (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Funktiot ja aliohjelmat poimitaan kutsuttavina symboleina, ja johdetut tyypit voi valita tyyppimäärittelyinä rakenteellisessa haussa.

Symbolien vertailu ei erottele isoja ja pieniä kirjaimia, kuten ei Fortrankaan. Tuontisuhteet muodostetaan lauseista `use` ja `include`; avainsana poistetaan, jolloin graafiin tallentuu moduulin nimi. Kutsut, luvut, sijoitukset, tyyppiviittaukset ja laajennettujen johdettujen tyyppien periytyminen kuuluvat myös graafiin.

Suhdesuodatin poistaa noin 165 sisäänrakennettua proseduuria (I/O-lauseet sekä matematiikan, taulukoiden, merkkijonojen, tyyppimuunnosten ja bittioperaatioiden rutiinit), joten jäljelle jäävät kaaret osoittavat omaan koodiisi.

## Esimerkkikehotteita agenteille

- "Mitkä aliohjelmat kutsuvat rutiinia `compute_flux`, ja mitä moduuleja ne käyttävät?" (`find_symbol`, sitten `dependency_search` incoming)
- "Jäljitä, miten reunaehtoja sovelletaan ratkaisijan silmukassa." (`get_task_context`)
- "Etsi kaikki ohjelmayksiköt, jotka käyttävät moduulia `constants`." (`text_pattern_search` hakuna `use constants`, sitten `find_symbol`)

## Tunnetut rajoitukset

- Fortranissa ei ole dekoraattoreita eikä poikkeusten käsittelyä, joten nämä suhdetyypit on merkitty soveltumattomiksi.
- Tyyppiin sidotut proseduurit käyttävät samoja solmuja kuin tavalliset funktiot ja aliohjelmat. Käytä työkalussa `structural_search` esiasetusta `functions`; esiasetus `methods` ei valitse Fortran-solmuja.
- Suodatettujen sisäänrakennettujen proseduurien kutsut eivät näy graafin kaarina. Käytä työkalua `text_pattern_search`, kun tarvitset jokaisen `WRITE`- tai `OPEN`-kutsun.

## Seuraavat vaiheet

Yhdistä repositorio [pikaoppaan](/fi/docs/quickstart) avulla ja tarkista sitten koko tukimatriisi [yhteensopivuussivulta](/fi/docs/compatibility). Jos Fortran-koodisi on C-liimakoodin vieressä, lue myös [C-opas](/fi/languages/c).

## Moottorin yksityiskohdat

- Fortran-tuki kattaa kiinteän ja vapaan muodon lähdekoodin: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` ja `.f08`.
- Funktiot ja aliohjelmat ovat kutsuttavia symboleja, symbolien vertailu ei erottele isoja ja pieniä kirjaimia, ja `use`- ja `include`-lauseista tulee tuontisuhteita.
- Noin 165 sisäänrakennettua proseduuria (I/O-, matematiikka-, taulukko-, merkkijono-, tyyppimuunnos- ja bittirutiinit) suodatetaan pois suhteista. Dekoraattori- ja poikkeussuhteet on merkitty soveltumattomiksi.

## Hyödylliset MCP-liittymäkohdat

- `find_symbol`: Aloita aliohjelman, funktion tai moduulin nimestä; vertailu ei erottele kirjainkokoa, kuten ei Fortrankaan.
- `dependency_search`: Käytä incoming-läpikäyntiä ratkaisijan tai jaetun moduulin rutiiniin nähdäksesi kaikki kutsujat ennen numeerista muutosta.
- `get_task_context`: Käytä sitä kehotteisiin kuten "jäljitä, miten reunaehtoja sovelletaan ratkaisijan silmukassa".
