Execution Process
- เป็นขั้นตอนการทำงานของโปรแกรมขณะรันโค้ด ซึ่งรวมถึงการตีความและการประมวลผลคำสั่ง
- Execution Process ครอบคลุมตั้งแต่การแปลโค้ด (Interpretation) หรือการคอมไพล์ (Compilation) ไปจนถึงการรันโค้ดจริง
ขั้นตอนการทำงาน | Compile Time (เวลาแปล) 🕒 | Runtime (เวลารัน) 🚀 | Just-In-Time (JIT) Compilation (การแปลแบบทันที) ⚡ | Ahead-Of-Time (AOT) Compilation (การแปลล่วงหน้า) ⏳ |
---|---|---|---|---|
คำอธิบาย | แปลโค้ดจากภาษาต้นฉบับเป็นโค้ดระดับต่ำก่อนรัน เพื่อตรวจสอบข้อผิดพลาด | ช่วงที่โปรแกรมถูกใช้งานจริง จัดการกับฟังก์ชันและหน่วยความจำ | แปลโค้ดเฉพาะส่วนที่จำเป็นขณะรัน ทำให้ประสิทธิภาพดีขึ้น | แปลโค้ดทั้งหมดล่วงหน้าก่อนรันจริง ทำให้โค้ดพร้อมรันได้ทันที |
ความเร็ว | ทำให้โหลดเร็วขึ้นเมื่อเข้าสู่การรัน แต่มีเวลารอคอมไพล์ | ขึ้นกับวิธีการจัดการโค้ดและการเรียกใช้ทรัพยากรในขณะรัน | เร็วกว่า Runtime เพราะแปลแบบเรียลไทม์เฉพาะส่วน | เร็วมาก เพราะไม่ต้องแปลซ้ำอีกในเวลารัน |
การจัดการข้อผิดพลาด | ตรวจสอบข้อผิดพลาดก่อนรันได้ง่าย ทำให้โค้ดมีความเสถียรมากขึ้น | ตรวจสอบข้อผิดพลาดในขณะรัน ซึ่งอาจเกิดข้อผิดพลาดที่ไม่เจอในช่วง Compile Time | ตรวจสอบบางส่วนขณะรัน เพิ่มความเร็ว แต่ยังมีข้อผิดพลาดได้ในบางส่วนของโค้ด | ตรวจสอบข้อผิดพลาดล่วงหน้า ทำให้มีความเสถียรสูงในเวลารันจริง |
ความยืดหยุ่นในการเปลี่ยนแปลงโค้ด | ทำให้การแก้ไขหรืออัปเดตโค้ดใช้เวลามากขึ้น เพราะต้องคอมไพล์ใหม่ | ง่ายต่อการปรับแก้ไขและทดสอบ เพราะโค้ดทำงานได้ทันที | ยืดหยุ่น สามารถแปลโค้ดตามการใช้งานจริง ทำให้เหมาะสำหรับโค้ดที่ปรับเปลี่ยนบ่อย | ยืดหยุ่นน้อยกว่า เพราะแปลทั้งหมดล่วงหน้า แต่ได้ประสิทธิภาพและความเร็วในระยะยาว |
Syntax (ไวยากรณ์)
- เป็นกฎเกณฑ์ที่กำหนดรูปแบบการเขียนโค้ด เช่น โครงสร้างของคำสั่ง, ตัวแปร, ฟังก์ชัน, เครื่องหมายต่าง ๆ และคำสำคัญในภาษา เช่น
if
,else
,{}
,;
- Syntax กำหนดให้โปรแกรมมีโครงสร้างที่แน่นอน ช่วยให้โปรแกรมอ่านเข้าใจง่ายและลดข้อผิดพลาด
Semantics (ความหมาย)
- กำหนดความหมายที่โค้ดจะต้องทำงานตามที่ระบุ เช่น คำสั่ง
a = b + c;
หมายถึงการบวกค่าของb
และc
แล้วเก็บในa
- Semantics บอกว่าคำสั่งแต่ละอย่างควรทำงานอย่างไร ซึ่งสามารถแบ่งได้เป็น Static Semantics (เช่น ประเภทของตัวแปรที่ต้องตรงกัน) และ Dynamic Semantics (เช่น การจัดการค่าข้อมูลขณะโปรแกรมรัน)
Pragmatics (แนวทางการใช้งาน)
- เป็นแนวทางการใช้ภาษาอย่างเหมาะสม เพื่อให้โปรแกรมมีประสิทธิภาพและอ่านง่าย เช่น การจัดรูปแบบโค้ด, การตั้งชื่อตัวแปรให้สื่อความหมาย
- Pragmatics ยังรวมไปถึง Best Practices ที่นักพัฒนาแนะนำเพื่อหลีกเลี่ยงข้อผิดพลาด
Data Types (ประเภทข้อมูล)
- ภาษาโปรแกรมต้องกำหนดประเภทของข้อมูล เช่น จำนวนเต็ม (
int
), ข้อความ (string
), ตัวอักษร (char
) หรือแบบไม่มีข้อมูล (null
,undefined
) - Data Types มีความสำคัญเพราะส่งผลต่อการจัดการและการเก็บข้อมูลในหน่วยความจำ
Control Structures (โครงสร้างควบคุม)
- ประกอบด้วยคำสั่งในการควบคุมการไหลของโปรแกรม เช่น คำสั่งเงื่อนไข (
if
,switch
), คำสั่งวนซ้ำ (for
,while
), และคำสั่งหยุด (break
,continue
) - เป็นเครื่องมือช่วยให้โปรแกรมทำงานอย่างซับซ้อนได้โดยการควบคุมลำดับการทำงาน
Memory Management (การจัดการหน่วยความจำ)
- การจัดการพื้นที่หน่วยความจำ เช่น การจัดสรรหน่วยความจำ, การจัดเก็บตัวแปร, และการเก็บขยะ (
Garbage Collection
) - การจัดการหน่วยความจำมีความสำคัญเพื่อให้โปรแกรมทำงานได้มีประสิทธิภาพและไม่ใช้หน่วยความจำเกินความจำเป็น
Libraries and APIs (ไลบรารีและ API)
- ไลบรารีและ API เป็นส่วนขยายที่ทำให้ภาษาโปรแกรมสามารถเข้าถึงฟังก์ชันและความสามารถเพิ่มเติมได้ เช่น ฟังก์ชันคณิตศาสตร์, การจัดการไฟล์, และการสื่อสารกับเครือข่าย
- API ช่วยให้โปรแกรมสามารถทำงานร่วมกับบริการภายนอกหรือไลบรารีของระบบได้
Error Handling (การจัดการข้อผิดพลาด)
- ข้อกำหนดและกลไกในการจัดการข้อผิดพลาด เช่น การตรวจจับข้อผิดพลาด (
try-catch
) และการจัดการข้อผิดพลาดในลักษณะต่าง ๆ - Error Handling ช่วยให้โปรแกรมสามารถทำงานต่อไปได้แม้เกิดข้อผิดพลาด โดยการควบคุมและจัดการสถานการณ์
Concurrency (การทำงานแบบขนาน)
- การจัดการให้โปรแกรมสามารถทำงานหลายอย่างในเวลาเดียวกัน เช่น Threads, Asynchronous Programming, Parallelism
- Concurrency มีความสำคัญในระบบที่ต้องการประสิทธิภาพสูง เช่น การประมวลผลข้อมูลขนาดใหญ่ หรือแอปพลิเคชันเรียลไทม์