เพื่อสร้างสื่อการเรียนรู้อัจฉริยะ (Interactive Learning Lab) ที่เปรียบเทียบกระบวนการทำงานและการแปลงภาษาโปรแกรม (Translation Process) ระหว่าง Python และ ภาษา C เพื่อให้นักเรียนเข้าใจลึกซึ้งเกี่ยวกับการทำคอมไพล์ (Compile), การเป็นล่าม (Interpreter), รหัสไบต์โค้ด (Bytecode), สถาปัตยกรรม CPU และความปลอดภัยของข้อมูลในหน่วยความจำคอมพิวเตอร์
แอปพลิเคชันถูกออกแบบใหม่ให้มีความสมบูรณ์แบ่งออกเป็น 4 แท็บทดลองหลัก:
-
Translation Flow (เส้นทางการแปลงโค้ด):
- แสดงขั้นตอนตั้งแต่ Source Code จนส่งไปประมวลผลปลายทางบน CPU
- Python: Source (.py) ➔ Parser AST ➔ Compiler ➔ pycache (.pyc) ➔ PVM Interpreter ➔ CPU
- C: Source (.c) ➔ Preprocessor ➔ Compiler & Assembler ➔ Linker ➔ CPU (Executable Direct)
-
Code & VM Lab (เปรียบเทียบคอมพิวเตอร์เสมือน):
- แสดงผลลัพธ์เปรียบเทียบโค้ดสั้นๆ (พิมพ์ข้อความ, การบวกเลขตัวแปร)
- แสดงสเตปการทำงานและโครงสร้างการจัดการระดับต่ำแบบจริงจัง:
- Python: แสดง Python Bytecode จริง ร่วมกับจำลองการทำงานบน Stack ของ PVM
- C: แสดง x86-64 Assembly จริง ร่วมกับการเก็บข้อมูลลง CPU Registers และ Memory Stack Frame
-
Portability Lab (ทดลองความยืดหยุ่นต่างแพลตฟอร์ม):
- ให้ผู้เรียนทดลองคอมไพล์โค้ดในรูปแบบต่างๆ แล้วทดลองสั่งรัน (Deploy) ไปยังเป้าหมายต่างสถาปัตยกรรม (Windows PC Intel x86_64, macOS Macbook ARM64, Raspberry Pi ARM32)
- ชี้ให้เห็นว่า Python Bytecode (.pyc) ทำงานได้บนทุกแพลตฟอร์มที่มี Interpreter ประจำเครื่อง ในขณะที่ C Executable จะเกิดข้อผิดพลาดไม่เข้ากันหากคอมไพล์ผิดสถาปัตยกรรม CPU
-
Type Safety & Memory Lab (การประกาศชนิดข้อมูล):
- จำลองการกำหนดค่าตัวแปรประเภทจำนวนเต็ม แล้วพยายามเปลี่ยนให้เป็นตัวอักษร (String)
- แสดงโครงสร้างการจัดเก็บข้อมูลใน Memory (PyObject Pointer vs Stack Allocation)
- แสดงเหตุผลที่ภาษา C ตรวจพบ Compile Error ทันที (Static typing) ขณะที่ Python อนุญาตให้สลับได้อย่างราบรื่น (Dynamic typing)
- Frontend Framework: React 18 + Vite (TypeScript)
- Animation & Interactivity: Framer Motion (จัดการ layout animations และสลับสถานะ)
- Styling: Tailwind CSS (ชุดสี Zinc Dark Theme ผสาน Glow effect สีสะท้อนแสง)
- Iconography: Lucide React
- ใช้ Vite 5.4.1 และ Tailwind CSS v3 เพื่อความเสถียรสูงสุดของ Node.js (v22) และการรัน Production Build ในเครื่อง PC
- แก้ไขข้อผิดพลาดประเภทข้อมูล TypeScript (Type inference) สำหรับโครงสร้างหน่วยความจำเรียบร้อย
จัดทำโดย: Gemini CLI Agent | วันอังคารที่ 16 มิถุนายน 2569