Compiler ของภาษาซี

คอมไพล์เลอร์ และการคอมไพล์โปรแกรม (compiler and compile)

     

          คอมไพล์เลอร์ ก็คือตัวแปลภาษา โดยตัวแปรภาษาก็จะมีอยู่หลายตัวด้วยกัน คอมไพล์เลอร์ที่แนะนำก็คือ Dev-C++ ซึ่งเป็นคอมไพล์เลอร์ที่ทำงานบนระบบปฏิบัติการ Windows ได้อย่างไม่มีปัญหา ไม่ว่าจะเป็น Windows XP หรือ Windows 7

         หน้าที่ของ Compiler  จะนำเอา source code  มาทำการคอมไพล์  เพื่อแปลจากภาษาซีที่มนุษย์เข้าใจไปเป็นภาษาเครื่องที่คอมพิวเตอร์เข้าใจได้  ในขั้นตอนนี้คอมไพเลอร์จะทำการตรวจสอบ  source code  ว่าเกิดข้อผิดพลาดหรือไม่

            หากเกิดข้อผิดพลาด จะแจ้งให้ผู้เขียนโปรแกรมทราบ  ผู้เขียนโปรแกรมจะต้องกลับไปแก้ไขโปรแกรม  และทำการคอมไพล์โปรแกรมใหม่อีกครั้ง

        หากไม่พบข้อผิดพลาด  คอมไพเลอร์จะแปลไฟล์  source code จากภาษาซีไปเป็นภาษาเครื่อง (ไฟล์นามสกุล .obj) เช่นถ้าไฟล์ source code ชื่อ welcome.cpp ก็จะถูกแปลไปเป็นไฟล์  welcome.obj  ซึ่งเก็บภาษาเครื่องไว้เป็นต้น

compile เป็นตัวแปลภาษารูปแบบหนึ่ง  มีหน้าที่หลักคือการแปลภาษาโปรแกรมที่มนุษย์เขียน

ขึ้นไปเป็นภาษาเครื่อง โดยคอมไพเลอร์ของภาษาซี คือ  C Compiler  ซึ่งหลักการที่คอมไพเลอร์ใช้  เรียกว่า  คอมไพล์ (compile)  โดยจะทำการอ่านโปรแกรมภาษาซีทั้งหมดตั้งแต่ต้นจนจบ  แล้วทำการแปลผลทีเดียว

          นอกจากคอมไพเลอร์แล้ว  ยังมีตัวแปลภาษาอีกรูปแบบหนึ่งที่เรียกว่า  อินเตอร์พรีเตอร์  การอ่านและแปลโปรแกรมทีละบรรทัด  เมื่อแปลผลบรรทัดหนึ่งเสร็จก็จะทำงานตามคำสั่งในบรรทัดนั้น  แล้วจึงทำการแปลผลตามคำสั่งในบรรทัดถัดไป  หลักการที่อินเตอร์พรีเตอร์ใช้เรียกว่า อินเตอร์เพรต (interpret)



ข้อดีและข้อเสียของตัวแปลภาษาทั้งสองแบบมีดังนี้

 

ข้อดี

ข้อเสีย

คอมไพเลอร์

·       ทำงานได้เร็ว เนื่องจากทำการแปลผลทีเดียว แล้วจึงทำงานตามคำสั่งของโปรแกรมในภายหลัง

·       เมื่อทำการแปลผลแล้ว  ในครั้งต่อไปไม่จำเป็นต้องทำการแปลผลใหม่อีก เนื่องจากภาษาเครื่องที่แปลได้จะถูกเก็บไว้ที่หน่วยความจำ สามารถเรียกใช้งานได้ทันที

·       เมื่อเกิดข้อผิดพลาดขึ้นกับโปรแกรมจะตรวจสอบหาข้อผิดพลาดได้ยาก เพราะทำการแปลผลทีเดียวทั้งโปรแกรม

อินเตอร์พรีเตอร์

·       หาข้อผิดพลาดของโปรแกรมได้ง่าย เนื่องจากทำการแปลผลทีละบรรทัด

·       เนื่องจากทำงานทีละบรรทัดดังนั้นจึงสั่งให้โปรแกรมทำงานตามคำสั่งเฉพาะจุดที่ต้องการได้

·       ไม่เสียเวลารอการแปลโปรแกรมเป็นเวลานาน

·       ช้า เนื่องจากที่ทำงานทีละบรรทัด


 

 

Comments