ข้ามไปที่เนื้อหา
cd /languages
  • มรดกทางวิทยาศาสตร์
  • การเขียนโปรแกรม
  • รองรับ AST และสัญลักษณ์

Fortran บน Maguyva: กราฟโค้ดสำหรับโค้ดเบสงานวิทยาศาสตร์

Maguyva รองรับ Fortran ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ติดตามซับรูทีน โมดูล และไทป์ที่ผู้ใช้นิยามได้ก่อนแก้ไขโค้ดเชิงตัวเลข

ทำไม 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 ทิศทางขาเข้า)
  • “ติดตามว่าเงื่อนไขขอบเขตถูกใช้ในลูปของโปรแกรมแก้สมการอย่างไร” (get_task_context)
  • “หาทุกหน่วยโปรแกรมที่ใช้โมดูล constants” (text_pattern_search สำหรับ use constants แล้วตามด้วย find_symbol)

ข้อจำกัดที่ทราบ

  • Fortran ไม่มีเดคอเรเตอร์และไม่มีการจัดการเอกซ์เซปชัน ความสัมพันธ์เหล่านี้จึงถูกทำเครื่องหมายว่าไม่เกี่ยวข้อง
  • โพรซีเยอร์ที่ผูกกับไทป์ใช้โหนดเดียวกับฟังก์ชันและซับรูทีนทั่วไป ให้ใช้พรีเซ็ต functions ใน structural_search เพราะพรีเซ็ต methods ไม่เลือกโหนด Fortran ใดเลย
  • การเรียกอินทรินซิกที่ถูกกรองจะไม่ปรากฏเป็นเส้นเชื่อมในกราฟ ใช้ text_pattern_search เมื่อต้องการทุก WRITE หรือ OPEN

ขั้นตอนถัดไป

เชื่อมต่อรีโพซิทอรีด้วยคู่มือเริ่มต้นใช้งาน แล้วดูตารางการรองรับทั้งหมดได้ที่หน้าความเข้ากันได้ หาก Fortran ของคุณอยู่ร่วมกับโค้ดเชื่อมต่อภาษา C ให้อ่านคู่มือภาษา C ด้วย

เหมาะที่สุดสำหรับ

  • > ทีมวิจัย วิศวกรรม และ HPC ที่ดูแลโปรแกรมแก้สมการ การจำลอง หรือไลบรารีเชิงตัวเลขภาษา Fortran ที่เก่ากว่าทีมปัจจุบัน
  • > รีโพซิทอรีที่ไฟล์ `.f` แบบฟิกซ์ฟอร์มอยู่ร่วมกับไฟล์ `.f90` แบบฟรีฟอร์มและโมดูลรุ่นหลัง ซึ่งมักมีแรปเปอร์ภาษา C หรือ Python อยู่ข้างกัน
  • > การรีวิวที่มีเอเจนต์ช่วย ซึ่งขั้นแรกคือการหาว่าซับรูทีนใดแตะโมดูลที่ใช้ร่วมกันก่อนเปลี่ยนตรรกะเชิงตัวเลข

เวิร์กโฟลว์ของเอเจนต์

  • > หาซับรูทีนและฟังก์ชันที่เรียกรูทีนของโปรแกรมแก้สมการ ก่อนเปลี่ยนอาร์กิวเมนต์หรือหน่วยของมัน
  • > แสดงรายการโมดูลที่หน่วยโปรแกรมนำเข้าด้วย `use` แล้วข้ามไปยังนิยามของโมดูลเหล่านั้น
  • > หาว่าไทป์ที่ผู้ใช้นิยามถูกประกาศไว้ที่ใดและโพรซีเยอร์ใดใช้งานมัน

รายละเอียดเอนจิน

  • > การรองรับ Fortran ครอบคลุมซอร์สแบบฟิกซ์ฟอร์ม และฟรีฟอร์ม ได้แก่ `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03` และ `.f08`
  • > ฟังก์ชันและซับรูทีนเป็นสัญลักษณ์ที่เรียกใช้ได้ การจับคู่สัญลักษณ์ไม่สนตัวพิมพ์เล็กใหญ่ และ `use` กับ `include` กลายเป็นความสัมพันธ์การนำเข้า
  • > โพรซีเยอร์อินทรินซิกราว 165 รายการ (รูทีน I/O คณิตศาสตร์ อาร์เรย์ สตริง การแปลงชนิดข้อมูล และบิต) ถูกกรองออกจากความสัมพันธ์ ความสัมพันธ์เดคอเรเตอร์ และเอกซ์เซปชันถูกทำเครื่องหมายว่าไม่เกี่ยวข้อง

จุดเริ่มต้น MCP ที่มีประโยชน์

  • find_symbol

    เริ่มจากชื่อซับรูทีน ฟังก์ชัน หรือโมดูล การจับคู่ไม่สนตัวพิมพ์เล็กใหญ่เหมือน Fortran

  • dependency_search

    ใช้การท่องกราฟทิศทางขาเข้าบนรูทีนของโปรแกรมแก้สมการหรือโมดูลที่ใช้ร่วมกัน เพื่อดูผู้เรียกทั้งหมดก่อนเปลี่ยนตรรกะเชิงตัวเลข

  • get_task_context

    ใช้กับพรอมต์อย่าง “ติดตามว่าเงื่อนไขขอบเขตถูกใช้ในลูปของโปรแกรมแก้สมการอย่างไร”

คู่มือที่เกี่ยวข้อง

ส่วนอื่นของรีโพที่เกี่ยวข้อง

ดูคู่มือทั้งหมด
แกนกลางของระบบ การเขียนโปรแกรม

C บน Maguyva: กราฟการเรียกสำหรับโค้ดระบบและโค้ดฝังตัว

ในภาษา C กราฟการเรียกคือสถาปัตยกรรม เอเจนต์ควรอ่านมันก่อนแก้ไข

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.c, .h

เปิดคู่มือ
ต่อยอดของเก่า การเขียนโปรแกรม

การรองรับ COBOL ใน Maguyva: วิเคราะห์ dependency เพื่อการปรับปรุงระบบเก่าให้ทันสมัย

นี่คือจุดที่การรองรับภาษาอย่างกว้างขวางเลิกเป็นแค่ตัวเลขสถิติ และกลายเป็นเครื่องมือปรับปรุงระบบเก่าให้ทันสมัยอย่างแท้จริง

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.cbl, .cob, .cpy

เปิดคู่มือ