# Maguyva'da Fortran: bilimsel kod tabanları için kod grafları

Canonical source: https://maguyva.ai/tr/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, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları sayısal kodu değiştirmeden önce alt programları, modülleri ve türetilmiş türleri izleyebilir.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .f, .f03, .f08, .f90, .f95, .for, +1 daha
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## En uygun kullanım

- Bugünkü ekipten eski Fortran çözücüleri, simülasyonları veya sayısal kütüphaneleri sürdüren araştırma, mühendislik ve HPC ekipleri.
- Sabit biçimli `.f` dosyalarının `.f90` modülleri ve daha yeni serbest biçimli kodla, çoğu zaman C veya Python sarmalayıcılarının yanında birlikte yaşadığı repolar.
- İlk adımın, sayısal mantık değişmeden önce hangi alt programların ortak bir modüle dokunduğunu bulmak olduğu, ajan destekli incelemeler.

## Ajan iş akışları

- Bir çözücü rutininin argümanları veya birimleri değişmeden önce onu çağıran alt programları ve fonksiyonları bulmak.
- Bir program biriminin `use` ile içe aktardığı modülleri listelemek ve tanımlarına atlamak.
- Türetilmiş bir türün nerede bildirildiğini ve onu hangi yordamların kullandığını bulmak.

## Fortran neden dize eşleştirmesine değil yapıya ihtiyaç duyar

Fortran kod tabanları genellikle eski ve büyüktür; yazılım ekiplerince değil alan uzmanlarınca yazılmıştır. `SOLVE`, `Solve` ve `solve` adlı rutinler aynı rutindir. Modüller yüzlerce dosyaya yayılır ve yerleşik yordam kütüphanesi o kadar büyüktür ki saf bir çağrı listesi çoğunlukla `SQRT`, `SUM` ve `WRITE` çağrılarından oluşur.

Yalnızca grep kullanan bir ajan bu gürültüde boğulur. Maguyva ona önce yapıyı verir: hangi program birimlerinin var olduğunu, hangi modülleri kullandıklarını ve kendi kodunuzdaki hangi rutinlerin birbirini çağırdığını.

## Maguyva Fortran'dan neleri çıkarır

Maguyva sabit ve serbest biçimli kaynak kodu kapsar (`.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`). Fonksiyonlar ve alt programlar çağrılabilir semboller olarak çıkarılır; türetilmiş türler yapısal aramada tür tanımı olarak seçilebilir.

Sembol eşleştirmesi, Fortran'ın kendisi gibi büyük-küçük harfe duyarsızdır. İçe aktarma ilişkileri `use` ve `include` ifadelerinden gelir; anahtar sözcük kaldırılır, böylece graf modül adını saklar. Çağrılar, okumalar, atamalar, tür referansları ve genişletilmiş türetilmiş türlerden gelen kalıtım da grafa eklenir.

İlişki filtresi yaklaşık 165 yerleşik yordamı (G/Ç ifadeleri ile matematik, dizi, dize, tür dönüştürme ve bit işleme rutinleri) dışarıda bırakır; böylece kalan kenarlar kendi kodunuzu gösterir.

## Örnek ajan istemleri

- "`compute_flux` alt programını kim çağırıyor ve hangi modülleri kullanıyorlar?" (`find_symbol`, ardından gelen yönde `dependency_search`)
- "Çözücü döngüsünde sınır koşullarının nasıl uygulandığını izle." (`get_task_context`)
- "`constants` modülünü kullanan her program birimini bul." (`use constants` için `text_pattern_search`, ardından `find_symbol`)

## Bilinen sınırlar

- Fortran'da dekoratör ya da istisna işleme yoktur; bu ilişki türleri uygulanamaz olarak işaretlenir.
- Türe bağlı yordamlar, sıradan fonksiyon ve alt programlarla aynı düğümleri paylaşır. `structural_search` aracında `functions` ön ayarını kullanın; `methods` ön ayarı hiçbir Fortran düğümü seçmez.
- Filtrelenen yerleşik yordamlara yapılan çağrılar graf kenarı olarak görünmez. Her `WRITE` veya `OPEN` çağrısına ihtiyacınız olduğunda `text_pattern_search` kullanın.

## Sonraki adımlar

[Hızlı başlangıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından tam destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Fortran kodunuz C bağlama koduyla birlikte yaşıyorsa [C rehberini](/tr/languages/c) de okuyun.

## Motor ayrıntıları

- Fortran desteği sabit ve serbest biçimli kaynak kodu kapsar: `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` ve `.f08`.
- Fonksiyonlar ve alt programlar çağrılabilir sembollerdir, sembol eşleştirmesi büyük-küçük harfe duyarsızdır ve `use` ile `include` içe aktarma ilişkisi olur.
- Yaklaşık 165 yerleşik yordam (G/Ç, matematik, dizi, dize, tür dönüştürme ve bit rutinleri) ilişkilerden filtrelenir. Dekoratör ve istisna ilişkileri uygulanamaz olarak işaretlenir.

## Yararlı MCP giriş noktaları

- `find_symbol`: Alt program, fonksiyon veya modül adıyla başlayın; eşleştirme, Fortran gibi büyük-küçük harfi yok sayar.
- `dependency_search`: Sayısal bir değişiklikten önce tüm çağıranları görmek için bir çözücü rutininde veya ortak modülde gelen yönde dolaşım kullanın.
- `get_task_context`: "Çözücü döngüsünde sınır koşullarının nasıl uygulandığını izle" gibi istemler için kullanın.
