ขั้นตอนการประมวลผลคำสั่งของคอมพิวเตอร์#


Programming Language (ภาษาโปรแกรม)#

  • Programming Language คือ ภาษาเฉพาะที่มนุษย์สร้างขึ้นเพื่อสื่อสารกับคอมพิวเตอร์

  • โปรแกรมเมอร์ใช้ภาษาเหล่านี้ในการเขียนโปรแกรมสั่งงานคอมพิวเตอร์

  • ภาษาโปรแกรมแบ่งได้เป็นหลายประเภท เช่น

    • Low-level Language (ภาษาเครื่อง หรือ Assembly)

    • High-level Language (ภาษาโปรแกรมระดับสูง เช่น Python, Java, C++)

WHAT IS PROGRAMMING?

Writing very specific instructions to a very dumb, yet obedient machine.

_images/which-programming-language-should-i-learn-first-infographic.png

Fig. 1 Programming Language#


Compiler (ตัวแปลภาษา)#

  • Compiler คือ โปรแกรมที่ทำหน้าที่แปลโปรแกรมภาษาโปรแกรม (Source Code) ให้เป็นภาษาเครื่อง (Machine Code) ที่คอมพิวเตอร์สามารถเข้าใจและดำเนินการได้

  • การทำงานของ Compiler มีหลายขั้นตอน เช่น

    • Lexical Analysis: ตรวจสอบคำหรือสัญลักษณ์ในโค้ด

    • Syntax Analysis: ตรวจสอบโครงสร้างประโยคตามไวยากรณ์ของภาษา

    • Code Generation: สร้างโค้ดภาษาเครื่อง

_images/compiler.png

Fig. 2 Compiler#


Interpreter (ตัวแปลภาษา)#

  • Interpreter คือ โปรแกรมที่ทำหน้าที่แปลและรันโปรแกรมภาษาโปรแกรมทีละบรรทัดทันทีที่อ่านโค้ด

  • การทำงานของ Interpreter แตกต่างจาก Compiler ตรงที่มันไม่แปลโค้ดทั้งหมดก่อนแล้วจึงรัน แต่แปลและรันโค้ดทีละบรรทัด

  • ข้อดีของ Interpreter คือสามารถตรวจสอบและแก้ไขข้อผิดพลาดได้ทันที

  • ตัวอย่างขั้นตอนการทำงานของ Interpreter:

    • Lexical Analysis: ตรวจสอบคำหรือสัญลักษณ์ในแต่ละบรรทัดโค้ด

    • Syntax Analysis: ตรวจสอบโครงสร้างไวยากรณ์เฉพาะบรรทัดนั้น

    • Immediate Execution: รันคำสั่งทีละบรรทัด

_images/interpreter.png

Fig. 3 Compiler#


Compiler vs Interpreter#

Compiler:#

  • แปลโค้ดทั้งหมดก่อนดำเนินการ (Compile ครั้งเดียว)

  • ผลลัพธ์เป็นไฟล์ภาษาเครื่อง (machine code file)

  • ใช้เวลานานในขั้นตอนการ Compile แต่การทำงานเร็ว

Interpreter:#

  • แปลโค้ดทีละบรรทัด และดำเนินการในทันที

  • ไม่สร้างไฟล์ภาษาเครื่อง

  • การแปลและการทำงานช้ากว่า Compiler แต่ปรับแก้โค้ดได้ง่ายกว่า


ข้อแตกต่างระหว่าง Compiler และ Interpreter#

Feature

Compiler

Interpreter

การทำงาน

แปลโค้ดทั้งหมด

แปลทีละบรรทัด

ผลลัพธ์

ไฟล์ภาษาเครื่อง

ไม่มีไฟล์ภาษาเครื่อง

ความเร็วการประมวลผล

เร็วหลังจากการ Compile เสร็จ

ช้ากว่าเนื่องจากแปลทีละบรรทัด

การแก้ไขข้อผิดพลาด

แก้ไขยาก ต้อง Compile ใหม่

แก้ไขง่าย รันได้ทันที


ตัวอย่างภาษา Compiler และ Interpreter#

  • Compiler: C, C++, Java

  • Interpreter: Python, Ruby, JavaScript