interpreter กับ compiler ต่างกันยังไง?
สรุป ง่ายๆสั้นๆ
"Compiler แปลก่อน ค่อยรัน , Interpreter แปลไป รันไป"
Compiler จะประมวลผลออกมาเป็นเลขฐานที่สามารถติดต่อได้กับเครื่องโดยตรง ส่วนมากจะเป็น high-level programming languag
ข้อดีคือ มีความรวดเร็ว
ข้อเสียคือ การนำไปใช้กับระบบปฏิบัติการและสถาปัตยกรรมต่างกัน ต้องทำการคอมไพล์ใหม่ให้เหมาะสมกับระบบปฏิบัติการและสถาปัตยกรรมนั้น ๆ หรือไม่ก็ต้องใช้ Virtual Machine
ข้อดีคือ ไม่ต้องนำไปประมวลผลใหม่เมื่อใช้กับปฏิบัติการต่างระบบ
ข้อเสีย โปรแกรมจะทำงานช้ากว่าระบบที่ประมวลผลด้วย Compiler เพราะอินเทอร์พรีเตอร์จะต้องแปลแต่ละคำสั่งในระหว่างการทำงานว่าจะต้องทำอะไรต่อไป
ตัวอย่างภาษาที่มีการใช้อินเทอร์พรีเตอร์ ได้แก่ Perl, Python, MATLAB, Ruby
----------------------------------------------------------------------------------------
1. Lexical Analysis หรือส่วนวิเคราะห์คำ
ส่วนการวิเคราะห์คำประกอบด้วยขั้นตอนเดียว คือ ขั้นตอนการวิเคราะห์คำ หรือ ตัววิเคราะห์คำ (Lexical analyzer) หรือตัวกราดตรวจ (scanner) ในขั้นตอนนี้จะมี input และ output ดังนี้
Input : แต่ละ character ใน program
Output : Token
โดยแต่ละ token จะประกอบด้วย 2 ส่วนคือ
1. Class
2. Value
Token: | Class | Value |
Class แบ่งออกได้ดังนี้
- คำหลัก (keyword)
-ตัวแปร (variable) หรือตัวระบุ (identifier)
- เครื่องหมายดำเนินการ (operator)
- ค่าคงที่ (constant)
- ป้ายชื่อ (label), หมายเลขบรรทัด (line number) หรือชื่อพารากราฟ (paragraph name)
- อักขระคั่น (delimiter) หรืออักขระแบ่ง (separator)
ขั้นตอนการวิเคราะห์ศัพท์ จะกราดตรวจ character ทีละ character จนกว่าจะเจอ delimeter หรือ operator ก็จะได้ token
2. Syntax Box ส่วนวิเคราะห์เชิงวากยสัมพันธ์ แบ่งได้เป็น 3 ขั้นตอนคือ
2.1. Syntax analysis หรือ ตัววิคราะห์เชิงวากยะสัมพันธ์ หรือตัววิเคราะห์กระจาย (parser) ในขั้นตอนนี้มี input และ output ดังนี้
Input : token
Output : hierarchical structure เช่น tree
2.2. Sementic analysis เป็นขั้นตอนการตรวจสอบหาความผิดพลาดทางความหมาย (sementic error) และรวบรวม type เพื่อใช้ในขั้นตอนของ intermediate code generation การตรวจสอบหาความผิดพลาดทางความหมายมี 2 ลักษณะคือ
2.2.1 การตรวจแบบสถิต (Static checking) เป็นการตรวจสอบระหว่างการ compile
2.2.2 การตรวจแบบพลวัต (Dynamic checking) เป็นการตรวจสอบในช่วง run time
2.3. Intermediate code generation การทำให้เกิดรหัสกลาง มี input และ output ดังนี้
Input : tree
Output : atom หรือ three-address code
ซึ่งแต่ละ atom จะคือกระบวนคำสั่งย่อยๆ (procedure)
ส่วน three address code รูปแบบคำสั่งแต่ละคำสั่งจะมีตัวถูกดำเนินการ 3 ตัว
3. Code generation Box ส่วนที่ทำให้เกิดรหัส แบ่งได้เป็น 2 ขั้นตอนคือ
- การทำให้รหัสเหมาะที่สุด (Code optimization)
- การทำให้เกิดรหัส (Code generation)
Interpreter กับ Compiler ต่างกันยังไง? >>>>> Download Now
ReplyDelete>>>>> Download Full
Interpreter กับ Compiler ต่างกันยังไง? >>>>> Download LINK
>>>>> Download Now
Interpreter กับ Compiler ต่างกันยังไง? >>>>> Download Full
>>>>> Download LINK io