Skip to main content

interpreter กับ compiler ต่างกันยังไง?


สรุป ง่ายๆสั้นๆ

"Compiler แปลก่อน ค่อยรัน , Interpreter แปลไป รันไป"


Compiler จะประมวลผลออกมาเป็นเลขฐานที่สามารถติดต่อได้กับเครื่องโดยตรง ส่วนมากจะเป็น high-level programming languag
ข้อดีคือ มีความรวดเร็ว
ข้อเสียคือ  การนำไปใช้กับระบบปฏิบัติการและสถาปัตยกรรมต่างกัน ต้องทำการคอมไพล์ใหม่ให้เหมาะสมกับระบบปฏิบัติการและสถาปัตยกรรมนั้น ๆ หรือไม่ก็ต้องใช้ Virtual Machine




Interpreter เป็นโปรแกรมแปลคำสั่ง จะทำงานตามชุดคำสั่งที่เขียนไว้ทันที
ข้อดีคือ ไม่ต้องนำไปประมวลผลใหม่เมื่อใช้กับปฏิบัติการต่างระบบ
ข้อเสีย โปรแกรมจะทำงานช้ากว่าระบบที่ประมวลผลด้วย 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)

Ref. Narisa.com , cs.science.cmu.ac.th , wikipedia.org , warleo.com

Comments

Popular posts from this blog

Source file not compile Dev C++ win 8, win 8.1 , win10

เห็นใครหลายๆลง  Dev-C++ บน Windows 8,8.1,10 แล้วมันเกิดปัญหาขึ้นคือ พอเขียนโค๊ดโปรแรมเสร็จ แล้วกด Compile ปรากฏว่า โปรแกรมขึ้นแจ้งเตือน "Source file not compile" จึงหันไปลง X-Code กันเพื่อแก้ปัญหา  ผมก็อยากลองดูว่าจริงหรือเปล่า และพอจะแก้ได้ไหม เพราะว่า รุ่นน้องที่ลงแลปวิชาภาษา C ในมหาลัยผม จะสอนใช้ Text-Editor+Compiler ตัวนี้ ก็เลยไปโหลดมาติดตั้ง ปรากฏว่าเป็นจริงๆ TT ( ผมโหลดเจ้าตัว Dev-C++ 5.0 beta 9.2 (4.9.9.2) with Mingw/GCC 3.4.2มาลอง) ก็เลยลงมือแก้หาสาเหตุดู ปรากฏว่า เจอปัญหาที่ gcc ของ MinGW ใน Packet ของ DevC++ ยังเป็นรุ่นเก่า พออัพเดทใหม่แล้วได้ เลยคิดว่า สาเหตุน่าจะเกิดปัญหามาจากตัวนี้ ก็เลยเอาวิธีมาแชร์ๆกัน


Update 11/10/2014 --------------
เนื่องจาก MinGW (Minimalist GNU for Windows) ได้เปลี่ยน UI ใหม่ บางท่านอาจงง



Dev-C++ 5.0 beta 9.2 (4.9.9.2) with Mingw/GCC 3.4.2
วิธีการแก้ง่ายนิดเดียวครับ!!
ก็คือ ลง MinGW ใหม่ โหลดตามลิ้งนี้เลย  เมื่อโหลดเสร็จจากนั้นก็ทำการติดตั้งตามปกติ







[PSU] วิธีการขอ License Win 7,8,8.1,10 ของแท้ฟรี

[บทความนี้ใช้งานได้เฉพาะ น.ศ.หรือบุคลากร ม.อ.]       
       ช่วงนี้เห็นกระแสเริ่มขอ License แท้เริ่มบูมขึ้นมา ปกติจะไม่ค่อยมีใครสนใจซักเท่าไหร่ หรืออาจเป็นเพราะ เบื่อที่ต้อง Crack Windows ให้เป็นของแท้ ไม่ก็กลัวอะไรหลายๆอย่างที่เราไม่รู้ ...ก็...เป็น...ได้
        ผมว่าใคร Crack Windows เนี่ย น่ากลัวมากน่ะ เพราะโปรแกรมที่เอามา Crack เป็นของใครก็ไม่รู้ทำไว้ ยิ่งตอนติดตั้ง คุณต้องรันสิทธิเป็น Admin อีก ไม่อย่างนั้นโปรแกรมจะไม่ทำงาน คราวนี้แหล่ะฮ๊าฟโปรแกรมมันก็จะสามารถที่จะทำทุกอย่างบนเครื่องเราได้เลย โดยที่เราไม่รู้ ถ้าโชคร้ายได้ตัว Crack มาจาก Programer ไม่ประสงค์ดี ตอนติดตั้งเขาอาจใส่โปรแกรมบางอย่างมาติดตั้งในเครื่องเรา ซึ่งเราไม่รู้ (เพราะเห็นแต่หน้า UI อันสวยหรูของโปรแกรมแค่นั้น ใครจะคิดล่ะว่าหน้าตาสวยหรู จะมีสิ่งร้ายๆตามมา)  เพื่อดักข้อมูลสำคัญของเรา ยิ่งใครใช้ Internet Banking ก็งานเข้าล่ะครับพี่น้องเอ้ยย ไม่ต้องพูด แถมบางตัวไป Block Update Windows คราวนี้ซวยเลย ช่องโหว่ Windows ก็ไม่ได้ปิด  Hacker ก็เข้ามาได้ง่าย ถ้าผมจะ  Hack น่ะ ถ้าเข้าได้แล้วเม่ง จะลบข้อมูลให้หมด ทำให้วินโด้เ…

โลจิสโพสต์ ส่งรถจักรยานยนต์ หรือของใหญ่ๆ ผ่านไปรษณีย์ไทย.. ง่ายนิดเดียว

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

ซึ่งบริการของไปรณีย์ไทยที่เราจะใช้ ชื่อว่า  โลจิสโพสต์ (Logispost) รับฝากสิ่งของขนาดใหญ่ หรือมีรูปร่างพิเศษเหมาะกับการขนส่งสินค้า ซึ่งมีน้ำหนักมากหรือมีบรรจุภัณฑ์ขนาดใหญ่ เช่น จักรยานยนต์ ตู้เย็น  ทีวี เครื่องซักผ้า โดยสามารถฝากส่งและรอจ่าย ณ ที่ทำการไปรษณีย์ที่ผู้รับสะดวก และยังส่งไปต่างประเทศได้อีกด้วย โดยปกติจะใช้ระยะเวลา 5-7 วันทำการ แต่ถ้าหากต้องการความรวดเร็ว ก็ยังมีบริการ Logispost Plus ส่งด้วยภายใน 3 วัน และยังส่งถึงหน้าบ้าน!!


เริ่มเลยครับ ..

อย่างแรก เอกสารที่ต้องใช้ เตรียมถ่ายไว้เลยจะได้สะดวก ผมว่าให้ถ่ายไปสองชุดเพื่อความชัวร์
1. สำเนาทะเบียนรถที่จะส่ง (พาตัวจริงไปด้วยก็ดี เผื่อเจ้าหน้าขอดู)
2. สำเนาบัตรประชาช…