ยุคของภาษาคอมพิวเตอร์

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

สามารถแบ่งภาษาคอมพิวเตอร์ออกได้เป็น 5 ยุค ดังนี้

โดยสามารถแสดงช่วงระยะเวลาที่เกิดภาษาในยุคต่างๆ และช่วงที่มีความนิยมในภาษานั้น และยุคเสื่อมของภาษานั้น ดังแสดงในภาพที่ 1 จะเห็นว่าเส้นสีม่วงอ่อนแสดงยุคที่คนนิยมใช้ภาษานี้กันมาก แต่เส้นสีเทาแสดงถึงความนิยมที่เสื่อมลง

ภาพแสดงยุคของภาษาคอมพิวเตอร์

1. ภาษาเครื่อง (Machine Language)

ก่อนปี ค.ศ. 1952 มีภาษาคอมพิวเตอร์เพียงภาษาเดียวเท่านั้นคือ ภาษาเครื่อง (Machine Language) ซึ่งเป็นภาษาระดับต่ำที่สุด เพราะใช้เลขฐานสอง ซึ่งประกอบด้วยเลขฐานสองคือ 0 และ 1 ซึ่งจะสัมพันธ์กับการเปิด (On) และการปิด (Off) ของสัญญาณไฟฟ้า ภายในเครื่องคอมพิวเตอร์แทนข้อมูล และคำสั่งต่าง ๆ ทั้งหมด จะเป็นภาษาที่ขึ้นอยู่กับชนิดของเครื่องคอมพิวเตอร์ หรือหน่วยประมวลผลที่ใช้ นั่นคือแต่ละเครื่องก็จะมีรูปแบบของคำสั่ง เฉพาะของตนเอง ซึ่งนักคำนวณและนักเขียนโปรแกรมในสมัยก่อน ต้องรู้จักวิธีที่จะรวมตัวเลขเพื่อแทนคำสั่งต่าง ๆ ทำให้การเขียนโปรแกรมยุ่งยากมาก

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

คำสั่งในภาษาเครื่องจะประกอบด้วย 2 ส่วน คือ

1. โอเปอเรชันโค้ด (Operation Code) เป็นคำสั่งที่สั่งให้คอมพิวเตอร์ปฏิบัติการ เช่นการบวก (Addition) , การลบ (Substraction) เป็นต้น

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

ตัวอย่างของคำสั่งในภาษาเครื่องจะแสดงได้ดังต่อไปนี้

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

2. ภาษาแอสเซมบลี (Assembly Language)

เป็นภาษาที่มีการใช้ตัวอักษรในภาษาอังกฤษมาแทนคำสั่งที่เป็นเลขฐานสอง และเรียกอักษรสัญลักษณ์ที่เป็นคำสั่งนี้ว่า สัญลักษณ์ข้อความ (mnemonic codes) เพื่อให้ง่ายต่อการเขียนและการจดจำมากกว่าภาษาเครื่อง แต่ถึงอย่างไรก็ยังจัดภาษาแอสเซมบลีนี้เป็นภาษาระดับต่ำ ตัวอย่างเช่น

มีการใช้สัญลักษณ์ต่อไปนี้

A มาจาก Add หมายถึงการบวก

S มาจาก Subtract หมายถึงการลบ

C มาจาก Compare หมายถึงการเปรียบเทียบ

MP มาจาก Multiply หมายถึง การคูณ

ST มาจาก Store หมายถึง การเก็บข้อมูลไว้ในความจำ เป็นต้น

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

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

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

3. ภาษาชั้นสูง (High-level Language)

สามารถเรียกได้อีกอย่างว่าเป็นภาษารุ่นที่ 3 (3rd Generation Language หรือ 3GLs) เป็นภาษาที่ถูกสร้างขึ้นมาเพื่อให้สามารถเขียน และอ่านโปรแกรมได้ง่ายขึ้น เนื่องจากมีลักษณะเหมือนภาษาอังกฤษทั่วๆไป และที่สำคัญ คือ ผู้เขียนโปรแกรม ไม่จำเป็นต้องมีความรู้เกี่ยวกับ ระบบฮาร์ดแวร์แต่อย่างใด ตัวอย่างของภาษาประเภทนี้ได้แก่ ภาษาฟอร์แทรน(Fortran) , โคบอล (Cobol) , เบสิก (Basic) , ปาสคาล (Pascal) , ซี(C) , เอดา(ADA) เป็นต้น

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

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

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

