เราคุยกันถึงการที่เราจะเขียนชุดคำสั่งเพื่อสั่งงานคอมพิวเตอร์ ซึ่งคอมพิวเตอร์รับคำสั่งได้แค่ในรูปแบบของ Machine Code ที่เป็น Binary Number หรือรหัสแบบเลขฐานสอง หน้าตาประมาณนี้ Show 0011 1101 0000 1111 0101 1100 1100 0100 1111 0011 1011 1001 0110 1010 0010 0011 แน่นอนว่าการสั่งงานนั้นยากมาก เลยมีการสร้างสิ่งที่เรียกว่า Programming Languageภาษาโปรแกรม ซึ่งก็มีหลายภาษา แต่ละภาษามีจุดเด่นของตัวเอง หรือบางภาษาอาจจะเป็นต้นแบบให้สร้างภาษาใหม่ๆ ขึ้นมาให้เขียนง่ายขึ้นเรื่อยๆ หน้าตาก็จะเป็นแบบนี้ x = 1 y = 2 ans = x + y print(ans) แน่นอนว่าใครที่ยังเขียนโปรแกรมไม่เป็นอาจจะอ่านยังไม่ค่อยรู้เรื่องนัก แต่ก็แน่นอีกว่าการเขียนแบบนี้ รู้เรื่อง กว่าเขียนเป็นรหัส Machine Code แน่นอน ปัญหาก็คือ เราๆ ที่เป็นมนุษย์อยากเขียนโปรแกรมด้วยภาษาง่ายๆ อยู่แล้ว แต่คอมพิวเตอร์ดันอ่านไม่ออก พอคอมพิวเตอร์อ่านไม่ออก ก็สั่งงานคอมพิวเตอร์ไม่ได้ ภาษาใหม่ ถึงจะเขียนง่ายก็เลยกลายเป็นไร้ค่า! ดังนั้น แนวคิดเพื่อแก้ปัญหานี้ก็คือ สร้างโปแกรมตัวหนึ่งขึ้นมา หน้าที่ของโปรแกรมนี้คือเราจะให้มันมาอ่านโค้ดโปรแกรมในภาษาโปรแกรมระดับสูงของเราตัวนี้ แล้วแปลงมันเป็น Machine Code ให้ เจ้าโปรแกรมที่ทำหน้าที่แปลงภาษาระดับสูงให้กลายเป็น Machine Code ในรูปแบบ Binary เนี่ย เขาเรียกมันว่า... Compilerตัวแปลภาษา ทีนี้ ... เราก็จะเขียนโปรแกรมด้วยภาษาโปรแกรมระดับสูงที่สร้างขึ้นมา เขียนง่าย คนอ่านรู้เรื่องได้อย่างสบายใจ (เราจะเรียกไฟล์โค้ดโปรแกรมที่เขียนขึ้นมานี่ว่า Source Code) แล้วพอเราเขียนเสร็จแล้ว ต้องการโปรแกรมที่ส่งไปให้คอมพิวเตอร์รันได้จริงๆ เราก็จะเรียกโปรแกรม Compiler มาทำการ "Compile" หรือ "แปลงภาษา" ซะ เราก็จะได้ไฟล์ Execution File ออกมา แล้วก็รันโปรแกรมด้วยไฟล์นี้นั่นเอง สรุปกันอีกที!
Compiler vs Interpreterคอมไพเลอร์เอาไว้แปลงภาษา (ภาษาคอมพิวเตอร์เป็นภาษาคอมพิวเตอร์อีกภาษา) แต่ก็มีโปรแกรมอีกอย่างที่ทำหน้าที่แปลงภาษาเหมือนกัน เราเรียกว่า Interpreter (คำแปลเหมือนกับคอมไพเลอร์ แปลว่า "ล่าม") ซึ่งหน้าที่ของคอมไพเลอร์กับอินเทอพรีเตอร์นั้นเหมือนกันเลย แต่ลักษณะการแปลงไม่เหมือนกัน คือ Compilerการใช้คอมไพเลอร์ จะต้องเขียนโปรแกรมเป็นไฟล์ Source Code ให้เสร็จซะก่อน แล้วใช้คอมไพเลอร์ทำการคอมไพล์ไฟล์ ให้ออกมาเป็น Execution File แบบที่บอกไปข้างต้น ภาษาโปรแกรมในกลุ่มนี้ เช่น C, C++, C#, Java, Go, Swift ข้อดี: คอมไพเลอร์บางภาษาสามารถช่วยบอกข้อผิดพลาดเวลาเราเขียนโปรแกรมพร้อมวิธีแก้เบื้องต้นให้เราได้ ทำให้ภาษาสายคอมไพลเลอร์มักจะเจอปัญหาเวลาเอาไปรันน้อยกว่า ข้อเสีย: ภาษาที่ใช้คอมไพเลอร์นั้นส่วนใหญ่จะมีข้อกำหนดด้านภาษามาก ทำให้เขียน/เรียนรู้ยากกว่าภาษาในกลุ่มอินเทอร์พรีเตอร์ Interpreterสำหรับ Interpreter จะอ่านไฟล์แล้วแปลคำสั่งเหมือนคอมไพเลอร์ แต่จะไม่แปลพร้อมกันทั้งไฟล์ อินเทอร์พรีเตอร์จะอ่าน Source Code ทีละบรรทัด (หรือทีละคำสั่ง) แล้วแปลงเป็น Machine Code ตอนนั้นเลย แล้วก็ทำการ Execute คำสั่งนั้นตอนนั้นเลย แล้วจึงขยับไปอ่าน Source Code บรรทัดต่อไป แล้ว Execute เลย ... ทำแบบนี้ไปเรื่อยๆ นั่นคือถ้าเราใช้อินเทอร์พรีเตอร์เราจะไม่ได้ผลลัพธ์เป็น Execution File ออกมา (เพราะมันทำการรันเลยในตอนนั้นไงล่ะ) ข้อดีของคอมไพเลอร์ คือโปรแกรมออปเจ็คโค้ดที่ได้จะรวบรวมคำสั่งที่สำคัญในการรันโปรแกรมไม่ต้องเสียเวลาในการแปลใหม่ทุกครั้ง ทำให้การทำงานของโปรแกรมเป็นไปอย่างรวดเร็ว จึงเป็นรูปแบบการแปลที่ได้รับความนิยมอย่างมากข้อใดเป็นตัวแปลภาษาทีละคำสั่งอินเตอร์พรีเตอร์ (Interpreter) เป็นตัวแปลภาษาที่ทำการแปลทีละคำสั่ง เมื่อพบข้อผิดพลาด (error) จะแจ้งให้ทราบและหยุดการทำงานในบรรทัดนั้น ข้อดีทำให้ง่ายต่อการตรวจสอบแก้ไขคำสั่ง ข้อเสีย ทุกครั้งที่สั่งให้ทำงานจะมีการแปลคำสั่งเดิมอีกทุกครั้ง ทำให้ใช้เวลาค่อนข้างมาก ได้แก่ ภาษาเบสิก
โปรแกรมที่ได้จากการแปลภาษาแล้วจะถูกเรียกว่าอะไรคอมไพเลอร์ (อังกฤษ: compiler) หรือ โปรแกรมแปลโปรแกรม, ตัวแปลโปรแกรม เป็น โปรแกรมคอมพิวเตอร์ที่ทำหน้าที่แปลงชุดคำสั่งภาษาคอมพิวเตอร์หนึ่ง ไปเป็นชุดคำสั่งที่มีความหมายเดียวกัน ในภาษาคอมพิวเตอร์อื่น
ตัวแปลภาษามีความสําคัญอย่างไรตัวแปลภาษาคอมพิวเตอร์ (Translator) เปรียบเสมือนตัวกลางในการติดต่อสื่อสารระหว่างมนุษย์กับคอมพิวเตอร์ ตัวแปลภาษาคอมพิวเตอร์มีหน้าที่แปลความหมายชุดคำสั่งที่มนุษย์เขียนขึ้นให้อยู่ในรูปแบบของภาษาที่คอมพิวเตอร์จะเข้าใจได้
Compiler หรือ Interpreter คืออะไร1. คอมไพเลอร์ (compiler) จะทำการแปลโปรแกรมที่เขียนเป็นภาษาระดับสูงทั้งโปรแกรมให้เป็นภาษาเครื่องก่อน แล้วจึงให้คอมพิวเตอร์ทำงานตามภาษาเครื่องนั้น 2. อินเทอร์พรีเตอร์ (interpreter) จะทำการแปลทีละคำสั่ง แล้วให้คอมพิวเตอร์ทำตามคำสั่งนั้น เมื่อทำเสร็จแล้วจึงมาทำการแปลคำสั่งลำดับต่อไป
|