ตัวแปลภาษา Compiler และ Interpreter


ในการเขียนโปรแกรมให้คอมพิวเตอร์ทำงาน ตัวโปรแกรมที่เราเขียนโดยภาษาต่างๆไม่ว่าจะเป็น c, java, javascript, php ภาษาเหล่านี้เรียกว่าได้ว่า ภาษาโปรแกรม Programming Language แต่ละภาษาก็มีจุดเด่นของตัวเอง หรือบางภาษาก็เป็นต้นแบบให้สร้างภาษาใหม่ขึ้นมาเพื่อให้เขียนง่ายกว่าเดิม
เนื้อหา
ตัวแปลภาษา
c, c#, java, javascript, php, python คือภาษาที่มนุษย์สามารถอ่านออก เข้าใจได้ในทางคอมพิวเตอร์จะเรีนกว่าภาษาระดับสูง ซึ่งคอมพิวเตอร์จะอ่านเข้าใจได้คือภาษาระดับต่ำหรือภาษาเครื่องเท่านั้น
int x = 1;int y = 2;int ans = x + y;System.out.println(ans);
จากตัวอย่าง โค้ด ดังกล่าวเราอาจเรายังสามารถอ่านแล้วเข้าใจได้ แต่จริงๆคอมพิวเตอร์ยังไม่สามารถ run โค้ดหรือคำสั่งชุดนี้ได้ ก็คือเราเป็นมนุษย์เราอยากเขียนโปรแกรมด้วยภาษาที่เราสามารถเข้าใจได้ง่าย แต่คอมพิวเตอร์ยังอ่านไม่ออกเพราะคอมพิวเตอร์ไม่เข้าใจภาษามนุษย์ไง
สิ่งที่จะมาทำหน้าที่แปลภาษาโปรแกรมที่เราเขียนแล้วทำให้คอมพิวเตอร์เข้าใจก็ก็คือ Compiler จะทำการอ่านโค้ดที่เป็นภาษาโปรแกรมระดับสูงที่เราเขียน แล้วแปลงมันเป็น Machine Code หรือก็คือ Binary
พอมี Compiler เราก็สามารถเขียนโปรแกรมด้วยภาษาโปรแกรมระดับสูงที่สร้างขึ้นมาได้ เขียนเป็นคำที่มนุษย์อ่านออกเขียนได้ เขียนเสร็จก็โยนไปให้ Compiler แปล พอแปลเสร็จก็ได้ไฟล์ binary ซึ่งเป็นไฟล์ที่คอมพิวเตอร์สามารถอ่านและประมวลผลได้ เราก็สั่งให้คอมพิวเตอร์ run โปรแกรมที่เราเขียนได้ละ
ไฟล์งานที่เราเขียนโค้ดกันจะเรียกว่า Source Code
- Source Code คือสิ่งที่เราเขียนขึ้นมา อาจจะเขียนด้วยภาษา java, c, c++ เป็นต้น
- Compiler ใช้แปล Source Code ให้เป็นไฟล์ที่คอมพิวเตอร์สามารถอ่านได้ในรูปแบบ Binary
- Execution File ก็คือไฟล์ Binary ที่ได้จากการ Compile นั้นแหละ
Compiler กับ Interpreter
คอมไพเลอร์ กับ อินเทอพรีเตอร์ สองตัวนี้ทำหน้าที่เหมือนกันคือแปลภาษาหรือแปล Source Code ที่เราเขียนให้คอมพิวเตอร์สามารถอ่านได้ แต่ลักษณะการแปลงไม่เหมือนกัน
Compiler
ในการใช้งาน Compiler จะต้องเขียนโปรแกรมให้เสร็จก่อนแล้วจึงสั่งให้ Compiler ทำการ Compile ตัว Source Code ให้ออกมาเป็น Execution File
ภาษาที่ใช้ตัว Compiler เป็นตัวแปลภาษา เช่น C, C++, C#, Java, Go, Swift
ข้อดีคือ Compiler ในแต่ละภาษาช่วยบอก error ให้เราได้ก่อนจะนำไปให้คอมพิวเตอร์ run จริงๆ ก็คือถ้าเราเขียนอะไรผิด Compiler จะแจ้งเราและ Compile ไม่ผ่านนั่นแหละ
ในบางภาษาสามารถเรียกใช้ funcition ได้ทั้งๆที่บรรทัดก่อนหน้ายังไม่ได้ทำการประกาศ function นั้นๆเอาไว้
Interpreter
Interpreter ทำการอ่าน Source Code แล้วแปลคำสั่งเหมือนคอมไพเลอร์ จะอ่านและแปลทีละบรรทัดแล้วแปลงเป็น Machine Code แล้วก็ทำการ Execute ทันที พอทำแบบนี้เสร็จบรรทัดนึงก็ขยับไปทำอีกบรรทัดนึงไปเรื่อยๆ
ก็คือถ้าภาษาไหนที่ใช้ Interpreter เป็นตัวแปลภาษาก็จะไม่ได้ตัว Execution File เพราะมันทำการ run ทันทีที่แปลเสร็จ
ภาษาที่ใช้ตัว Interpreter เป็นตัวแปลภาษาส่วนใหญ่จะเป็นภาษาใหม่ๆ เช่น Python, JavaScript, PHP
ในภาษาที่ใช้ Interpreter จะเรียกใช้ funcition ก่อนแล้วค่อยไปกำหนดทีบรรทัดล่างๆไม่ได้
สรุป
- Compiler จะทำการอ่านแล้ว Compile พร้อมกันทั้งไฟล์ เมื่อ Compile เสร็จจะได้ไฟล์ Execution File เพื่อให้ Computer ใช้ run
- Interpreter จะอ่านไฟล์ทีละบรรทัดแล้ว excute ทีละบรรทัดไปเรื่อยๆจนจบโปรแกรม หมายความว่าจะไม่ได้ Execution File