ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์มีอยู่เป็นจำนวนมาก แต่เครื่องคอมพิวเตอร์จะทำงานได้ภาษาเดียวคือ ภาษาเครื่อง (Machine language) ซึ่งเป็นภาษาที่บังคับการทำงานของเครื่องอย่างแท้จริง ข้อเสียของภาษาเครื่องคือ ภาษาของแต่ละเครื่องจะไม่เหมือนกัน ทั้งนี้ แล้วแต่การออกแบบระบบเครื่อง ว่าจะเป็นแบบใด นอกจากนี้ เครื่องคอมพิวเตอร์แต่ละเครื่องที่สร้างขึ้นมานั้น ส่วนใหญ่จะมีการแก้ไขปรับปรุงให้ดีขึ้นอยู่เสมอ ซึ่งจะทำให้ลักษณะของภาษาเครื่องเปลี่ยนแปลงแตกต่างออกไปอีก แต่ภาษาที่ไม่ใช่ภาษาเครื่องอาจจะยังเหมือนเดิมได้
ดังนั้น ในการสร้างเครื่องจึงมีความจำเป็นที่จะต้องคำนึงถึงประโยชน์ ที่จะได้จากการใช้ภาษาของเครื่องที่สร้างขึ้นมานั้นด้วย รวมทั้งต้องมีระบบการทำงาน ที่กว้างขวางพอที่จะรับงานประเภทต่างๆ ได้อย่างมีประสิทธิภาพ
ระดับภาษาคอมพิวเตอร์
เราอาจแยกภาษาของเครื่องคอมพิวเตอร์ออกเป็น ๒ ระดับคือ
๑. ภาษาระดับต่ำ (low level language) คือ ภาษาที่เขียนตามลักษณะการทำงานของเครื่อง ดังนั้น ผู้ใช้ภาษาเหล่านี้ จำเป็นต้องเข้าใจการทำงานของเครื่องเป็นอย่างดี ภาษาเหล่านี้ ได้แก่ ภาษาเครื่อง ภาษาแอสแซมเบลอร์ และภาษามาโครแอสเซมเบลอร์ (Macro Assembler)
๒. ภาษาระดับสูง (higher level language) เป็นภาษาที่เข้าใกล้ลักษณะภาษาที่มนุษย์ใช้ (human oriented language) มีลักษณะเป็นคำพูด หรือเป็นสมการในการคำนวณแบบเดียวกับที่เราใช้กันในวิชาพีชคณิต หรือตรีโกณมิติ ดังนั้น ภาษาระดับนี้จึงยังแบ่งออกเป็น ๒ พวกคือ
๒.๑ ภาษาเขียนที่มีลักษณะเป็นตัวเลข (numeric lanhuage) คือ ภาษาที่ใช้เขียนชุดคำสั่งนั้น มีแนวความคิดในการบอกข้อมูล และการทำงานที่มีลักษณะเป็นตัวเลข และสมการ เช่น ภาษาฟอร์แทรน ภาษาเบสิก เป็นต้น
๒.๒ ภาษาเขียนที่มีลักษณะเป็นสัญลักษณ์ (symbolic language) คือ ภาษาที่ใช้เขียนชุดคำสั่งนั้น มีแนวความคิดในการบอกข้อมูล และการทำงานที่มีลักษณะเป็นสัญลักษณ์ และเป็นคำพูดแทน เช่น ภาษาโคบอล ภาษา อาร์พีจี เป็นต้น
เนื่องจากเราแบ่งเครื่องคอมพิวเตอร์ออกได้เป็น ๕ ส่วนคือ ส่วนรับข้อมูล ส่วนคำนวณ ส่วนความจำ ส่วนควบคุม และส่วนแสดงผล ดังนั้น ไม่ว่าจะใช้ภาษาระดับใดก็ตาม เราสามารถแยกประเภทของคำสั่งของภาษานั้นได้เป็น ๕ ประเภทเช่นเดียวกันคือ คำสั่งรับส่งข้อมูล คำสั่งคำนวณ คำสั่งย้ายข้อมูล ในส่วนความจำ คำสั่งควบคุม และคำสั่งแสดงผล
ภาษาที่ใช้ในการเขียนชุดคำสั่งคอมพิวเตอร์นั้นมี ลักษณะโดยย่อดังตัวอย่างต่อไปนี้
ตัวอย่างชุดคำสั่งคอมพิวเตอร์
ชุดคำสั่งภาษาเครื่อง
เป็นภาษาที่แท้จริงของเครื่องคอมพิวเตอร์ คอมพิวเตอร์ทุกเครื่องจะทำงานได้แต่เฉพาะภาษาเครื่องเท่านั้น ในงานทางคอมพิวเตอร์ทั่วไปจะไม่เขียนเป็นภาษาเครื่อง เพราะเครื่องคอมพิวเตอร์แต่ละเครื่องจะมีลักษณะแตกต่างกันไป ภาษาเครื่องจะใช้สำหรับผู้ที่ทำหน้าที่ทำงานเกี่ยวกับระบบชุดคำสั่ง เวลาเขียนต้องเขียนในรูปของเลขฐานสอง เมื่อเขียนเสร็จ ต้องคิดกลับมาเป็นตัวเลขฐานสิบ หรือเป็นตัวอักษร หรือพยัญชนะต่างๆ ที่จะให้เครื่องรับกลับเข้าไปเป็นเลขฐานสอง พร้อมกับประกอบเป็นคำสั่ง และรวมกันเป็นชุดคำสั่ง การเขียนชุดคำสั่งภาษาเครื่องไม่จำเป็นต้องใช้ตัวแปลชุดคำสั่ง หรือชุดคำสั่งควบคุมในช่วงการทำงาน
ตัวอย่างชุดคำสั่งภาษาเครื่องที่อยู่ | รหัสในความจำ | รหัสพิมพ์ดีด
|
เลขฐาน 10 | เลขฐาน 2 | คำสั่ง | ที่อยู่ |
0 1 2 3 4 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 | 000000 000001 000010 000011 000100 000101 000110 000100 001000 001100 001110 010000 010010 010100 010110 011000 011010 011100 011110 100000 100010 100100 100110 101000 101010 101100 101110 110000 110010 110100 110110 111000 |
000000 111000 100100 101100 110000 110100 010100 010000 000100 010100 100100 110000 001000 110100 000100 100100 101100 000100 100000 010000 111100 000000 010000 111100 000000 000000
| 000101 001010 000101 000000 000000 000001 000001 000001 000010 010010 010010 000110 000011 000011 000100 000101 000000 100010 000100 000110 000011 000001 110110 000011 000001 000110 000001 000001 000110 000001 000001 000001 |
O Y M * < U D + 4 D M < + U 4 M * 4 - + ( 0 + ( 0 0
| 5 1 5 0 0 1 1 1 2 B B 6 3 3 4 5 0 K 4 6 1 3 W 3 1 6 1 1 6 1 1 1 |
ชุดคำสั่งภาษาแอสเซมเบลอร์ภาษาแอสเซมเบลอร์ หรือเรียกว่า ภาษาแอสเซมบลี (Assembly language) เป็นภาษาที่เขียนเป็นตัวพยัญชนะ และตัวเลขฐานสิบ เช่นเดียวกับภาษาเครื่อง ต่างกันตรงที่ว่า ภาษาแอสเซมเบลอร์เขียนเป็นตัวอักษร โดยไม่คำนึงว่า เลขฐานสองเป็นอย่างไร และต้องการตัวแปลชุดคำสั่งภาษาแอสเซมเบลอร์ เมื่อถึงเวลาทำงานยังต้องใช้ชุดคำสั่งควบคุมเข้าช่วยอีกด้วย
ตัวอย่างชุดคำสั่งภาษาแอสเซมเบลอร์
FIVEA TEN FIVEB STORE COUNT ONE START
KEEP
TESTV
TYPE
| DC DC DC DC DC DC WAT INP COMP BRL BRZ BRH ADD STA LDA ADD COM BRZ STA BRH LDA COM BRL LDA DIV SHL OUP WAT SHL OUP WAT WAT END | 5 10 5 0 0 1 1 1 FIVEB KEEP KEEP START STORE STORE COUNT ONE FIVEA TESTV COUNT START STORE TEN TYPE STORE TEN 6 1 1 6 1 1 1 START | FOR TEST VALUE OF COUNT TEST SUM BIGGER THAN 10 FOR TEST BIGGER THAN 5 KEEP FOR SUMMATION COUNT NUMBER OF INPUT FOR INCREMENT COUNT READ 1 CHARACTER FROM TYPE WRITER COMPARE WITH 5 GO TO KEEP IF LESS THAN 5 GO TO KEEP IF EQUAL 5 GO TO START IF GRTER THAN 5 SUM ACCUMULATOR BY STORE KEEP SUM IN STORE
INCREMENT COUNT
GO TO TESTV IF EQUAL 5
GO TO READ 1 CHARACTER
GO TO TYPE IF LESS THAN 10
RESULT IN A2, REMAINDER IN A1 SHIFT A2 TO A1 AND A1 TO A2 TYPE RESULT
SHIFT A2 TO A1 |
เมื่อเขียนชุดคำสั่งภาษาแอสเซมเบลอร์เสร็จจะได้ชุดคำสั่งที่เรียกว่า ชุดคำสั่งเริ่มต้น (source program) ซึ่งจะต้องมีลักษณะที่ตัวแปลชุดคำสั่งภาษาแอสเซมเบลอร์จะรับได้ เมื่อเอาชุดคำสั่งเริ่มต้นเข้าเครื่องคอมพิวเตอร์ ตัวแปลชุดคำสั่งภาษาแอสเซมเบลอร์จะแปลชุดคำสั่งภาษาแอสเซมเบลอร์เป็นชุดคำสั่งภาษาเครื่อง เราเรียกว่า ชุดคำสั่งทำงาน (object program) พร้อมกับถูกจัดให้อยู่ในรูปที่ชุดคำสั่งควบคุมจะรับได้ ชุดคำสั่งทำงานนี้อาจจะถูกแปลมาในลักษณะบัตร แถบแม่เหล็ก หรือจานแม่เหล็ก
ชุดคำสั่งภาษามาโครแอสเซมเบลอร์
เป็นภาษาที่อยู่ในพวกเดียวกันกับภาษาแอสเซมเบลอร์ เนื่องจากในการเขียนชุดคำสั่งภาษาแอสเซมเบลอร์นั้น ผู้เขียนจะต้องเขียนอย่างพินิจพิเคราะห์ และจะต้องมีความรู้การทำงานของเครื่องคอมพิวเตอร์เป็นอย่างดี ทำให้ไม่สะดวกต่อการเขียน ดังนั้น ผู้ที่คิดทำตัวแปลชุดคำสั่งภาษาแอสเซมเบลอร์จึงได้ทำภาษามาโครขึ้น ซึ่งจัดเป็นชุดคำสั่งของภาษาแอสเซมเบลอร์ เมื่อตัวแปลชุดคำสั่งอ่านพบภาษามาโคร ก็จะดึงเอาภาษาแอสเซมเบลอร์ที่จัดไว้ มาแทรกเข้าในส่วนของชุดคำสั่งนั้น และจัดแปลเป็นภาษาเครื่องด้วย วิธีนี้จะทำให้ผู้เขียนชุดคำสั่งภาษาแอสเซมเบลอร์ เขียนชุดคำสั่งได้สะดวกขึ้น
ตัวอย่างชุดคำสั่งภาษามาโครแอสเซมเบลอร์
START | OPEN | RDR |
| OPEN | PUN |
| GET | RDR, WORK |
| PUT | PUN, WORK |
| - | - |
| - | - |
| - | - |
WORK | DS | CL 160 |
RDR | DTFCR | MODE=BINARY, IOAL=BUFA, FOFA=EOF |
PUN | DTERP | MODE=BINARY, OUAR=BUFB, PUNR=YES |
BUFA | DS | CL160 |
BUFB | DS | CL160 |
ชุดคำสั่งภาษาฟอร์แทรน เป็นภาษาคอมพิวเตอร์ที่เหมาะกับการใช้งานทางด้านการคำนวณ ตัวแปลชุดคำสั่งจะทำหน้าที่อ่านชุดคำสั่งที่เป็นภาษาฟอร์แทรน ที่เราเขียนขึ้น และแปลเป็นภาษาเครื่องที่ชุดคำสั่งควบคุมสามารถรับได้ คำสั่งในภาษาฟอร์แทรนแต่ละคำสั่ง เรียกเป็นภาษาอังกฤษว่า statement ซึ่งแบ่งเป็นได้ดังนี้
คำสั่งรับส่งข้อมูล (input-output statement) ได้แก่ READ, WRITE หรือ PRINT, FORMAT
คำสั่งคำนวณ (arithmetic statement) ได้แก่ คำสั่งที่เป็น การคำนวณ โดยทางซ้ายมือเป็นตัวแปร ทางขวามือเป็นการคำนวณ เช่น X = A + B + ๕
คำสั่งตรรกะ (logical statement) เป็นคำสั่งประเภทควบคุม ได้แก่ คำสั่งที่ใช้ในการทดลองค่า เช่น IF (F.EQ.B) GO TO ๑๕ หรือ GO TO (๑, ๒, ๓, ๔, ๕) และ ๑ เป็นต้น
นอกจากนี้ ยังมีคำสั่งประกอบอื่นๆ อีก เช่น DIMENSION, DATA, CALL SUB, และ RETURN เป็นต้น
ตัวอย่างชุดคำสั่งภาษาฟอร์แทรน
ISTORE = 0 ICOUNT = 0 5 READ (1,6) IVAL 6 FORMAT (I1) IF (IVAL.GT.5) GO TO 5 ISTORE = ISTORE + IVAL ICOUNT = ICOUNT + 1 IF (ICOUNT.LT.5) GO TO 5 WRITE (1,7) ISTORE 7 FORMAT (IZ) STOP END |
ชุดคำสั่งภาษาเบสิก เป็นภาษาคอมพิวเตอร์ที่เหมาะกับผู้เริ่มเรียนการเขียน หรืองานด้านการคำนวณที่ไม่ยุ่งยากมากนัก ลักษณะภาษาประกอบด้วย เลขที่บรรทัดและคำสั่ง ซึ่งแบ่งเป็นดังนี้
คำสั่งรับส่งข้อมูล ได้แก่ INPUT, PRINT และ READ เป็นต้น
คำสั่งคำนวณ ได้แก่ คำสั่งที่ใช้ในการคิดคำนวณเลขต่างๆ เช่น X = A + B + ๕ หรือ Y = A + B/C
คำสั่งตรรกะ ได้แก่ IF, FOR และ GOTO เป็นต้น
ตัวอย่างชุดคำสั่งภาษาเบสิก
10 STORE = 0 20 COUNT = 0 30 INPUT VAL 40 IF VAL > 5 THEN 30 50 STORE = STORE + VAL 60 COUNT = COUNT + 1 70 IF COUNT < 5 THEN 30 80 PRINT STORE 90 END |
ชุดคำสั่งภาษาโคบอล
เป็นภาษาที่นิยมใช้กันมากในทางธุรกิจ เป็นภาษาที่เขียนสั่งการทำงาน โดยใช้คำพูดเป็นประโยค ภายในประโยคจะมีกริยา เมื่อจบแต่ละประโยคจะต้องมีจุด (.) กำกับเมื่อจบ ภาษานี้ไม่เหมาะกับงานที่มีการคำนวณ เพราะเขียนยากกว่า เครื่องคอมพิวเตอร์ ที่ทำงานตามภาษาโคบอลได้ จะต้องมีตัวแปลชุดคำสั่งภาษาโคบอล เพื่อใช้ในการแปลชุดคำสั่งภาษาโคบอลที่เป็นชุดคำสั่งเริ่มต้น เป็นภาษาเครื่องที่ชุดคำสั่งควบคุมจะสามารถรับได้ ชุดคำสั่งทำงานที่แปลได้นี้ อาจจะอยู่ในรูปของบัตรแถบแม่เหล็ก หรือจานแม่เหล็ก
การเขียนภาษาโคบอลจะแบ่งออกเป็น ๔ ส่วนคือ
๑. ส่วนกำหนดลักษณะ (identification division) เป็นส่วนที่บอกชื่อผู้เขียน และวันที่เขียน
๒. ส่วนบอกลักษณะเครื่อง (environment division) เป็นส่วนที่บอกว่าจะใช้เครื่องอ่านบัตร เครื่องพิมพ์ แถบแม่เหล็ก และจานแม่เหล็กอย่างไร
๓. ส่วนบอกลักษณะข้อมูล (data division) เป็นส่วนที่บอกว่าการจัดข้อมูลที่จะนำเข้าและแสดงผลมี ลักษณะเช่นใด รวมทั้งข้อมูลที่จำในหน่วยความจำเป็น อย่างไร
๔. ส่วนบอกการทำงาน (procedure division) เป็นส่วนที่เขียนคำสั่งที่นำเอาข้อมูลที่กำหนดในส่วนบอกลักษณะข้อมูลมาใช้งาน
ตัวอย่างชุดคำสั่งภาษาโคบอล
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. DATE-WRITEN. SEPT 15, 1965 DATE-COMPILE. SEPT 20, 1965 ENVIRONMENT DIVISION. COMFIGURATION SECTION. SOURCE-COMPUTER. HYPOTHETICAL. OPJECT-COMPUTER. HYPOTHETICAL. INPUT-OUTPUT. SECTION. FILE-CONTROL. SELECT DATA-FILE ASSIGN TO TYPEWRITER-A. SELECT LIST-FILE ASSIGN TO TYPEWRITER-A. DATA DIVISION. FILE SECTION. FD DATA-FILE, DATA RECORD IS DATA-IN 01 DATA-IN. 02 VAL PICTURE 9 (01). FD LIST-FILE, DATA RECORD IS DATA-OUT. 01 DATA-OUT. 02 TYPE-DATA PICTURE 9 (2). WORKING STORAGE SECTION. 77 STORE PICTURE 9 (02) VALUE 0. 77 COUNT-TIME PICTURE 9 (01) VALUE 0. PROCEDURE DIVISION. START-JOB. OPEN INPUT DATA-FILE OUTPUT LIST-FILE. READ-FROM-TYPEWRITER. READ DATA-FILE AT END GO TO STOP-JOB. IF VAL GREATER THAN 5 GO TO READ-FROM-TYPEWRITER. ADD VAL TO STORE. ADD 1 TO COUT-TIME. IF COUNT-TIME GREATER THAN 5 GO TO STOP-JOB. GO TO READ-FROM-TYPEWRITER. STOP-JOB. MOVE STORE TO TYPE-DATA. WRITER DATA-OUT. CLOSE DATA-FILE LIST-FILE. STOP RUN |
จากตัวอย่างชุดคำสั่งภาษาต่างๆ จะเห็นได้ว่าภาษาคอมพิวเตอร์ได้ถูกพัฒนาให้เข้าใกล้ภาษาที่มนุษย์เราใช้มากขึ้นเรื่อยๆ เพื่อให้ใช้งานได้ง่าย และประหยัดเวลาในการใช้คอมพิวเตอร์
แท้ที่จริงแล้ว ภาษาของคอมพิวเตอร์มีเป็นจำนวน มาก การที่คอมพิวเตอร์จะสามารถทำงานภาษาใดได้นั้น ขึ้นกับการมีตัวแปลชุดคำสั่งภาษานั้นๆ สำหรับเครื่อง เพื่อให้แปลเป็นภาษาเครื่องพร้อมที่ชุดคำสั่งควบคุมสามารถจะรับ และดำเนินการทำงานได้ตามที่ต้องการ
ผู้ที่มีความเชี่ยวชาญทางภาษาแอสเซมเบลอร์ จะสามารถเขียนชุดคำสั่งเพื่อใช้เป็นตัวแปลชุดคำสั่งภาษาต่างๆ ได้ ตามความต้องการ การเขียนตัวแปลชุดคำสั่งที่ทำงานได้อย่างกว้างขวางนั้น อาจจะต้องใช้คนเป็นจำนวนมาก และเขียนชุดคำสั่งกันเป็นแรมปี
ดังนั้น นอกจากมนุษย์จะสร้างระบบเครื่องคอมพิวเตอร์แล้ว ยังจำเป็นต้องสร้างระบบการสั่งงานคอมพิวเตอร์อีกด้วย บางครั้ง อาจต้องใช้เงินและแรงงานมากกว่าการสร้างเครื่อง ระบบการสั่งงานนี้ เป็นส่วนหนึ่งที่ทำให้คอมพิวเตอร์มีความสามารถแตกต่างกัน ทั้งยังจำเป็นต้องมีการปรับปรุงแก้ไขให้มีประสิทธิภาพดียิ่งๆ ขึ้นอยู่เสมอ จึงนับได้ว่า ระบบการสั่งงานคอมพิวเตอร์มีความสำคัญมาก ไม่น้อยกว่าระบบเครื่องคอมพิวเตอร์