4. ภาษาขั้นสูงมาก (Very high-level Language)

สามารถเรียกได้อีกอย่างว่า ภาษาในรุ่นที่ 4 (4GLs : Fourth-Generation Languages) ภาษานี้เป็นภาษาที่อยู่ในระดับสูงกว่าภาษารุ่นที่ 3 มีลักษณะของภาษาที่เป็นธรรมชาติ คล้ายกับภาษาพูดของมนุษย์ จะช่วยในเรื่องของการสร้างแบบฟอร์มบนหน้าจอ เพื่อจัดการเกี่ยวกับข้อมูล รวมไปถึงการออกรายงาน ซึ่งจะมีการจัดการที่ง่ายมากไม่ยุ่งยากเหมือนภาษารุ่นที่3 ตัวอย่างของภาษาในรุ่นที่ 4 ได้แก่ Informix-4GL , Focus , Sybase , InGres เป็นต้น

ลักษณะของ 4GL มีดังต่อไปนี้

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

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

อย่างไรก็ตาม 4GLs ก็สามารถมีรูปแบบเป็น Procedural ได้ด้วย เนื่องจากงานบางงานอาจมีความซับซ้อน จึงต้องอาศัยการเขียนโปรแกรมที่เป็นแบบ Procedural เข้าช่วยด้วย จึงสรุปได้ว่า 4GL จะมีรูปแบบผสมระหว่าง Procedural และ Nonprocedural

2. ส่วนใหญ่จะพบว่า 4GLs มักจะอยู่ควบคู่กับระบบฐานข้อมูล โดยผู้ใช้ระบบฐานข้อมูลจะสามารถจัดการฐานข้อมูลได้โดยผ่านทาง 4GLs นี้

ส่วนประกอบของภาษา 4GLs โดยทั่วไปแล้ว 4GLs จะประกอบด้วยส่วนสำคัญ 3 ส่วนดังต่อไปนี้

  • เครื่องมือช่วยสร้างรายงาน (Report Generators)
    เป็นโปรแกรมสำหรับผู้ใช้ (End-users) ให้สามารถเขียนรายงานอย่างง่ายได้ด้วยตนเอง โดยผู้ใช้สามารถกำหนดเงื่อนไข และข้อมูลที่นำออกมาพิมพ์ในรายงาน รวมถึงรูปแบบของการพิมพ์ไว้ โปรแกรมช่วยสร้างรายงานนี้ จะทำการพิมพ์รายงานตามรูปแบบที่กำหนดไว้ให้
  • ภาษาช่วยค้นหาข้อมูล (Query Languages)
    เป็นภาษาที่ช่วยในการค้นหาหรือดึงข้อมูลจากฐานข้อมูล ภาษานี้จะง่ายต่อการใช้งานมาก เนื่องจากจะอยู่ในรูปแบบที่ใกล้เคียงกับภาษาอังกฤษมาก ตัวอย่างเช่น ภาษา SQL (Structured Query Language)    ภาษา QBE (Query-By-Example)   เช่นค้นหาข้อมูลนักเรียนที่ชื่อ กมล นามสกุล สนิทวงศ์ จากตาราง student ก็เขียนคำสั่งดังนี้ 
    select * from student where name=”กมล” and lname=”สนิทวงศ์”;
  • เครื่องมือช่วยสร้างโปรแกรม (Application Generators)
    จะมีรูปแบบการเขียนโปรแกรมเฉพาะตัว และสามารถเรียกใช้เครื่องมือช่วยสร้างโปรแกรมนี้ทำการแปลง 4 GLs ให้กลายเป็นโปรแกรมภาษารุ่นที่ 3 ได้เช่น ภาษาโคบอล หรือภาษาซี ซึ่งอาจนำภาษาโคบอล หรือภาษาซีที่แปลงแล้วไปพัฒนาต่อ เพื่อใช้กับงานที่ซับซ้อนมาก ๆ ต่อไปได้

ประโยชน์ของภาษา 4GL

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

5. ภาษาธรรมชาติ (National Language)

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

