ตัวแปลภาษาคอมพิวเตอร์ (Translator) คืออะไร และ มีกี่ประเภท

Advertisement

ตัวแปลภาษาคอมพิวเตอร์ (Translator)

ในการพัฒนาซอฟต์แวร์คอมพิวเตอร์นั้น โปรแกรมเมอร์จะเขียนโปรแกรมในภาษาคอมพิวเตอร์แบบต่าง ๆ ตามแต่ความชำนาญของแต่ละคน โปรแกรมที่ได้จะเรียกว่า โปรแกรมต้นฉบับ หรือ ซอร์สโคด (source code) ซึ่งมนุษย์จะอ่านโปรแกรมต้นฉบับนี้ได้แต่คอมพิวเตอร์จะไม่เข้าใจคำสั่งเหล่านั้น เนื่องจากคอมพิวเตอร์เข้าใจแต่ภาษาเครื่อง (Machine Language)  ซึ่งประกอบขึ้นจากรหัสฐานสองเท่านั้น จึงต้องมีการใช้โปรแกรม ตัวแปรภาษาคอมพิวเตอร์ (Translator) ในการแปลภาษาคอมพิวเตอร์ภาษาต่าง ๆ ไปเป็นภาษาเครื่องโปรแกรมที่แปลจากโปรแกรมต้นฉบับแล้วเรียกว่า ออบเจคโคด (object code) ซึ่งจะประกอบด้วยรหัสคำสั่งที่คอมพิวเตอร์สามารถเข้าใจและนำไปปฏิบัติได้ต่อไปตัวแปลภาษาที่มีการใช้อยู่ในปัจจุบัน จะต่างกันที่ขั้นตอนที่ใช้ในการแปลภาษาให้อยู่ในรูปแบบที่คอมพิวเตอร์สามารถเข้าใจได้สามารถแบ่งได้เป็น แอสเซมเบลอ (Assembler), อินเตอร์พรีเตอร์ (Interpreter), คอมไพเลอร์ (Compiler)

1. แอสเซมเบลอ (Assembler) เป็นตัวแปลภาษาแอสแซมบลีซึ่งเป็นภาษาระดับต่ำให้เป็นภาษาเครื่อง

Advertisement

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

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

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

Advertisement

ตัวอย่างโค้ดตัดเกรด ที่ใช้ภาษาซีในการเขียน โดยใช้เงื่อนไข if – else

ตัวอย่างโค้ดตัดเกรด ที่ใช้ภาษาซีในการเขียน โดยใช้เงื่อนไข if - else

สำหรับโปรแกรมคำนวณเกรดที่ใช้ภาษาซีเขียนนั้น บางคนก็อาจจะรู้แล้วว่าเป็นหยังไง หรือบางคนก็อาจจะยังไม่รู้ สำหรับบทความนี้ก็จะเป็นอีกหนึ่งตัวอย่างของการเขียนโปรแกรมคำนวณเกรดที่ใช้ภาษาซีในการพัฒนา โดยใช้เงื่อนไข if-else ในตัวอย่างโค้ดด้านล่างนี้ ตัวอย่างการเขียนโปรแกรมภาษาซี

/*
 * Code by DekDEV.com
 */

#include <stdio.h>

int main()
{

	float score;
	printf("Enter your score : ");
	scanf("%f", &score);

	if(score < 0 || score > 100){
		printf("Enter score 0 - 100 \n");
	}
	else if(score >= 80){
		printf("Score = %.2f , You Grade : A \n", score);
	}
	else if(score >= 75){
		printf("Score = %.2f , You Grade : B+ \n", score);
	}
	else if(score >= 70){
		printf("Score = %.2f , You Grade : B \n", score);
	}
	else if(score >= 65){
		printf("Score = %.2f , You Grade : C+ \n", score);
	}
	else if(score >= 60){
		printf("Score = %.2f , You Grade : C \n", score);
	}
	else if(score >= 55){
		printf("Score = %.2f , You Grade : D+ \n", score);
	}
	else if(score >= 50){
		printf("Score = %.2f , You Grade : D \n", score);
	}
	else{
		printf("Score = %.2f , You Grade : F \n", score);
	}

	return 0;
}

ตัวอย่างการเขียนโปรแกรมภาษาซี
ตัวอย่างโค้ดตัดเกรด ที่ใช้ภาษาซีในการเขียน โดยใช้เงื่อนไข if - else

ประวัติ ความเป็นมา ของ ภาษาซี (C)

