หน่วยการเรียนรู้ที่ 2
องค์ประกอบของโปรแกรมภาษาคอมพิวเตอร์
สาระการเรียนรู้
1. ภาษาคอมพิวเตอร์ภาษาเครื่อง
- ภาษาระดับต่ำ
- ภาษาระดับสูง
2. โปรแกรมแปลภาษาคอมพิวเตอร์
- อินเตอร์พรีเตอร์
- คอมไพเลอร์
- องค์ประกอบของโปรแกรมแปลภาษาคอมพิวเตอร์
1. ภาษาคอมพิวเตอร์ภาษาเครื่อง
- ภาษาระดับต่ำ
- ภาษาระดับสูง
2. โปรแกรมแปลภาษาคอมพิวเตอร์
- อินเตอร์พรีเตอร์
- คอมไพเลอร์
- องค์ประกอบของโปรแกรมแปลภาษาคอมพิวเตอร์
Key Note
ในการออกแบบและพัฒนาโปรแกรมคอมพิวเตอร์เพื่อให้สามารถตอบสนองความต้องการของผู้ใช้ได้นั้นผู้พัฒนาโปรแกรมต้องมีความรู้และความเข้าใจเกี่ยวกับองค์ประกอบของโปรแกรมภาษาคอมพิวเตอร์ก่อน เนื้อหาในหน่วยนี้จะประกอบด้วยความรู้เกี่ยวกับโปรแกรมคอมพิวเตอร์แบบต่างๆระดับของภาษาคอมพิวเตอร์ และโครงสร้างของข้อมูลในโปรแกรมคอมพิวเตอร์
ในการออกแบบและพัฒนาโปรแกรมคอมพิวเตอร์เพื่อให้สามารถตอบสนองความต้องการของผู้ใช้ได้นั้นผู้พัฒนาโปรแกรมต้องมีความรู้และความเข้าใจเกี่ยวกับองค์ประกอบของโปรแกรมภาษาคอมพิวเตอร์ก่อน เนื้อหาในหน่วยนี้จะประกอบด้วยความรู้เกี่ยวกับโปรแกรมคอมพิวเตอร์แบบต่างๆระดับของภาษาคอมพิวเตอร์ และโครงสร้างของข้อมูลในโปรแกรมคอมพิวเตอร์
เนื้อหาในบทเรียน
ภาษาคอมพิวเตอร์
Computer Language
ภาษาคอมพิวเตอร์แบ่งออกเป็น 3 ประเภทใหญ่ ๆ ดังนี้
1 ภาษาเครื่อง
ในยุคแรก ๆ การใช้คอมพิวเตอร์ให้ทำงานตามต้องการนั้น ผู้เขียนโปรแกรมจะต้องเขียนคำสั่งด้วยภาษาของเครื่องคอมพิวเตอร์ซึ่งเรียกว่า ภาษาเครื่อง คำสั่งของภาษาเครื่องนั้นจะประกอบด้วยกลุ่มของตัวเลขในระบบเลขฐานสอง เป็นภาษาเดียวเท่านั้นที่เครื่องคอมพิวเตอร์เข้าใจได้โดยตรง ลักษณะของภาษาเป็นภาษาที่ขึ้นอยู่กับฮาร์ดแวร์ของคอมพิวเตอร์แต่ละระบบ โดยเขียนอยู่ในรูปของรหัสของระบบเลขฐานสอง ประกอบด้วย เลข 0 และเลข 1 ที่นำมาเขียนเรียงติดต่อกัน ประโยคคำสั่งของภาษาเครื่องจะประกอบด้วยส่วนที่ระบุให้คอมพิวเตอร์ทำงานอะไร เช่น สั่งให้ทำการบวกเลข สั่งให้ทำการเคลื่อนย้ายข้อมูล เป็นต้น และอีกส่วนเพื่อบอกแหล่งข้อมูลที่จะนำมาทำงานตามที่ระบุในตอนแรก |
Keynote
ภาษาเครื่องไม่เป็นที่นิยมในการเขียนโปรแกรม แต่มันก็เป็นภาษาเดียวที่คอมพิวเตอร์เข้าใจคำสั่งที่ผู้ใช้เขียนและปฏิบัติตามได้ทันที โดยไม่ต้องมีตัวกลางในการแปลภาษาอีกทีหนึ่ง และ นอกจากนี้เครื่องคอมพิวเตอร์แต่ละระบบมีภาษาเครื่องที่แตกต่างกันออกไป ทำให้เกิดความไม่สะดวกเมื่อมีการเปลี่ยน เครื่องคอมพิวเตอร์เพราะจะต้องเขียนโปรแกรมใหม่ทั้งหมด
ตัวอย่างของชุดคำสั่ง ภาษาเครื่อง
อาจารย์ต้องการคำนวณตัวเลข 9 + 3 อ.ต้องเขียนคำสั่งแบบนี้
เลข 9 แทนด้วยรหัส 00111001
เลข 3 แทนด้วยรหัส 00110011
เครื่องหมาย + แทนด้วยรหัส 00101011
จากนั้นจะได้คำสั่งเป็นภาษาเครื่องดังนี้
00111001 00101011 00110011
อาจารย์ต้องการคำนวณตัวเลข 9 + 3 อ.ต้องเขียนคำสั่งแบบนี้
เลข 9 แทนด้วยรหัส 00111001
เลข 3 แทนด้วยรหัส 00110011
เครื่องหมาย + แทนด้วยรหัส 00101011
จากนั้นจะได้คำสั่งเป็นภาษาเครื่องดังนี้
00111001 00101011 00110011
เนื่องจากไม่เป็นที่นิยมจึงทำให้มีผู้คิดค้นภาษาใหม่ขึ้นมา เพื่อให้มีการเขียนภาษาที่ง่ายกว่าเดิม จึงเกิดภาษาใหม่ขึ้นคือ
ภาษาระดับต่ำ (Low Level Language) และภาษาระดับสูง (High Level Language)
ภาษาระดับต่ำ (Low Level Language) และภาษาระดับสูง (High Level Language)
2. ภาษาระดับต่ำ (Low Level Language)
ภาษาระดับต่ำ เป็นภาษาที่มีความใกล้เคียงกับภาษาเครื่องมาก ดังนั้นบางครั้งจึงเรียกภาษานี้ว่า ภาษาอิงเครื่อง ( machine – oriented language ) ตัวอย่างของภาษาระดับต่ำได้แก่ ภาษาแอสเซมบลี เป็นภาษาที่ใช้คำในอักษรภาษาอังกฤษเป็นคำสั่งให้เครื่องทำงาน เช่น ADD หมายถึง บวก SUB หมายถึง ลบ เป็นต้น การใช้โปรแกรมที่เขียนด้วยภาษาแอสเซมบลีนั้น เครื่องคอมพิวเตอร์ไม่สามารถทำงาน ได้ทันที จำต้องมีตัวแปลโปรแกรมจากภาษาแอสเซมบลีให้เป็นภาษาเครื่องก่อนโดยอาศัยโปรแกรมในการแปลที่มีชื่อว่าแอสเซมเบลอร์ ( assembler )
ภาษาระดับต่ำ เป็นภาษาที่มีความใกล้เคียงกับภาษาเครื่องมาก ดังนั้นบางครั้งจึงเรียกภาษานี้ว่า ภาษาอิงเครื่อง ( machine – oriented language ) ตัวอย่างของภาษาระดับต่ำได้แก่ ภาษาแอสเซมบลี เป็นภาษาที่ใช้คำในอักษรภาษาอังกฤษเป็นคำสั่งให้เครื่องทำงาน เช่น ADD หมายถึง บวก SUB หมายถึง ลบ เป็นต้น การใช้โปรแกรมที่เขียนด้วยภาษาแอสเซมบลีนั้น เครื่องคอมพิวเตอร์ไม่สามารถทำงาน ได้ทันที จำต้องมีตัวแปลโปรแกรมจากภาษาแอสเซมบลีให้เป็นภาษาเครื่องก่อนโดยอาศัยโปรแกรมในการแปลที่มีชื่อว่าแอสเซมเบลอร์ ( assembler )
Keynote
ภาษาแอสเซมบลีนี้ยังคงใช้ยาก เพราะผู้เขียนโปรแกรมจะต้องเข้าใจการทำงานของเครื่องคอมพิวเตอร์อย่างละเอียด ต้องรู้ว่าจำนวนที่จะนำมาคำนวณนั้นอยู่ ณ ตำแหน่งใดในหน่วยความจำ ในทำนองเดียวกับการเขียนโปรแกรมเป็นภาษาเครื่อง ภาษาแอสเซมบลี จึงมีผู้ใช้น้อยและมักจะใช้ในกรณี ที่ต้องการควบคุมการทำงานภายในของตัวเครื่องคอมพิวเตอร์
ภาษาแอสเซมบลีนี้ยังคงใช้ยาก เพราะผู้เขียนโปรแกรมจะต้องเข้าใจการทำงานของเครื่องคอมพิวเตอร์อย่างละเอียด ต้องรู้ว่าจำนวนที่จะนำมาคำนวณนั้นอยู่ ณ ตำแหน่งใดในหน่วยความจำ ในทำนองเดียวกับการเขียนโปรแกรมเป็นภาษาเครื่อง ภาษาแอสเซมบลี จึงมีผู้ใช้น้อยและมักจะใช้ในกรณี ที่ต้องการควบคุมการทำงานภายในของตัวเครื่องคอมพิวเตอร์
ตัวอย่างชุดคำสั่งของภาษาระดับต่ำ
อ.จะเขียนชุดคำสั่งคำนวณด้วยภาษา Assembly ในการหาผลบวก 9 + 3
MOV AX,9
MOV BX,3
ADD AX,BX
อ.จะเขียนชุดคำสั่งคำนวณด้วยภาษา Assembly ในการหาผลบวก 9 + 3
MOV AX,9
MOV BX,3
ADD AX,BX
3. ภาษาระดับสูง (High Level Language)
สามารถเรียกได้อีกอย่างว่าเป็นภาษารุ่นที่ 3 (3rd Generation Languages หรือ 3GLs) เป็นภาษาที่สร้างขึ้นเพื่อช่วยอำนวยความสะดวกในการเขียนโปรแกรม ลักษณะของคำสั่งต่าง ๆ ในภาษาอังกฤษซึ่งผู้อ่านสามารถเข้าใจความหมายได้ทันที ผู้เขียนโปรแกรมจึงสามารถเขียนโปรแกรมด้วยภาษาระดับสูงได้ง่ายกว่าเขียนด้วยภาษาแอสเซมบลีหรือภาษาเครื่อง ภาษาระดับสูงมีมากมายหลายภาษา อาทิเช่น ภาษาฟอร์แทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาปาสคาล (Pascal) ภาษาเบสิก(BASIC) ภาษาวิชวลเบสิก (Visual Basic) ภาษาซี (C) และภาษาจาวา (Java) เป็นต้น โปรแกรมที่เขียนด้วยภาษาระดับสูงแต่ละภาษาจะต้องมีโปรแกรมที่ทำหน้าที่แปล ภาษาระดับสูงให้เป็นภาษาเครื่อง เช่น โปรแกรมแปลภาษาฟอร์แทรนเป็นภาษาเครื่อง โปรแกรมแปลภาษาปาสคาลเป็นภาษาเครื่อง คำสั่งหนึ่งคำสั่งในภาษาระดับสูงจะถูกแปลเป็นภาษาเครื่องหลายคำสั่ง
สามารถเรียกได้อีกอย่างว่าเป็นภาษารุ่นที่ 3 (3rd Generation Languages หรือ 3GLs) เป็นภาษาที่สร้างขึ้นเพื่อช่วยอำนวยความสะดวกในการเขียนโปรแกรม ลักษณะของคำสั่งต่าง ๆ ในภาษาอังกฤษซึ่งผู้อ่านสามารถเข้าใจความหมายได้ทันที ผู้เขียนโปรแกรมจึงสามารถเขียนโปรแกรมด้วยภาษาระดับสูงได้ง่ายกว่าเขียนด้วยภาษาแอสเซมบลีหรือภาษาเครื่อง ภาษาระดับสูงมีมากมายหลายภาษา อาทิเช่น ภาษาฟอร์แทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาปาสคาล (Pascal) ภาษาเบสิก(BASIC) ภาษาวิชวลเบสิก (Visual Basic) ภาษาซี (C) และภาษาจาวา (Java) เป็นต้น โปรแกรมที่เขียนด้วยภาษาระดับสูงแต่ละภาษาจะต้องมีโปรแกรมที่ทำหน้าที่แปล ภาษาระดับสูงให้เป็นภาษาเครื่อง เช่น โปรแกรมแปลภาษาฟอร์แทรนเป็นภาษาเครื่อง โปรแกรมแปลภาษาปาสคาลเป็นภาษาเครื่อง คำสั่งหนึ่งคำสั่งในภาษาระดับสูงจะถูกแปลเป็นภาษาเครื่องหลายคำสั่ง
โปรแกรมแปลภาษาคอมพิวเตอร์
Translator
การพัฒนาโปรแกรมคอมพิวเตอร์ ผู้เขียนโปรแกรมหรือที่เรียกว่าโปรแกรมเมอร์นั้น จะเลือกใช้ภาษาให้เหมาะสมกับลักษณะงานและความถนัด ของผู้เขียนโปรแกรม ดังนั้นการเขียนโปรแกรมจึงต้องมีโปรแกรมที่ใช้ในการแปลความหมายของคำสั่งในภาษาคอมพิวเตอร์ชนิดต่าง ๆ ไปเป็นภาษาเครื่อง ซึ่งเป็นภาษาที่คอมพิวเตอร์เข้าใจและทำงานตามคำสั่งได้ โดยโปรแกรมที่เขียนจะเป็นโปรแกรมต้นฉบับหรือ ซอร์สโค้ด (source code) ซึ่งโปรแกรมเมอร์เขียนคำสั่งตามหลักการออกแบบโปรแกรม และจำเป็นต้องใช้ตัวแปลภาษาคอมพิวเตอร์เพื่อตรวจสอบไวยากรณ์ของภาษาว่าเขียนถูกต้องหรือไม่ และทดสอบผลลัพธ์ว่าเป็นอย่างไร ซึ่งภาษาคอมพิวเตอร์ชนิดต่าง ๆ จะมีตัวแปลภาษาของตนเองโดยเฉพาะ
ในที่นี้ อ.จะแยกโปรแกรมแปลภาษาอกเป็น 2 ประเภทคือ |
1. Interpreter
เป็นตัวแปลภาษาคอมพิวเตอร์ระดับสูงไปเป็นภาษาเครื่อง โดยใช้หลักการแปลคำสั่งครั้งละ 1 คำสั่งให้เป็นภาษาเครื่อง แล้วนำคำสั่งที่เป็นภาษาเครื่องนั้นไปทำการประมวลผล และแสดงผลลัพธ์ทันทีหากไม่พบข้อผิดพลาด หลังจากนั้นจะแปลคำสั่งถัดไปเรื่อย ๆ จนกว่าจะจบโปรแกรม ในระหว่างการแปลคำสั่ง ถ้าหากพบข้อผิดพลาดทางไวยากรณ์ของภาษา โปรแกรมอินเทอร์พรีเตอร์ ก็จะหยุดการทำงานพร้อมแจ้งข้อผิดพลาดให้ทำการแก้ไขซึ่งทำได้ง่ายและรวดเร็ว แต่ออบเจ็คโค้ดที่ได้จากการแปลคำสั่งโดยใช้อินเทอพรีเตอร์นั้นไม่สามารถเก็บไว้ใช้ใหม่ได้ จะต้องแปลโปรแกรมใหม่ทุกครั้งที่ต้องการใช้งาน ทำให้โปรแกรม ทำงานได้ค่อนข้างช้า
ตัวอย่างภาษาที่ใช้ตัวแปลอินเตอร์พรีเตอร์ เช่น ภาษาเบสิก (BASIC)
เป็นตัวแปลภาษาคอมพิวเตอร์ระดับสูงไปเป็นภาษาเครื่อง โดยใช้หลักการแปลคำสั่งครั้งละ 1 คำสั่งให้เป็นภาษาเครื่อง แล้วนำคำสั่งที่เป็นภาษาเครื่องนั้นไปทำการประมวลผล และแสดงผลลัพธ์ทันทีหากไม่พบข้อผิดพลาด หลังจากนั้นจะแปลคำสั่งถัดไปเรื่อย ๆ จนกว่าจะจบโปรแกรม ในระหว่างการแปลคำสั่ง ถ้าหากพบข้อผิดพลาดทางไวยากรณ์ของภาษา โปรแกรมอินเทอร์พรีเตอร์ ก็จะหยุดการทำงานพร้อมแจ้งข้อผิดพลาดให้ทำการแก้ไขซึ่งทำได้ง่ายและรวดเร็ว แต่ออบเจ็คโค้ดที่ได้จากการแปลคำสั่งโดยใช้อินเทอพรีเตอร์นั้นไม่สามารถเก็บไว้ใช้ใหม่ได้ จะต้องแปลโปรแกรมใหม่ทุกครั้งที่ต้องการใช้งาน ทำให้โปรแกรม ทำงานได้ค่อนข้างช้า
ตัวอย่างภาษาที่ใช้ตัวแปลอินเตอร์พรีเตอร์ เช่น ภาษาเบสิก (BASIC)
|
2. Compiler
เป็นตัวแปลภาษาคอมพิวเตอร์ระดับสูงไปเป็นภาษาเครื่อง โดยทำการตรวจสอบความถูกต้องของการเขียนคำสั่งทั้งหมดทั้งโปรแกรมให้เป็นออบเจ็คโค้ด แล้วจึงทำการแปลคำสั่งไปเป็นภาษาเครื่อง จากนั้นจึงทำการประมวลผลและแสดงผลลัพธ์ หากพบข้อผิดพลาดของการเขียนโปรแกรม หรือมีคำสั่งที่ผิดหลักไวยากรณ์ของภาษาคอมพิวเตอร์ โปรแกรมคอมไพเลอร์จะแจ้งให้โปรแกรมเมอร์ทำการแก้ไขให้ถูกต้องทั้งหมดก่อนแล้วจึงคอมไพล์ใหม่อีกครั้งจนกว่าไม่พบข้อผิดพลาดถึงจะนำโปรแกรมไปใช้งานได้ ข้อดีของคอมไพเลอร์ คือโปรแกรมออปเจ็คโค้ดที่ได้จะรวบรวมคำสั่งที่สำคัญในการรันโปรแกรมไม่ต้องเสียเวลาในการแปลใหม่ทุกครั้ง ทำให้การทำงานของโปรแกรมเป็นไปอย่างรวดเร็ว จึงเป็นรูปแบบการแปลที่ได้รับความนิยมอย่างมาก |
องค์ประกอบของภาษาคอมพิวเตอร์
โครงสร้างของภาษา Visual Basic 2010
ตัวอย่างองค์ประกอบของภาษา
- โปรแกรมเมอร์ที่ดีส่วนใหญ่ไม่ได้เขีย
- โปรแกรมเมอร์ที่ดีส่วนใหญ่ไม่ได้เขียนโปรแกรมเพราะอยากได้ผลตอบแทนหรือคำชื่นชม แต่เพราะว่าการเขียนโปรแกรมเป็นเรื่องสนุก
- นโปรแกรมเพราะอยากได้ผลตอบแทนหรือคำชื่นชม แต่เพราะว่าการเขียนโปรแกรมเป็นเรื่องสนุก