İçeriğe atla
cd /languages
  • Bilimsel miras
  • Programlama
  • AST ve sembol desteği

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

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.

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ıç ile bir repo bağlayın, ardından tam destek matrisi için uyumluluk sayfasına bakın. Fortran kodunuz C bağlama koduyla birlikte yaşıyorsa C rehberini de okuyun.

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.

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.