# Fortran στο Maguyva: γράφοι κώδικα για επιστημονικές βάσεις κώδικα

Canonical source: https://maguyva.ai/el/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 υποστηρίζει Fortran με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να παρακολουθούν υπορουτίνες, αρθρώματα και παραγόμενους τύπους πριν αλλάξουν αριθμητικό κώδικα.

## Στιγμιότυπο υποστήριξης

- Επίπεδο: Υποστήριξη AST και συμβόλων
- Προγραμματισμός
- Επεκτάσεις: .f, .f03, .f08, .f90, .f95, .for, +1 ακόμα
- Πραγματική ανάλυση AST για αναζήτηση με επίγνωση σύνταξης και δομικό πλαίσιο.
- Τα επώνυμα σύμβολα τροφοδοτούν τη σημασιολογική αναζήτηση και τη διασταύρωση αναφορών. Η πλοήγηση στον γράφο είναι διαθέσιμη όταν είναι ενεργοποιημένη η εξαγωγή σχέσεων.
- Αυτή η γλώσσα συνεισφέρει σύμβολα και σχέσεις στην αναζήτηση με επίγνωση του γράφου· οι υποστηριζόμενοι τύποι ακμών διαφέρουν ανάλογα με τις εγγενείς δομές της.
- Διατίθενται τόσο ανάλυση AST όσο και εξαγωγή συμβόλων.

## Ιδανική χρήση

- Ερευνητικές, μηχανικές και HPC ομάδες που συντηρούν επιλυτές, προσομοιώσεις ή αριθμητικές βιβλιοθήκες σε Fortran παλαιότερες από την τωρινή ομάδα.
- Αποθετήρια όπου αρχεία `.f` σταθερής μορφής συνυπάρχουν με αρθρώματα `.f90` και νεότερα ελεύθερης μορφής, συχνά δίπλα σε περιτυλίγματα σε C ή Python.
- Αναθεωρήσεις με υποστήριξη πρακτόρων, όπου το πρώτο βήμα είναι να βρεθεί ποιες υπορουτίνες αγγίζουν ένα κοινό άρθρωμα πριν αλλάξει η αριθμητική λογική.

## Ροές εργασίας πρακτόρων

- Εντοπισμός των υπορουτινών και συναρτήσεων που καλούν μια ρουτίνα του επιλυτή πριν αλλάξουν τα ορίσματα ή οι μονάδες της.
- Καταγραφή των αρθρωμάτων που εισάγει μια μονάδα προγράμματος με `use` και μετάβαση στους ορισμούς τους.
- Εύρεση του σημείου όπου δηλώνεται ένας παραγόμενος τύπος και των διαδικασιών που τον χρησιμοποιούν.

## Γιατί η Fortran χρειάζεται δομή και όχι αντιστοίχιση συμβολοσειρών

Οι βάσεις κώδικα σε Fortran είναι συνήθως παλιές, μεγάλες και γραμμένες από ειδικούς του πεδίου και όχι από ομάδες λογισμικού. Οι ρουτίνες με ονόματα `SOLVE`, `Solve` και `solve` είναι η ίδια ρουτίνα. Τα αρθρώματα μοιράζονται σε εκατοντάδες αρχεία και η βιβλιοθήκη των ενσωματωμένων διαδικασιών είναι τόσο μεγάλη, ώστε μια αφελής λίστα κλήσεων αποτελείται κυρίως από `SQRT`, `SUM` και `WRITE`.

Ένας πράκτορας που κάνει μόνο grep πνίγεται σε αυτόν τον θόρυβο. Το Maguyva του δίνει πρώτα τη δομή: ποιες μονάδες προγράμματος υπάρχουν, ποια αρθρώματα χρησιμοποιούν και ποιες ρουτίνες του κώδικά σας καλούν η μία την άλλη.

## Τι εξάγει το Maguyva από τη Fortran