ภาษาธรรมชาตินี้ ถูกสร้างขึ้นมาจากเทคโนโลยีทางด้านระบบผู้เชี่ยวชาญ (Expert System)   ซึ่งเป็นงานที่อยู่ในสาขาปัญญาประดิษฐ์ (Artificial Intelligence)    ในการที่พยายามทำให้คอมพิวเตอร์ เปรียบเสมือนกับเป็นผู้เชี่ยวชาญ คนหนึ่งที่สามารถคิด และตัดสินใจ ได้เช่นเดียวกับมนุษย์ คอมพิวเตอร์สามารถตอบคำถามของมนุษย์ได้อย่างถูกต้อง พร้อมทั้งมีข้อแนะนำต่าง ๆ เพื่อช่วยในการตัดสินใจของมนุษย์ได้อีกด้วย ระบบผู้เชี่ยวชาญนี้จะใช้กับงานเฉพาะด้านใดด้านหนึ่ง เช่นในด้านการแพทย์ ในการพยากรณ์อากาศ ในการวิเคราะห์ทางเคมี การลงทุน ฯลฯ ซึ่งในการนี้จะต้องมีการเก็บรวบรวมข้อมูล และข่าวสารจากผู้เชี่ยวชาญเฉพาะด้านนั้น ๆ และแปลงให้อยู่ในรูปของกฏเกณฑ์ และข้อความจริงต่าง ๆ เก็บไว้ในระบบฐานข้อมูล ของผู้เชี่ยวชาญ ที่เรียกว่า ฐานความรู้ (Knowledge Base)    ซึ่งจะต้องเก็บข้อมูลที่มีอยู่เป็นจำนวนมหาศาล และให้ผู้ใช้สามารถใช้กับภาษาธรรมชาติ ในการดึงข้อมูลจากฐานความรู้นี้ได้ ดังนั้นเราจึงอาจเรียกระบบผู้เชี่ยวชาญนี้ได้อีกอย่างว่า ระบบฐานความรู้ (Knowledge Base System)

ประวัติของภาษาซี  

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

ภาษาซีเป็นภาษาที่เป็นโครงสร้างและใช้ได้กับงานทั่วไป คำสั่งของภาษาซี จะประกอบด้วยพจน์ (term) ซึ่งจะมีลักษณะเหมือนกับนิพจน์ทางพีชคณิต และมีส่วนขยายเป็นคำหลัก (keyword) ในภาษาอังกฤษ เช่น if, else, for, do และ while ดังนั้นภาษาซีจึงมีส่วนคล้ายกับภาษาระดับสูง ที่มีลักษณะเป็น โครงสร้างภาษาอื่น ๆ เช่น ปาสคาล และ ฟอร์แทรน 77 แต่ภาษาซีก็มี คุณสมบัติพิเศษเพิ่มขึ้น นั่นคือมันสามารถใช้งานในระดับต่ำ (low-level) ได้ ดังนั้นมันจึงเปรียบเหมือน สะพานเชื่อมภาษาเครื่องเข้ากับภาษาระดับสูง จากความอ่อนตัวนี้เอง ทำให้ภาษาซีสามารถใช้กับงานด้านโปรแกรมระบบ (system programming) เช่น เขียนโปรแกรมระบบปฏิบัติการ (operating system) หรือใช้กับงานทั่ว ๆ ไป เช่น เขียนโปรแกรมแก้ปัญหาทางคณิตศาสตร์ ที่ซับซ้อน หรือเขียนโปรแกรมเพื่อออกใบเสร็จให้กับลูกค้า เป็นต้น

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

