ในหัวข้อเรื่องการเขียนโปรแกรมจะกล่าวถึงเนื้อหา 2 ส่วน
คือความหมายของโปรแกรมคอมพิวเตอร์ และภาษาคอมพิวเตอร์ดังมีรายละเอียดต่อไปนี้
1.1.3.1 ความหมายของโปรแกรมคอมพิวเตอร์
โปรแกรมคอมพิวเตอร์ (computer program) หมายถึง ชุดของคำสั่งที่เขียนขึ้นเพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ ส่วนการเขียนโปรแกรม (programming) หมายถึง การเขียนชุดคำสั่งด้วยภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง เพื่อให้คอมพิวเตอร์ทำงานตามโปรแกรมที่เราเขียนขึ้น
ดังนั้น ผู้เขียนโปรแกรม (programmer) จึงจำเป็นต้องเรียนรู้ภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งหรือหลายภาษา แล้วฝึกฝนทักษะการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ที่ต้องการใช้งานให้เกิดความชำนาญจึงจะสามารถเขียนโปรแกรมคอมพิวเตอร์ได้อย่างมีประสิทธิภาพ
โปรแกรมคอมพิวเตอร์ (computer program) หมายถึง ชุดของคำสั่งที่เขียนขึ้นเพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ ส่วนการเขียนโปรแกรม (programming) หมายถึง การเขียนชุดคำสั่งด้วยภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง เพื่อให้คอมพิวเตอร์ทำงานตามโปรแกรมที่เราเขียนขึ้น
ดังนั้น ผู้เขียนโปรแกรม (programmer) จึงจำเป็นต้องเรียนรู้ภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งหรือหลายภาษา แล้วฝึกฝนทักษะการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ที่ต้องการใช้งานให้เกิดความชำนาญจึงจะสามารถเขียนโปรแกรมคอมพิวเตอร์ได้อย่างมีประสิทธิภาพ
1.1.3.2 ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์ (computer language) หมายถึง ภาษาที่สามารถนำมาใช้เขียนโปรแกรมคอมพิวเตอร์ได้ ซึ่งแต่ละภาษามีรายละเอียดดังต่อไปนี้
ภาษาคอมพิวเตอร์ (computer language) หมายถึง ภาษาที่สามารถนำมาใช้เขียนโปรแกรมคอมพิวเตอร์ได้ ซึ่งแต่ละภาษามีรายละเอียดดังต่อไปนี้
1) ภาษาเครื่อง
(machine language)
ภาษาเครื่องจัดเป็นภาษาคอมพิวเตอร์ภาษาเดียวที่สามารถติดต่อกับคอมพิวเตอร์ได้โดยตรง เพราะว่าการเขียนคำสั่งและข้อมูลในภาษาเครื่องใช้ระบบเลขฐานสอง (binary number system) คือใช้ตัวเลข 0 และ 1 เท่านั้น ทำให้เครื่องคอมพิวเตอร์สามารถทำงานได้รวดเร็ว ส่วนข้อเสียของภาษาเครื่อง คือ เครื่องคอมพิวเตอร์ต่างชนิดกันมีลักษณะการเขียนภาษาเครื่องที่แตกต่างกันไป และเกิดความยุ่งยากในการปรับปรุงแก้ไข ทำให้เกิดความไม่สะดวกในการใช้งาน ดังนั้นภาษานี้จึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม
ภาษาเครื่องจัดเป็นภาษาคอมพิวเตอร์ภาษาเดียวที่สามารถติดต่อกับคอมพิวเตอร์ได้โดยตรง เพราะว่าการเขียนคำสั่งและข้อมูลในภาษาเครื่องใช้ระบบเลขฐานสอง (binary number system) คือใช้ตัวเลข 0 และ 1 เท่านั้น ทำให้เครื่องคอมพิวเตอร์สามารถทำงานได้รวดเร็ว ส่วนข้อเสียของภาษาเครื่อง คือ เครื่องคอมพิวเตอร์ต่างชนิดกันมีลักษณะการเขียนภาษาเครื่องที่แตกต่างกันไป และเกิดความยุ่งยากในการปรับปรุงแก้ไข ทำให้เกิดความไม่สะดวกในการใช้งาน ดังนั้นภาษานี้จึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม
ตัวอย่างที่ 1.18 แสดงคำสั่งของภาษาเครื่องมีดังนี้
ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง 9 + 3 แสดงได้ดังนี้
การบวกแทนด้วยรหัส 10101010
เลข 9 เปลี่ยนเป็นเลขฐานสอง 00001001
เลข 3 เปลี่ยนเป็นเลขฐานสอง 00000011
ดังนั้น คำสั่ง 9 + 3 เขียนเป็นภาษาเครื่องได้ดังนี้
ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง 9 + 3 แสดงได้ดังนี้
การบวกแทนด้วยรหัส 10101010
เลข 9 เปลี่ยนเป็นเลขฐานสอง 00001001
เลข 3 เปลี่ยนเป็นเลขฐานสอง 00000011
ดังนั้น คำสั่ง 9 + 3 เขียนเป็นภาษาเครื่องได้ดังนี้
00001001
10101010 00000011
2) ภาษาแอสเซมบลี
(assembly language)
ภาษาแอสเซมบลีหรือจะเรียกชื่ออีกอย่างว่าภาษาระดับต่ำ ซึ่งเป็นภาษาคอมพิวเตอร์ที่พัฒนาขึ้นมาเพื่อให้ผู้เขียนโปรแกรมสามารถเขียนโปรแกรมติดต่อกับคอมพิวเตอร์ได้ง่ายกว่าภาษาเครื่อง ส่วนการเขียนคำสั่งในภาษาแอสเซมบลีจะใช้คำย่อของภาษาอังกฤษและอ้างถึงตำแหน่งที่อยู่ภายในคอมพิวเตอร์เป็นส่วนใหญ่ ได้แก่ MOVE, DC, DS, CL10 เป็นต้น ผู้ที่ต้องใช้ภาษาแอสเซมบลีส่วนมากจะเป็นวิศวกรคอมพิวเตอร์ ดังนั้นภาษาแอสเซมบลีจึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม
ภาษาแอสเซมบลีหรือจะเรียกชื่ออีกอย่างว่าภาษาระดับต่ำ ซึ่งเป็นภาษาคอมพิวเตอร์ที่พัฒนาขึ้นมาเพื่อให้ผู้เขียนโปรแกรมสามารถเขียนโปรแกรมติดต่อกับคอมพิวเตอร์ได้ง่ายกว่าภาษาเครื่อง ส่วนการเขียนคำสั่งในภาษาแอสเซมบลีจะใช้คำย่อของภาษาอังกฤษและอ้างถึงตำแหน่งที่อยู่ภายในคอมพิวเตอร์เป็นส่วนใหญ่ ได้แก่ MOVE, DC, DS, CL10 เป็นต้น ผู้ที่ต้องใช้ภาษาแอสเซมบลีส่วนมากจะเป็นวิศวกรคอมพิวเตอร์ ดังนั้นภาษาแอสเซมบลีจึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม
ตัวอย่างที่ 1.19 แสดงคำสั่งของภาษาแอสเซมบลีมีดังนี้
ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง 9 + 3 แสดงได้ดังนี้
MOV AX, 9
MOV BX, 3
ADD AX, BX
ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง 9 + 3 แสดงได้ดังนี้
MOV AX, 9
MOV BX, 3
ADD AX, BX
3) ภาษาระดับสูง
(high level language)
ภาษาระดับสูงเป็นภาษาที่ผู้เขียนโปรแกรมสามารถเข้าใจได้ง่ายกว่าภาษาแอสเซมบลีและภาษาเครื่อง ทั้งนี้ก็เพราะการเขียนคำสั่งของภาษาระดับสูงมีลักษณะเป็นภาษาอังกฤษ ซึ่งอ่านแล้วเข้าใจได้ง่ายกว่าภาษาแอสเซมบลี เช่น ใช้คำว่า READ, WRITE, PRINT, COMPUTE เป็นต้น ตัวอย่างของภาษาระดับสูงได้แก่ ภาษาฟอร์แทรน (FORTRAN), ภาษาโคบอล (COBOL), ภาษาเบสิก (BASIC), ภาษาปาสคาล (PASCAL) และภาษาซี (C) เป็นต้น ซึ่งแต่ละภาษามีประวัติพอสังเขปดังต่อไปนี้
ภาษาระดับสูงเป็นภาษาที่ผู้เขียนโปรแกรมสามารถเข้าใจได้ง่ายกว่าภาษาแอสเซมบลีและภาษาเครื่อง ทั้งนี้ก็เพราะการเขียนคำสั่งของภาษาระดับสูงมีลักษณะเป็นภาษาอังกฤษ ซึ่งอ่านแล้วเข้าใจได้ง่ายกว่าภาษาแอสเซมบลี เช่น ใช้คำว่า READ, WRITE, PRINT, COMPUTE เป็นต้น ตัวอย่างของภาษาระดับสูงได้แก่ ภาษาฟอร์แทรน (FORTRAN), ภาษาโคบอล (COBOL), ภาษาเบสิก (BASIC), ภาษาปาสคาล (PASCAL) และภาษาซี (C) เป็นต้น ซึ่งแต่ละภาษามีประวัติพอสังเขปดังต่อไปนี้
- ภาษาฟอร์แทรน (FORTRAN ย่อมาจาก FORmula TRANslator) พัฒนาโดยบริษัท IBM ระหว่างปี ค.ศ.1954
ถึง ค.ศ.1957 ภาษานี้ใช้สำหรับการพัฒนาโปรแกรมประยุกต์ด้านวิทยาศาสตร์และวิศวกรรมศาสตร์
ที่ต้องใช้ในการคำนวณสมการคณิตศาสตร์ที่ซับซ้อน ปัจจุบันภาษาฟอร์แทรนยังเป็นที่นิยมใช้ ในการพัฒนาโปรแกรมด้านวิทยาศาสตร์และวิศวกรรมศาสตร์
- ภาษาโคบอล (COBOL ย่อมาจาก Common Business Oriented
Language) พัฒนาขึ้นในปี ค.ศ.1959
เป็นภาษาที่พัฒนาขึ้นมาเพื่อใช้ในการพัฒนาโปรแกรมประยุกต์ด้านธุรกิจและการค้า
ปัจจุบันโปรแกรมที่ใช้ในด้านธุรกิจจำนวนมากยังเป็นโปรแกรมที่พัฒนามาจากภาษาโคบอล
- ภาษาเบสิก (BASIC ย่อมาจาก Beginners All-purpose
Symbolic Instructional Code) เป็นภาษาที่พัฒนาขึ้นโดยมีจุดประสงค์เพื่อให้ผู้เริ่มต้นพัฒนาโปรแกรมสามารถเรียนรู้และเข้าใจการพัฒนาโปรแกรมอย่างง่าย
ภาษาเบสิกเป็นภาษาคอมพิวเตอร์ภาษาแรกที่ใช้เครื่องไมโครคอมพิวเตอร์
ภาษาคอมพิวเตอร์ที่พัฒนาขึ้นในยุคแรก ยังมีข้อจำกัดในการที่จะพัฒนาโปรแกรมขนาดใหญ่
ทั้งนี้เนื่องจากภาษาคอมพิวเตอร์เหล่านั้นขาดโครงสร้างที่ดี
ทำให้การพัฒนาโปรแกรมที่มีขนาดใหญ่และมีความซับซ้อนเป็นไปได้ยาก
ในช่วงต้นปี ค.ศ.1970 จึงมีภาษาคอมพิวเตอร์ที่เป็นภาษาเชิงกระบวนการ (Procedural หรือ Structural Language) เกิดขึ้น
ภาษาคอมพิวเตอร์ประเภทนี้จะมีความยืดหยุ่นในการพัฒนาโปรแกรม
ทำให้สามารถแก้ไขและบำรุงรักษาได้ง่าย เนื่องจากโปรแกรมถูกแยกออกเป็นส่วน
ๆ ภาษาคอมพิวเตอร์ที่เป็นภาษาเชิงกระบวนการที่สำคัญคือ
- ภาษาปาสคาล (Pascal) พัฒนาโดย Niclaus Wirth ในปี
ค.ศ.1971 โดยมีจุดประสงค์เพื่อใช้ในการสอนการเขียนโปรแกรมภาษาเชิงกระบวนการ
ในมหาวิทยาลัย แต่เนื่องจากภาษาปาสคาลไม่มีคุณลักษณะที่จะสนับสนุนการพัฒนาโปรแกรมด้านธุรกิจและอุตสาหกรรมจึงไม่ได้รับความนิยมมากนัก
- ภาษาซี (C) พัฒนาขึ้นในช่วงเดียวกับภาษาปาสคาล โดยนักวิจัยที่ห้องปฏิบัติการ
AT&T Bell ซึ่งได้นำเอาจุดเด่นของภาษา
BCPL และภาษา B มาใช้และได้เพิ่มคุณลักษณะและชนิดข้อมูลอื่นเข้ามาด้วย
เดิมภาษาซีถือว่าเป็นภาษาคอมพิวเตอร์ที่สำคัญในการพัฒนาโปรแกรมบนระบบปฏิบัติการยูนิกส์
(Unix) ซึ่งเป็นภาษาคอมพิวเตอร์ที่สามารถสร้างโปรแกรมประยุกต์ที่ทำงานได้รวดเร็วมาก
เมื่อเทียบกับภาษาคอมพิวเตอร์อื่น ๆ
4) ภาษาระดับสูงมาก
(very high level language)
ระดับสูงมาก บางครั้งเรียกว่า Fourth Gerneration Languages (4GLs) เป็นภาษาที่มีลักษณะสำคัญ คือ ผู้เขียนโปรแกรมไม่ต้องบอกวิธีการทำงานโดยละเอียด เพียงแต่ระบุคำสั่งให้ทำงานสั้น ๆ ให้ภาษาระดับสูงมากเข้าใจก็เพียงพอ ส่วนวิธีการคำนวณหรือการทำงานภาษาระดับสูงมากจะเป็นผู้จัดการเองทั้งสิ้น บางครั้งเรียกว่า non-procedure language
ตัวอย่างภาษาระดับสูงมาก ได้แก่ ภาษา SQL (Structured Query Langauge) ซึ่งนิยมใช้กันในซอร์ฟแวร์พัฒนาระบบจัดการฐานข้อมูล เช่น ORACLE เป็นต้น
ระดับสูงมาก บางครั้งเรียกว่า Fourth Gerneration Languages (4GLs) เป็นภาษาที่มีลักษณะสำคัญ คือ ผู้เขียนโปรแกรมไม่ต้องบอกวิธีการทำงานโดยละเอียด เพียงแต่ระบุคำสั่งให้ทำงานสั้น ๆ ให้ภาษาระดับสูงมากเข้าใจก็เพียงพอ ส่วนวิธีการคำนวณหรือการทำงานภาษาระดับสูงมากจะเป็นผู้จัดการเองทั้งสิ้น บางครั้งเรียกว่า non-procedure language
ตัวอย่างภาษาระดับสูงมาก ได้แก่ ภาษา SQL (Structured Query Langauge) ซึ่งนิยมใช้กันในซอร์ฟแวร์พัฒนาระบบจัดการฐานข้อมูล เช่น ORACLE เป็นต้น
5) ภาษาระดับธรรมชาติ
(natural language)
ภาษาธรรมชาติจะเกี่ยวข้องกับระบบฐานความรู้ (knowledge based system ) และกฎอ้างอิง (inference rules) เพียงแต่ผู้ใช้ภาษาธรรมชาติป้อนคำถามผ่านเข้าไปในคอมพิวเตอร์ที่มีภาษาธรรมชาติก็จะทำการวิเคราะห์คำถามแล้วไปค้นหาคำตอบจากระบบฐานความรู้ที่เก็บไว้
ตัวอย่างของภาษาธรรมชาติ ได้แก่ ภาษา PROLOG และภาษา LISP (List Processing Language)
ภาษาธรรมชาติจะเกี่ยวข้องกับระบบฐานความรู้ (knowledge based system ) และกฎอ้างอิง (inference rules) เพียงแต่ผู้ใช้ภาษาธรรมชาติป้อนคำถามผ่านเข้าไปในคอมพิวเตอร์ที่มีภาษาธรรมชาติก็จะทำการวิเคราะห์คำถามแล้วไปค้นหาคำตอบจากระบบฐานความรู้ที่เก็บไว้
ตัวอย่างของภาษาธรรมชาติ ได้แก่ ภาษา PROLOG และภาษา LISP (List Processing Language)
1.1.4 การทดสอบ
และแก้ไข โปรแกรม
(testing and editing program)
หลังจากที่เราเขียนโปรแกรมเสร็จแล้ว ขั้นตอนต่อไป คือ การทดสอบโปรแกรมที่เขียนขึ้นซึ่งอาจพบความผิดพลาดได้ 2 ชนิด ดังนี้
1) ความผิดพลาดทางไวยากรณ์ภาษา (syntax error) เป็นความผิดพลาดที่เกิดจากการเขียนคำสั่งของภาษาคอมพิวเตอร์ผิด ตัวอย่างเช่น คำสั่ง printf( ) ในภาษา C ต้องเขียนด้วยตัวอักษรตัวเล็ก แต่เขียนเป็น PRINTF( ) เป็นต้น โดยส่วนมากความผิดพลาดทางไวยากรณ์ จะถูกตรวจสอบพบเมื่อมีการแปลโปรแกรม (compile) ให้เป็นภาษาเครื่อง ซึ่งเราสามารถแก้ไขโดยการเขียนคำสั่งให้ถูกต้องตามไวยากรณ์ของภาษานั้น ๆ
หลังจากที่เราเขียนโปรแกรมเสร็จแล้ว ขั้นตอนต่อไป คือ การทดสอบโปรแกรมที่เขียนขึ้นซึ่งอาจพบความผิดพลาดได้ 2 ชนิด ดังนี้
1) ความผิดพลาดทางไวยากรณ์ภาษา (syntax error) เป็นความผิดพลาดที่เกิดจากการเขียนคำสั่งของภาษาคอมพิวเตอร์ผิด ตัวอย่างเช่น คำสั่ง printf( ) ในภาษา C ต้องเขียนด้วยตัวอักษรตัวเล็ก แต่เขียนเป็น PRINTF( ) เป็นต้น โดยส่วนมากความผิดพลาดทางไวยากรณ์ จะถูกตรวจสอบพบเมื่อมีการแปลโปรแกรม (compile) ให้เป็นภาษาเครื่อง ซึ่งเราสามารถแก้ไขโดยการเขียนคำสั่งให้ถูกต้องตามไวยากรณ์ของภาษานั้น ๆ
2) ความผิดพลาดทางตรรกะ (logical
error) เป็นความผิดพลาดที่เกิดจากการลำดับการทำงานผิดหรือป้อนสูตรคำนวณผิด
ตัวอย่างเช่น ต้องการหาค่า X = X + Y แต่ป้อนสูตรเป็น X = X * Y อย่างนี้
เป็นต้น วิธีการตรวจหาความผิดพลาดแบบนี้
คือ ตรวจสอบการคำนวณผลลัพธ์ของโปรแกรมว่าตรงกับผลลัพธ์ที่คำนวณด้วยมือหรือเครื่องคิดเลขหรือไม่
ถ้าไม่ตรงกันแสดงว่าเกิดความผิดพลาดทางตรรกะขึ้น
วิธีการแก้ไขก็คือ การแก้ไขสูตรให้ถูกต้อง
หรือแก้ไขลำดับการทำงานให้ถูกต้อง
ดังนั้น จะเห็นได้ว่าผู้เขียนโปรแกรมจะต้องทำการทดสอบโปรแกรมและแก้ไขโปรแกรมให้สามารถทำงานได้ตามที่ต้องการ
ดังนั้น จะเห็นได้ว่าผู้เขียนโปรแกรมจะต้องทำการทดสอบโปรแกรมและแก้ไขโปรแกรมให้สามารถทำงานได้ตามที่ต้องการ
1.1.5 การจัดทำเอกสารประกอบ
และการบำรุงรักษาโปรแกรม (documentation
and maintenance program)
เมื่อผู้เขียนโปรแกรมได้ทำการทดสอบโปรแกรมและแก้ไขความผิดพลาดที่เกิดขึ้นเรียบร้อยแล้ว ขั้นตอนต่อไปก็ควรจัดทำคู่มือการใช้โปรแกรม เพราะจะทำให้ผู้ใช้โปรแกรมสามารถใช้งานได้ถูกต้อง โดยคู่มือการใช้โปรแกรมที่ดีควรจัดทำในลักษณะที่แสดงการทำงานเป็นขั้นตอน ผู้ใช้โปรแกรมสามารถปฏิบัติตามได้จริง ส่วนการบำรุงรักษาโปรแกรมที่พัฒนาขึ้นก็ต้องมีคำแนะนำให้ผู้ใช้โปรแกรมปฏิบัติ ตัวอย่างเช่น การเก็บโปรแกรมต้นฉบับ ควรเก็บไว้ในกล่องที่มิดชิด ป้องกันฝุ่นได้ ไม่ควรเก็บไว้บนโต๊ะทำงาน ไม่ควรเก็บไว้ในรถยนต์เพราะอาจถูกอากาศร้อนทำให้เสียได้ นอกจากนี้ต้องมีการสำเนาโปรแกรมต้นฉบับเอาไว้ อย่างน้อย 1 ชุด แล้วนำชุดที่สำเนาไปใช้ ไม่ควรใช้โปรแกรมต้นฉบับโดยตรง ควรเก็บเอาไว้สำหรับกรณีที่โปรแกรมสำเนาเกิดปัญหาจะได้นำโปรแกรมต้นฉบับมาทำสำเนาและใช้งานได้ทันที
เมื่อผู้เขียนโปรแกรมได้ทำการทดสอบโปรแกรมและแก้ไขความผิดพลาดที่เกิดขึ้นเรียบร้อยแล้ว ขั้นตอนต่อไปก็ควรจัดทำคู่มือการใช้โปรแกรม เพราะจะทำให้ผู้ใช้โปรแกรมสามารถใช้งานได้ถูกต้อง โดยคู่มือการใช้โปรแกรมที่ดีควรจัดทำในลักษณะที่แสดงการทำงานเป็นขั้นตอน ผู้ใช้โปรแกรมสามารถปฏิบัติตามได้จริง ส่วนการบำรุงรักษาโปรแกรมที่พัฒนาขึ้นก็ต้องมีคำแนะนำให้ผู้ใช้โปรแกรมปฏิบัติ ตัวอย่างเช่น การเก็บโปรแกรมต้นฉบับ ควรเก็บไว้ในกล่องที่มิดชิด ป้องกันฝุ่นได้ ไม่ควรเก็บไว้บนโต๊ะทำงาน ไม่ควรเก็บไว้ในรถยนต์เพราะอาจถูกอากาศร้อนทำให้เสียได้ นอกจากนี้ต้องมีการสำเนาโปรแกรมต้นฉบับเอาไว้ อย่างน้อย 1 ชุด แล้วนำชุดที่สำเนาไปใช้ ไม่ควรใช้โปรแกรมต้นฉบับโดยตรง ควรเก็บเอาไว้สำหรับกรณีที่โปรแกรมสำเนาเกิดปัญหาจะได้นำโปรแกรมต้นฉบับมาทำสำเนาและใช้งานได้ทันที