ข้ามไปเนื้อหาหลัก

เรขาคณิตแฟรตของซอฟต์แวร์: สิ่งที่ PyTorch และ Ray เปิดเผย

แพลตฟอร์ม Platino Labs Data Room เปิดเผยกราฟการนำเข้า Python จาก 10 โครงงั้น พร้อมวิเคราะห์วัฏจักรการพึ่งพาอาศัยกันและโครงสร้างโค้ดแบบเจาะลึก

เรียบเรียงโดย AI
Inewgen
30 Oct 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
เรขาคณิตแฟรตของซอฟต์แวร์: สิ่งที่ PyTorch และ Ray เปิดเผย

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • Platino Labs เผยแพร่กราฟการนำเข้า Python จาก 10 ที่เก็บโค้ดใน Platino Labs Data Room
  • PyTorch มีโมดูลในคอมโพเนนต์ใหญ่สุดราว 65.7% ขณะที่ Ray อยู่ที่ 23.4% จาก 4,108 โมดูล
  • การสกัดโครงสร้างใช้ Abstract Syntax Tree (AST) และอัลกอริทึม Tarjan ร่วมกับ Kahn's topological ordering
  • ขนาดไฟล์กราฟรวมทั้ง 10 รายการอยู่ที่ 46,259,186 ไบต์ ซึ่งช่วยประหยัดพื้นที่กว่าไฟล์ต้นฉบับราว 79.93%

การค้นหาโค้ดด้วยฟังก์ชันหรือระบบ Retrieval-Augmented Generation (RAG) สามารถดึงข้อมูลข้อความที่เกี่ยวข้องขึ้นมาได้ แต่เครื่องมือเหล่านี้ไม่สามารถอธิบายได้ว่าโมดูลต่างๆ มีความเกี่ยวข้องกันอย่างไรในเชิงโครงสร้าง โค้ดเบสไม่ได้เป็นเพียงแค่กลุ่มของข้อความตัวอักษรเท่านั้น แต่ยังมีลักษณะเป็นโครงสร้างที่มีทิศทางชัดเจน เช่น ไฟล์ที่มีการเรียกใช้งานโมดูล, โมดูลที่เชื่อมโยงไปยังโมดูลอื่น และเส้นทางบางเส้นที่วนกลับมายังจุดเริ่มต้น

ทางทีมงานได้ทำการสกัดกราฟการนำเข้าภาษา Python แบบสาธารณะจาก 10 ที่เก็บโค้ด และเผยแพร่ข้อมูลในรูปแบบ JSON ที่ได้รับการตรวจสอบแล้วบน Platino Labs Data Room กราฟเหล่านี้ช่วยเปิดเผยข้อเท็จจริงเชิงโครงสร้างที่การค้นหาข้อความทั่วไปไม่สามารถตอบได้ นั่นคือรูปร่างและขนาดขององค์ประกอบที่เชื่อมโยงกันอย่างแน่นหนา (Strongly Connected Components หรือ SCC) ภายในกราฟการนำเข้าที่ถูกประกาศไว้

ระบบค้นหาข้อมูลและกราฟการพึ่งพาอาศัยกันทำหน้าที่แก้ปัญหาคนละส่วนกัน ระบบค้นหาถูกออกแบบมาเพื่อค้นหาข้อความที่ตรงกับคำค้น แต่กราฟการนำเข้าจะบันทึกความสัมพันธ์ที่มีทิศทางซึ่งถูกระบุไว้โดยซอร์สโค้ด ความคล้ายคลึงกันของข้อความจึงไม่ได้บ่งบอกว่าโมดูล A ทำการเรียกโมดูล B หรือมีเส้นทางที่วนกลับมายัง A รวมถึงมีโมดูลจำนวนเท่าใดที่เข้าไปมีส่วนร่วมในวงรอบนั้นๆ

python code data structure computer screen

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

65.7%โมดูลในคอมโพเนนต์ใหญ่สุดของ PyTorch
23.4%โมดูลในคอมโพเนนต์ใหญ่สุดของ Ray
46.2 MBขนาดไฟล์กราฟ SCC รวม 10 ที่เก็บโค้ด

กระบวนการทำงานเริ่มต้นด้วยการแยกวิเคราะห์ซอร์สโค้ดภาษา Python ผ่าน Abstract Syntax Tree (AST) เพื่อสกัดความสัมพันธ์ของการนำเข้าโมดูลออกมาเป็นกราฟ แทนที่จะพึ่งพาโมเดลภาษาในการคาดเดาความสัมพันธ์ สำหรับการแก้ไขซอร์สโค้ดและขอบเขตที่กำหนด การสกัดนี้เป็นการแปลงไวยากรณ์ให้กลายเป็นเส้นเชื่อมโยงอย่างแม่นยำ การเผยแพร่ครั้งนี้ได้เพิ่มชั้นข้อมูล Strongly Connected Components (SCC) ซึ่งหมายถึงกลุ่มของโหนดที่แต่ละโหนดสามารถเข้าถึงโหนดอื่นได้ผ่านเส้นที่มีทิศทาง

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

การวิเคราะห์โครงสร้างซอฟต์แวร์ด้วยกราฟการนำเข้าและอัลกอริทึม SCC ถือเป็นแนวทางสำคัญในการมองภาพรวมความซับซ้อนเชิงสถาปัตยกรรม (Architectural Complexity) ของโครงการโอเพนซอร์สขนาดใหญ่ การที่ซอร์สโค้ดมีวงรอบการพึ่งพา (Dependency Cycles) จำนวนมากไม่ได้แปลว่าเป็นโค้ดที่ไม่มีคุณภาพเสมอไป แต่เป็นข้อมูลเชิงtopologyที่ช่วยให้นักพัฒนาเข้าใจพฤติกรรมการโหลดโมดูลและการจัดการโครงสร้างเมื่อระบบเริ่มขยายตัวใหญ่ขึ้น

ในแง่ของขนาดข้อมูล กราฟ PyTorch มีขนาด 7,468,906 ไบต์ (หรือประมาณ 7.47 เมกะไบต์) และกราฟ SCC ทั้ง 10 รายการรวมกันมีขนาด 46,259,186 ไบต์ ข้อมูลเหล่านี้สะท้อนถึงขนาดของอาร์ติแฟกต์จริง โดยรายงานระบุว่าประหยัดพื้นที่จัดเก็บได้ถึง 79.93% เมื่อเทียบกับไฟล์ซอร์สโค้ดที่ถูกแมปไว้ทั้งหมด อย่างไรก็ตาม ตัวเลขเหล่านี้ไม่ได้หมายความว่ากราฟโครงสร้างจะมาแทนที่ดัชนี RAG ได้โดยตรง เนื่องจากเป็นอาร์ติแฟกต์คนละประเภทและมีวิธีการเปรียบเทียบที่แตกต่างกัน

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้