Skip to content

Interpreter กับ Compiler ต่างกันยังไง

Published: at 11:45 AM (1 min read)

หลายคนน่าจะรู้จักภาษามากมาย เช่น Javascript, PHP, Python, Go, C และ Rust แล้วภาษาพวกนี้รันใน computer เรากันได้ยังไง ข้อแตกต่างคืออะไร ? วันนี้ผมจะมาอธิบายเรื่องนี้แบบง่ายๆให้ฟัง

Table of contents

Open Table of contents

Intro

เวลาที่เราเขียน Code(ชุดคำสั่ง) ในภาษาโปรแกรมมิ่งจริงๆแล้วคอมพิวเตอร์ไม่สามารถเข้าใจได้ แต่จะมีตัวแปลภาษาอยู่ 2 ชนิด นั่นคือ Interpreter และ Compiler

Interpreter

Interpreter คือตัวแปลภาษาชนิดหนึ่ง ซึ่งใช้วิธีการแปลแบบ บรรทัดต่อบรรทัด จะใช้กับภาษาที่เป็น High Level หรือภาษาที่มนุษย์สามารถอ่านค่อนข้างรู้เรื่องมากที่สุด ส่วนประกอบอีกส่วนที่จำเป็นคือต้องลงตัวแปล เช่น Nodejs ต้องไปโหลด node มาลงในคอมพิวเตอร์ก่อน หรือ python ก็เป็นแบบเดียวกัน

Compiler

Compiler คือตัวแปลของภาษานั้นให้เป็น binary code หรือ code ที่สามารถนำไปใช้กับคอมพิวเตอร์ได้โดยไม่ต้องลงตัวแปลเพิ่มเติม โดยที่ภาษาใน Low level จะใช้เป็นส่วนมาก

ตัวอย่าง Binary File

Binary File ถ้าอ่านไฟล์มาจะเจอแต่ตัวเลขที่คอยแสดงลำดับว่าคอมพิวเตอร์จะต้องทำอะไรบ้าง ในกรณีนี้เรียกว่า sequence of the byte

หลักการของ Binary file จากตัวอย่างที่เห็นความจริงแล้วเป็น byte อยู่ซึ่งวิธีการอ่านแบบ Binary ที่แท้จริงควรเป็น 01

คอมพิวเตอร์จะอ่านแบบนี้ครับ

29 11 40 c9 a6 24

29 -> 00101001

11 -> 00010001

40 -> 01000000

c9 -> 11001001

a6 -> 10100110

24 -> 00100100

Pros and Cons

Interpreter

Pros

Cons

Compiler

Pros

Cons

Conclusion from writer

ผู้เขียนเองก็เคยเขียนทั้งภาษาที่เป็นแบบ Interpreter และ Compiler มาแล้ว ปัญหาที่เจอกับ Interpreter คือกรณีที่ต้องทำ Performance ให้ดีสุดจะมีความยากกว่าปกติ ปัจจุบันผู้เขียนได้เริ่มมาเขียน Rust ซึ่งในเนื้อหาตอนต่อๆไปอาจจะเกี่ยวกับภาษา Rust ด้วยครับ


Previous Post
เมื่อผมเขียน API ด้วย Rust 🦀
Next Post
🚀 Remeda - A Modern TypeScript-First Utility Library