ภาษาซีเกิดขึ้นในปี ค.ศ.1972 โดย Dennis Ritchie แห่ง Bell Labs โดยภาษาซีนั้นพัฒนามาจาก ภาษา B และจากภาษา BCPL
ซึ่งในช่วงแรกนั้นภาษาซีถูกออกแบบให้ใช้เป็นภาษาการเขียนโปรแกรมในระบบ UNIX และเริ่มมีคนสนใจมากขึ้นในปี ค.ศ.1978 เมื่อ Brain Kernighan ร่วมกับ Dennis Ritchie พัฒนามาตรฐานของภาษาซีขึ้นมา คือ K&R (Kernighan & Ritchie) และทั้งสองยังได้แต่งหนังสือชื่อว่า “The C Programming Language” โดยภาษาซีนั้นสามารถจะปรับใช้กับเครื่องคอมพิวเตอร์รูปแบบต่างๆได้

ต่อ มาในช่วง ปี ค.ศ.1988 Ritchie และ Kernighan ได้ร่วมกับ ANSI (American National Standards Institute) สร้างเป็นมาตรฐานของภาษาซีขึ้นมาใหม่มีชื่อว่า “ANSI C

Dennis Ritchie

 

ภาษา ซีนั้นจัดเป็นภาษาที่ใช้ในการเขียน โปรแกรมที่นิยมใช้งาน ซึ่งภาษาซีจัดเป็นภาษาระดับกลาง (Middle-Level Language) เหมาะกับการเขียนโปรแกรมแบบโครงสร้าง (Structured Programming) โดยมีคุณสมบัติโดดเด่นอย่างหนึ่งคือ มีความยืดหยุ่นมาก กล่าวคือ สามารถทำงาน กับเครื่องมือต่างๆ สามารถปรับเปลี่ยนการเขียนโปรแกรมในรูปแบบต่างๆได้ เช่น สามารถเขียนโปรแกรมที่มีความยาวหลายบรรทัดให้เหลือความยาว 2-3 บรรทัดได้ โดยมีการผลการทำงานที่เหมือนเดิมครับ

 

ภาษา ซี (C programming language)
เป็นภาษาโปรแกรมเชิงโครงสร้างระดับสูงที่ได้รับการพัฒนาขึ้นในช่วงทศวรรษ 1970 โดย เคน ธอมป์สัน (Ken Thompson) และ เดนนิส ริทชี่ (Dennis Ritchie) ขณะทำงานอยู่ที่ เบลล์เทเลโฟน เลบอราทอรี่ สำหรับใช้ในระบบปฏิบัติการยูนิกซ์ ต่อมาภายหลังได้ถูกนำไปใช้กับระบบปฏิบัติการอื่น ๆ และกลายเป็นภาษาโปรแกรมหนึ่งที่ใช้กันแพร่หลายมากที่สุด ภาษาซีมีจุดเด่นที่ประสิทธิภาพในการทำงาน เนื่องจากมีความสามารถใกล้เคียงกับภาษาระดับต่ำ แต่เขียนแบบภาษาระดับสูง โปรแกรมคอมพิวเตอร์ที่เขียนด้วยภาษาซีจึงทำงานได้รวดเร็ว ภาษาซีเป็นภาษาโปรแกรมที่นิยมใช้กันมากสำหรับพัฒนาระบบปฏิบัติการ,ซอฟต์แวร์ ระบบ , ควบคุมไมโครคอนโทรลเลอร์ และเป็นภาษาที่ใช้กันทั่วไปในหลักสูตรวิทยาการคอมพิวเตอร์

 

Ken Thompson

ข้อแตกต่าง ระหว่าง อินเตอร์พรีเตอร์ และ คอมไพเลอร์

ข้อแตกต่างในการแปลภาษาภาษาแบบอินเตอร์พรีเตอร์ และ การแปลภาษาแบบคอมไพเลอร์ นั้นเปรียบเที่ยบคร่าว ๆ ดังตารางด้านล่างนี้

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

คอมไพเลอร์