ภาษาซีพัฒนาขึ้นมาในปี 1970 โดย Dennis Ritchie แห่ง Bell Telephone Laboratories, Inc. (ปัจจุบันคือ AT&T Bell Laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ ซึ่งภาษาซีนั้นมี ต้นกำเนิดมาจากภาษา 2 ภาษา คือ ภาษา BCPL (Basic Combine Programming Language) และ ภาษา B ซึ่งต่างก็เป็น ภาษาที่พัฒนาขึ้นมาใน Bell Laboratories เช่นกัน ภาษาซีนั้นถูกใช้งานอยู่ เพียงใน Bell Laboratories จนกระทั่งปี 1978 Brian Kernighan และ Ritchie ได้ร่วมกันคิดปรับปรุงข้อกำหนดต่าง ๆ ของภาษาซีขึ้นใหม่ และเป็นที่รู้จักกันในชื่อของ”K&R C” หลังจากที่ตีพิมพ์ข้อกำหนดของ K&R นักคอมพิวเตอร์มืออาชีพรู้สึก ประทับใจกับคุณสมบัติที่น่าสนใจของภาษาซี และเริ่มส่งเสริมการใช้งาน ภาษาซีมากขึ้น ในกลางปี 1980 ภาษาซี ก็กลายเป็น ภาษาที่ได้รับความนิยม โดยทั่วไป มีการพัฒนาตัวแปลโปรแกรม และตัวแปลคำสั่ง ภาษาซีจำนวนมาก สำหรับคอมพิวเตอร์ทุกขนาด และภาษาซี ก็ถูกนำมาไปใช้ สำหรับพัฒนา โปรแกรมเชิงพาณิชย์เป็นจำนวนมาก ยิ่งไปกว่านั้น โปรแกรมเชิงพาณิชย์ที่เคย พัฒนาขึ้นมาโดยใช้ภาษาอื่น ก็ถูกเขียนขึ้นใหม่ โดยใช้ภาษาซี เนื่องจากความ ต้องการใช้ ความได้เปรียบทางด้านประสิทธิภาพ และความสามารถในการ เคลื่อนย้ายได้ของภาษาซี โดยเฉพาะ การใช้พอยน์เตอร์ ในภาษาซี นับได้ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร์

ตัวแปลโปรแกรมภาษาซีที่ได้รับการพัฒนาขึ้นมาในเชิงพาณิชย์นั้น จะมี ความแตกต่างกับข้อกำหนดของ Kernighan และ Ritchie อยู่บ้าง จาก จุดนี้เองทำให้เกิดความไม่เข้ากันระหว่างตัวแปลโปรแกรมภาษาซีซึ่งก็ทำ ให้สูญเสียคุณสมบัติการเคลื่อนย้ายได้ซึ่งเป็นคุณสมบัติที่สำคัญของภาษา ดังนั้นสถาบันมาตรฐานแห่งชาติอเมริกัน (American National Standards Institute : ANSI ) จึงได้กำหนดมาตรฐานของภาษาซีขึ้นมา จึงทำให้โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนำไปใช้ กับคอมพิวเตอร์ได้ทุกรุ่นที่มาตรฐาน ANSI รับรอง

ข้อเด่นของภาษาซี

  • เป็นภาษาคอมพิวเตอร์ที่มีการพัฒนาขึ้นใช้งานเพื่อเป็นภาษามาตรฐานที่ไม่ขึ้นกับโปรแกรมจัดระบบงานและไม่ขึ้นกับฮาร์ดแวร์
  • เป็นภาษาคอมพิวเตอร์ที่อาศัยหลักการที่เรียกว่า “โปรแกรมโครงสร้าง” จึงเป็นภาษาที่เหมาะกับการพัฒนาโปรแกรมระบบ
  • เป็นคอมไพเลอร์ที่มีประสิทธิภาพสูง ให้รหัสออบเจ็กต์สั้น ทำงานได้รวดเร็ว เหมาะกับงานที่ต้องการ ความรวดเร็วเป็นสำคัญ
  • มีความคล่องตัวคล้ายภาษาแอสแซมบลี ภาษาซีสามารถเขียนแทนภาษาแอสแซมบลีได้ดี ค้นหาที่ผิดหรือ แก้โปรแกรมได้ง่าย ภาษาซีจึงเป็นภาษาระดับสูงที่ทำงานเหมือนภาษาระดับต่ำ
  • มีความคล่องตัวที่จะประยุกต์เข้ากับงานต่างๆ ได้เป็นอย่างดี การพัฒนาโปรแกรม เช่น เวิร์ดโพรเซสซิ่ง สเปรดชีต ดาตาเบส ฯลฯ มักใช้ภาษาซีเป็นภาษาสำหรับการพัฒนา
  • เป็นภาษาที่มีอยู่บนเกือบทุกโปรแกรมจัดระบบงาน มีในเครื่องไมโครคอมพิวเตอร์ตั้งแต่ 8 บิต ไปจนถึง 32 บิต เครื่องมินิคอมพิวเตอร์ และเมนเฟรม
  • เป็นภาษาที่รวมข้อดีเด่นในเรื่องการพัฒนา จนทำให้เป็นภาษาที่มีผู้สนใจมากมายที่จะเรียนรู้หลักการของภาษา และวิธีการเขียนโปรแกรม ตลอดจนการพัฒนางานบนภาษานี้
  • สั่งงานอุปกรณ์ในระบบคอมพิวเตอร์ได้เกือบทุกส่วนของฮาร์ดแวร์ ซึ่งภาษาระดับสูงภาษาอื่นทำงานดังกล่าวได้น้อยกว่า
  • คอมไพเลอร์ภาษาซีทุกโปรแกรมในท้องตลาดจะทำงานอ้างอิง มาตรฐาน(ANSI= American National Standards Institute) เกือบ ทั้งหมด จึงทำให้โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนำไปใช้ กับคอมพิวเตอร์ได้ทุกรุ่นที่มาตรฐาน ANSI รับรอง
  • มีโปรแกรมช่วย (tool box) ที่ช่วยในการเขียนโปรแกรมมาก และราคาไม่แพงหาซื้อได้ง่าย เช่น vitanin c หรืออื่น ๆ
  • สามารถประกาศข้อมูลได้หลายชนิดและหลายรูปแบบ ทำให้สะดวก รวดเร็วต่อการพัฒนาโปรแกรมตามวัตถุประสงค์ของผู้ใช้
  • สามารถเขียนโปรแกรมด้วยเทคนิคแบบโอโอพี (OOP = Object Oriented Programming) ได้หากใช้ภาษาซีรุ่น TURBO C++ ขึ้นไป ทำให้สามารถพัฒนา โปรแกรมประยุกต์เพื่อใช้งานได้กว้างขวางมากยิ่งขึ้นกว่าเดิม

โปรแกรมแปลภาษา   

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

ภาพที่ 2 แสดงขั้นตอนการแปลโปรแกรมภาษาชั้นสูงให้เป็นภาษาเครื่องด้วยคอมไพเลอร์

ประเภทของ object program
Object program เป็นผลลัพธ์ที่ได้จากการแปลของ compiler อาจอยู่ในรูปแบบใดรูปแบบหนึ่ง ดังนี้

1. Absolute machine language program
แปลเป็นภาษาเครื่อง โดยมีการกำหนดตำแหน่งที่อยู่สัมบูรณ์ในหน่วยความจำ ซึ่งมีข้อดีคือ สามารถสั่งให้เครื่องปฏิบัติงานตามคำสั่ง  ได้ทันที

2. Relocatable machine language program
แปลเป็นภาษาเครื่อง โดยไม่มีการกำหนดเนื้อที่ในหน่วยความจำที่แน่นอน เมื่อต้องการให้เครื่องปฏิบัติงานตามคำสั่ง จะต้องทำการเชื่อม ส่วนย่อยๆ เข้าด้วยกัน และต้องกำหนดตำแหน่งที่อยู่สัมบูรณ์ในหน่วยความจำโดยตัว linking / loader ก่อน จึงจะสามารถปฏิบัติตามคำสั่งได้ ซึ่งมีข้อดีคือ สามารถแปล subprogram แยกอิสระจากกันได้ และสามารถเรียก object program อื่น ๆ ที่เคยแปลก่อนหน้านี้ มาใช้งานร่วมกันได้ด้วย

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

ข้อดี  ทำงานได้รวดเร็ว เพราะไม่ต้องแปลรหัสใหม่ทุกครั้ง

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

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

ข้อดี  การประมวลผลรหัสคำสั่งเพื่อดูผลการทำงานได้ทันทีที่ต้องการ โดยไม่ต้องเขียนโปรแกรมถึงบรรทัดสุดท้าย

ข้อจำกัด   ถ้าโปรแกรมมีขนาดใหญ่ มีบรรทัดของรหัสคำสั่งมาก จะประมวลผลช้า เพราะต้องเริ่มแปล ตั้งแต่บรรทัดแรก ของรหัสคำสั่งทุกครั้งที่สั่งให้ประมวลผล

การเลือกใช้ภาษาคอมพิวเตอร์  

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

ภาษา
ลักษณะงานที่เหมาะสม
FORTRAN
งานทางด้านวิทยาศาสตร์
COBOL
งานทางด้านธุรกิจ
BASIC
งานการศึกษา งานธุรกิจ
Pascal
งานการศึกษา งานโปรแกรมระบบ งานวิทยาศาสตร์ งานธุรกิจ
C
งานโปรแกรมระบบ งานทั่วไป

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

  1. พิจารณาจากจุดเด่นประสิทธิภาพของคำสั่งงานของแต่ละภาษา เปรียบเทียบกับลักษณะงาน เช่น สร้างโปรแกรมระบบงานคำนวณทางวิศวกรรม อาจเลือกใช้ภาษาซี หรือภาษาปาสคาล
  2. พิจารณาลักษณะการประมวลผล เช่น ระบบงานต้องประมวลผลบนระบบเครือข่าย อาจเลือกใช้ภาษาวิชวลเบสิก ในรุ่นของโปรแกรม ที่มีคำสั่งควบคุมการทำงานได้
  3. พิจารณาคุณสมบัติของเครื่องคอมพิวเตอร์ และรุ่นของระบบปฏิบัติการที่ใช้ควบคุม เพื่อเลือกภาษาคอมพิวเตอร์ ที่สามารถใช้ร่วมกันกับระบบได้
  4. ควรเลือกภาษาที่ทีมงานพัฒนาระบบงานโปรแกรมมีความชำนาญอยู่แล้ว เพื่อไม่ต้องเสียเวลา เริ่มต้นศึกษาเรียนรู้ใหม่ หรือหากเป็นภาษาใหม่ ควรเป็นภาษาที่มีลักษณะใกล้เคียงกับความรู้เดิม
  5. ควรเลือกภาษาที่ลักษณะเป็นภาษาโครงสร้าง มีความยืดหยุ่นสูง เอื้ออำนวยความสะดวก ในการปรับปรุง พัฒนาระบบงานในอนาคต
  6. หากระบบงานต้องการระบบความปลอดภัย เรื่องการเข้าถึงข้อมูล ต้องคัดเลือกภาษาคอมพิวเตอร์ที่มีประสิทธิภาพในเรื่องนี้ด้วย
  7. พิจารณางบประมาณ ใช้จัดหาภาษาคอมพิวเตอร์ ที่มีลิขสิทธิ์ถูกต้องมาใช้งาน เพื่อป้องกันปัญหา ทางกฏหมาย และโดยเฉพาะอย่างยิ่ง จะไม่ก่อปัญหาเมื่อขยาย พัฒนาระบบงานเพิ่มมากขึ้นในอนาคต
  8. เป็นภาษาคอมพิวเตอร์ที่ได้รับความนิยมใช้งานทั่วไป เพื่อศึกษารวบรวมข้อมูล และป้องกันปัญหา ที่อาจจะเกิดขึ้นในอนาคต และมีความเชื่อมั่นว่า จะมีผู้เชี่ยวชาญให้คำปรึกษา หากเกิดปัญหาได้

สำหรับภาษาคอมพิวเตอร์ แต่ละภาษาก็มีข้อดี ข้อด้อยแต่ต่างกันไปพอสรุปได้ดังนี้

ภาษาเบสิก (BASIC : Beginner’s All-purpose Symbolic Instruction Code) เป็นภาษาในระยะเริ่มแรกที่พัฒนาขึ้นมาเพื่อใช้ในห้องปฏิบัติการของสถาบันการศึกษา เพื่อฝึกทักษะการเขียนรหัสคำสั่ง ควบคุมการทำงานของ คอมพิวเตอร์ขนาดเล็กคือ ไมโครคอมพิวเตอร์

ข้อดี คือรูปแบบคำสั่งใช้งานสั้น มีจำนวนคำสั่งไม่มาก กฎเกณฑ์การใช้คำสั่งน้อย ใช้ระยะเวลาศึกษาเรียนรู้สั้น เหมาะสมที่จะใช้ใน การเรียนการสอน เพื่อฝึกทักษะการเขียนรหัสคำสั่งควบคุมการทำงานของระบบ

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

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

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

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

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

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

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

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

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

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

ใส่ความเห็น