Siirry sisältöön
cd /languages
  • Tieteellinen perintö
  • Ohjelmointi
  • AST- ja symbolituki

Fortran-tuki Maguyva-palvelussa: koodigraafit tieteellisille koodikannoille

Maguyva tukee Fortrania AST-jäsennyksellä, symboleilla ja graafilla, jotta tekoälyagentit voivat seurata aliohjelmia, moduuleja ja johdettuja tyyppejä ennen numeerisen koodin muuttamista.

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 avulla ja tarkista sitten koko tukimatriisi yhteensopivuussivulta. Jos Fortran-koodisi on C-liimakoodin vieressä, lue myös C-opas.

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ä.

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".