1. แปล source code ทีละคำสั่ง และทำตามคำสั่งนั้นทันที 1. แปล source code ต้นฉบับให้เสร็จก่อน ค่อยทำตามคำสั่งในโปรแกรม
2. ทำงานในรูปแบบวนทำงานซ้ำ ๆ และจะทำให้ทำงานช้า เพราะจะต้องแปลทีละคำสั่งทีละรอบ 2. การทำงานลักษณะวนทำงานซ้ำ ๆ จะทำงานเร็ว เพราะจะเอาออปเจ็กโปรแกรมที่ผ่านการคอมไพล์แล้วไปใช้
3. ใช้เนื้อที่ในหน่วยความจำน้อย 3. ใช้เนื้อที่ในหน่วยความจำมาก
4. เมื่อพบข้อผิดพลาดต้องแก้ไขทีละคำสั่ง ถึงจะทำงานต่อได้ 4. เมื่อพบข้อผิดพลาดจะแสดงข้อผิดพลาดทั้งหมดหลังคอมไพล์เสร็จสิ้น
5. ใช้กับภาษา พีเอชพี (PHP) เอพีแอล (APL) เบสิก (BASIC) เป็นต้น 5. ใช้กับภาษาซี (C)  ซีชาร์ฟ(C#) โคบอล (COBOL)  เป็นต้น

เกี่ยวกับ ภาษาซี (c language)

ภาษาซี (C) เป็นภาษาโปรแกรมบนคอมพิวเตอร์ที่มีวัตถุประสงค์ทั่วไป พัฒนาขึ้นเมื่อ พ.ศ. 2515 (ค.ศ. 1972) โดย เดนนิส ริตชี ที่เบลล์เทเลโฟนแลบอลาทอรีส์ (Bell Telephone Laboratories) เกิดขึ้นเพื่อสร้างระบบปฏิบัติการยูนิกซ์ในขณะนั้น

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

ภาษาซีเป็นภาษาโปรแกรมหนึ่งที่ได้รับความนิยมมากที่สุดตลอดกาล  มีสถาปัตยกรรมคอมพิวเตอร์เพียงส่วนน้อยเท่านั้นที่ไม่มีตัวแปลโปรแกรมของภาษาซี ภาษาซีมีอิทธิพลอย่างมากต่อภาษาโปรแกรมที่นิยมอื่น ๆ ที่เด่นชัดที่สุดก็คือภาษาซีพลัสพลัส ซึ่งเดิมเป็นส่วนขยายของภาษาซี

 

เดนนิส แม็กคาลิสแตร์ ริตชี
Dennis MacAlistair Ritchie

 

ข้อดีและข้อเสีย ของภาษาเครื่อง

ข้อดี ของภาษาเครื่อง

1.  เมื่อคำสั่งเข้าสู่เครื่องจะสามารถทำงานได้ทันที
2.  สามารถสร้างคำสั่งใหม่ ๆ ได้ โดยที่ภาษาอื่นทำไม่ได้
3.  ต้องการหน่วยความจำเพียงเล็กน้อย

 

ข้อเสียของภาษาเครื่อง

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

ภาษาเครื่อง (Machine Language) หมายถึง ?

ภาษาเครื่อง (machine language) เป็น ภาษาโปรแกรมรุ่นที่หนึ่ง (first-generation programming language: 1GL) ซึ่งเป็นภาษาเดียวที่ไมโครโพรเซสเซอร์สามารถเข้าใจ คำสั่งเป็นตัวเลขล้วนๆ การอ่านและเขียนอาจต้องใช้เครื่องมือพิเศษ เป็น ภาษาหรือคำสั่งที่ใช้้ในการสั่งงานหรือติดต่อกับเครื่องโดยตรง ลักษณะสำคัญของภาษาเครื่องจะประกอบด้วยรหัสของเลขฐานสองซึ่งเทียบได้กับ ลักษณะของสัญญาณทางไฟฟ้าเข้ากับหลักการทำงาานของเครื่องสามารถเข้าใจและ พร้อมที่จะทำงานตามคำสั่งได้ทันที ภาษาเครื่องจะมีกฎเกณฑ์ทางไวยากรณ์ค่อนข้างจำกัดโปรแกรมมีลักษณะค่อนข้าง ยุ่งยากซับซ้อน รหัสโครงสร้างของแต่ลำคำสั่งของภาษาเครื่องจะประกอบด้วยส่วนสำคัญ 2 ส่วนคือ

–  รหัสบอกประเภทของคำสั่ง (Operation Code
หรือ Op-Code) เป็นส่วนที่บอกคำสั่งให้เครื่องทำการ
ประมวลผล เช่น ให้ทำการบวก ลบ คูณ หาร หรือเปรียบเทียบ

–  รหัสบอกตำแหน่งข้อมูล (Operand) เป็นส่วนที่บอกว่า
ข้อมูลที่จะนำมาประมวลผลนั้นเก็บอยู่ในตำแหน่ง (Address)
ใดของหน่วยความจำ

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

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

ภาษาคอมพิวเตอร์ หมายถึง ?

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

 

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

1. ภาษาระดับต่ำ (Low – Level  Language)

2. ภาษาระดับสูง (High – Level  Language)

โดยภาษาระดับต่ำแบ่งออกเป็น  ภาษาเครื่อง และ ภาษาแอสเซมบลี