Το Maguyva καλύπτει πηγαίο κώδικα σταθερής και ελεύθερης μορφής (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Οι συναρτήσεις και οι υπορουτίνες εξάγονται ως καλέσιμα σύμβολα και οι παραγόμενοι τύποι μπορούν να επιλεγούν ως ορισμοί τύπων στη δομική αναζήτηση.

Η αντιστοίχιση συμβόλων δεν κάνει διάκριση πεζών-κεφαλαίων, όπως και η ίδια η Fortran. Οι σχέσεις εισαγωγής προκύπτουν από τα `use` και `include`· η λέξη-κλειδί αφαιρείται ώστε ο γράφος να αποθηκεύει το όνομα του αρθρώματος. Κλήσεις, αναγνώσεις, αναθέσεις, αναφορές τύπων και κληρονομικότητα από επεκταμένους παραγόμενους τύπους περιλαμβάνονται επίσης στον γράφο.

Το φίλτρο σχέσεων αφαιρεί περίπου 165 ενσωματωμένες διαδικασίες (εντολές I/O και ρουτίνες μαθηματικών, πινάκων, συμβολοσειρών, μετατροπής τύπων και χειρισμού δυαδικών ψηφίων), ώστε οι ακμές που απομένουν να δείχνουν στον δικό σας κώδικα.

## Παραδείγματα προτροπών για πράκτορες

- «Ποιες υπορουτίνες καλούν την `compute_flux` και ποια αρθρώματα χρησιμοποιούν;» (`find_symbol`, μετά `dependency_search` incoming)
- «Εντόπισε πώς εφαρμόζονται οι οριακές συνθήκες στον βρόχο του επιλυτή.» (`get_task_context`)
- «Βρες κάθε μονάδα προγράμματος που χρησιμοποιεί το άρθρωμα `constants`.» (`text_pattern_search` για `use constants`, μετά `find_symbol`)

## Γνωστοί περιορισμοί

- Η Fortran δεν έχει διακοσμητές ούτε χειρισμό εξαιρέσεων, γι' αυτό αυτοί οι τύποι σχέσεων σημειώνονται ως μη εφαρμόσιμοι.
- Οι διαδικασίες που δένονται σε τύπους μοιράζονται τους ίδιους κόμβους με τις κοινές συναρτήσεις και υπορουτίνες. Χρησιμοποιήστε την προεπιλογή `functions` στο `structural_search`· η προεπιλογή `methods` δεν επιλέγει κόμβους Fortran.
- Οι κλήσεις σε φιλτραρισμένες ενσωματωμένες διαδικασίες δεν εμφανίζονται ως ακμές του γράφου. Χρησιμοποιήστε το `text_pattern_search` όταν χρειάζεστε κάθε `WRITE` ή `OPEN`.

## Επόμενα βήματα

Συνδέστε ένα αποθετήριο με τον [γρήγορο οδηγό εκκίνησης](/el/docs/quickstart) και έπειτα δείτε τον πλήρη πίνακα υποστήριξης στη [σελίδα συμβατότητας](/el/docs/compatibility). Αν η Fortran σας συνυπάρχει με κώδικα σύνδεσης σε C, διαβάστε και τον [οδηγό για τη C](/el/languages/c).

## Λεπτομέρειες μηχανής

- Η υποστήριξη Fortran καλύπτει πηγαίο κώδικα σταθερής και ελεύθερης μορφής: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` και `.f08`.
- Οι συναρτήσεις και οι υπορουτίνες είναι καλέσιμα σύμβολα, η αντιστοίχιση συμβόλων δεν κάνει διάκριση πεζών-κεφαλαίων, και τα `use` και `include` γίνονται σχέσεις εισαγωγής.
- Περίπου 165 ενσωματωμένες διαδικασίες (ρουτίνες I/O, μαθηματικών, πινάκων, συμβολοσειρών, μετατροπής τύπων και δυαδικών ψηφίων) φιλτράρονται από τις σχέσεις. Οι σχέσεις διακοσμητών και εξαιρέσεων σημειώνονται ως μη εφαρμόσιμες.

## Χρήσιμα σημεία εισόδου MCP

- `find_symbol`: Ξεκινήστε από το όνομα της υπορουτίνας, της συνάρτησης ή του αρθρώματος· η αντιστοίχιση αγνοεί τα πεζά-κεφαλαία, όπως και η Fortran.
- `dependency_search`: Χρησιμοποιήστε διάσχιση incoming σε μια ρουτίνα του επιλυτή ή κοινού αρθρώματος για να δείτε όλους τους καλούντες πριν από μια αριθμητική αλλαγή.
- `get_task_context`: Χρησιμοποιήστε το για προτροπές όπως «εντόπισε πώς εφαρμόζονται οι οριακές συνθήκες στον βρόχο του επιλυτή».
