Thursday, November 15, 2007

ภาษาธรรมชาติ

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

ภาษาชั้นสูงมาก (Very high - Level Language)

สามารถเรียกได้อีกอย่างว่าภาษาในรุ่นที่4 (4GLs:Fourth Generation Languages)ภาษานี้เป็นภาษาที่อยู่ในระดับที่สูงกว่าภาษารุ่นที่3มีลักษณะของภาษาในรุ่นที่เป็นธรรมชาติคล้ายๆกับภาษาพูดของมนุษย์จะช่วย ในเรื่องของการสร้างแบบฟอร์มบนหน้าจอเพื่อจัดการเกี่ยวกับข้อมูล รวมไปถึงการออกรายงาน ซึ่งจะมีการจัดการ ที่ง่ายมากไม่ยุ่งยากเหมือนภาษารุ่นที่3 ตัวอย่างของภาษาในรุ่นที่ 4 ได้แก่ Informix-4GL, Focus, Sybase, InGres เป็นต้น ลักษณะของ 4GL มีดังต่อไปนี้ เป็นภาษาแบบ Nonprocedural ซึ่งหมายความว่าผู้ใช้เพียงแต่บอกว่าต้องการอะไร แต่ไม่ต้องบอกถึงรายละเอียดว่าต้องทำอย่างไร คอมพิวเตอร์จะเป็นผู้จัดการให้เองหมด ตัวอย่างเช่น ถ้าต้องการสร้างแบบฟอร์มการรับข้อมูลจาก ผู้ใช้ผู้เขียนโปรแกรมเพียงแต่ทำการออกแบบหน้าตาของแบบฟอร์มนั้นบนโปรแกรมอิดิเตอร์(Editor)ใดๆ และเก็บ เป็นไฟล์ไว้เมื่อจะเรียกใช้งานแบบฟอร์มนั้นเพ​ียงแต่ใช้คำสั่งเปิดไฟล์นั้นขึ้นมาแสดงบนหน้าจอคอมพิวเตอร์ได้โดยทันทีซึ่งต่างจากภาษารุ่นที่3ซึ่งเป็นแบบ Proceduralผู้เขียนโปรแกรมจะต้องเขียนรายละเอียดของโปรแกรม ทั้งหมดว่าที่บรรทัดนี้คอลัมน์นี้จะให้แสดงข้อความหรือข​้อมูลอะไรออกมาซึ่งถ้าต่อไปจะมีการปรับเปลี่ยนหน้าตา ของแบบฟอร์ม ก็จะเป็นเรื่องที่ยุ่งยากอย่างยิ่ง หรือในการสร้างรายงานด้วย 4GLs ก็สามารถทำได้อย่างง่ายดายเพียง แต่ระบุลงไปว่าต้องการรายงานอะไร มีข้อมูลใดที่จะนำมาแสดงบ้าง โดยไม่ต้องบอกถึงวิธีการสร้าง หรือการดึงข้อมูล แต่อย่างใด 4GLsจะจัดการให้เองหมด ส่วนใหญ่จะพบว่า 4GLs มักจะอยู่ควบคู่กับระบบฐานข้อมูล โดยผู้ใช้ระบบฐานข้อมูลจะสามารถจัดการฐานข้อม​ูล ได้โดยผ่านทาง 4GLs นี้ ส่วนประกอบของภาษา 4GLs โดยทั่วไปแล้ว 4GLs จะประกอบด้วยส่วนสำคัญ 3 ส่วนดังต่อไปนี้ เครื่องช่วยสร้างรายงาน (Report Generators) หรืออาจเรียกได้อีกอย่างว่า เครื่องมือช่วยเขียนรายงาน (Report Writer)เป็นโปรแกรมสำหรับผู้ใช้(end - users)ให้สามารถสร้างรายงานอย่างง่ายได้ด้วยตนเอง โดยผู้ใช้สามารถกำหนดเงื่อนไขและข้อมูลที่จะออกมาพิมพ์ในรายงาน รวมไปถึงรูปแบบ (format)ของการพิมพ์ไว้ โปรแกรมช่วยสร้างรายงานนี้จะทำการพิมพ์รายงานตามรูปแบบที่เรากำหนดไว้ให้ ภาษาช่วยค้นหาข้อมูล(Query Languages)เป็นภาษาที่ช่วยในการค้นหาหรือดึงข้อมูลจากฐานข้อมูล ภาษานี้จะง่ายต่อการใช้งานมาก เนื่องจากจะอยู่ในรูปแบบที่ ใกล้เคียงกับภาษาอังกฤษมาก ตัวอย่างของภาษาช่วยค้นหาข้อมูลนี้ได้แก่ ภาษา SQL (Structured Query Language) ภาษา QBE (Query - By - Example)และIntellect เป็นต้น เครื่องมือช่วยสร้างโปรแกรม(Application Generators) 4GLs จะมีรูปแบบการเขียนโปรแกรมเฉพาะตัว และสามารถเรียกใช้เครื่องมือช่วยสร้างโปรแกรมนี้ทำการแปลง 4GLs ให้กลายเป็นโปรกรมในภาษารุ่นที่ 3 ได้ เช่น ภาษาโคบอล หรือ ภาษาซี เป็นต้น ซึ่งอาจนำภาษาโคบอล หรือซีที่แปลงได้ ไปพัฒนาต่อเพื่อใช้กับงานที่มีความซับซ้อนมากๆ ต่อไปได้ ประโยชน์ของ 4GL เป็นภาษาที่ง่ายต่อการเรียนรู้ คำสั่งแต่ละคำสั่งสื่อความหมายได้อย่างชัดเจน ดังนั้น จึงสามารถใช้เวลาในการศึกษาสั้นกว่าภาษารุ่นท​ี่ 3 ประหยัดเวลาในการเขียนโปรแกรมได้มาก เนื่องจาก 1 คำสั่งของ 4GL ถ้าต้อง เขียนด้วยภาษารุ่นที่ 3 อาจต้องเขียนถึง 100 กว่าคำสั่งในการทำงานแบบเดียวกัน สนับสนุนระบบจัดการฐานข้อมูล ทำให้สามารถจัดการกับข้อมูลได้อย่างสะดวก และรวดเร็ว สามารถสร้างแบบฟอร์มเพื่อจัดการกับข้อมูลในฐานข้อมูล และออกรายงานได้ อย่างง่ายดาย ไม่ยุ่งยาก มีเครื่องมือการใช้งานเพื่ออำนวยความสะดวกในการเขียนโปรแกรมมากพอสมควร สามารถทำงานได้ในลักษณะ Interactive คือมีการโต้ตอบกับผู้ใช้ได้ทันที

ภาษาระดับสูง

สามารถเรียกได้อีกอย่างว่าเป็นภาษารุ่นที่3(3rd Generation Languages หรือ 3GLs) เป็นภาษาที่ถูกสร้างขึ้นมาเพื่อให้สามารถเขียนและอ่านโปรแกรมได้ง่ายขึ้น เนื่องจากมีลักษณะเหมือนภาษาอังกฤษทั่วๆไปและที่สำคัญคือผู้เขียนโปรแกรมไม่จำเป็นต้องม​ีความรู้เกี่ยวกับระบบฮาร์ดแวร์แต่อย่างใด ตัวอย่างของภาษาประเภทนี้ได้แก่ ภาษาฟอร์แทรน(FORTRAN) โคบอล(COBOL) เบสิก (BASIC) ปาสคาล(PASCAL) ซี(C) เอดา(ADA) อย่างไรก็ตามโปรแกรมที่ถูกเขียนด้วยภาษาประเภทนี้จะทำงานได้ ก็ต่อเมื่อมีการแปลงให้เป็นภาษาเครื่องเสียก่อน ซึ่งวิธีการแปลงจากภาษาชั้นสูงให้เป็นภาษาเคร​ื่องนั้น จะทำได้โดยใช้โปรแกรมที่เรียกว่า คอมไพเลอร์(Compiler)หรืออินเตอร์พรีเตอร์(Interpreter)อย่างใดอย่างหนึ่ง โดยภาษาชั้นสูงแต่ภาษาจะมีตัวแปลภาษาเฉพาะเป็นของตัวเอง ดังนั้นจึงไม่สามารถนำตัวแปลภาษาที่เรียกว่าโคบอลคอมไพเลอร์ไม่สามารถนำคอมไพเลอร์ของภาษาโคบอลนี้ไปใช้แปลภาษาปาสคาลได้ เป็นต้น สำหรับความแตกต่างระหว่างคอมไพเลอร์และอินเตอร์พรีเตอร์จะมีดังต่อไปนี้ คอมไพเลอร์(Compiler)จะทำการแปลโปรแกรมทั้งโปรแกรมให้เป็นภาษาเครื​่องทีเดียว การแปลนี้จะเป็นการตรวจสอบไวยากรณ์ของภาษา ถ้ามีข้อผิดพลาดทางไวยากรณ์ของภาษาเกิดขึ้นก็จะแจ้งให้ทราบ เรียกข้อผิดพลาดทางไวยากรณ์ของภาษา(Syntax Error) นี้ได้ว่าเป็น ข้อความไดแอคนอสติค(Diagnostic Message)เพื่อให้ผู้เขียนโปรแกรมทำการแก้ไขให้ถูกต้อง แล้วจึงค่อยสั่งให้แปลใหม่ โปรแกรมที่ยังไม่ผ่านการแปลจะเรียกว่า ซอร์สโปรแกรม(Source Program)หรือซอร์สโมดูล(Source module) แต่ถ้าผ่านการแปลเรียบร้อยและไม่มีข้อผิดพลาดใดๆ จะเรียกโปรแกรมส่วนนี้ว่า ออปเจกต์โปรแกรม(Object Program)หรือออปเจกต์โม ดูล(Object Module) ออปเจกต์โปรแกรมนี้ยังไม่สามารถทำงานได้จะต้องผ่านการลิงค์(Link) หรือรวมเข้ากับไลบรารี่ (Library)ของระบบก่อนจึงจะเป็นโปรแกรมที่สามารถทำงานได้หรือเป​็น ภาษาเครื่องทีเรียกว่าเอ็กซ์ซีคิวท์โปรแกรม(Execute Program)หรือโหลดโมดูล (Load Module)ซึ่งโดยทั่วไปแล้วจะเป็นไฟล์ที่มีนามสกุลเป็น .exe หรือ.comและสามารถนำโปรแกรมนี้ไปใช้งานได้ตลอดโดยไม่ต้องสั่งแปลใหม่อีก แต่ถ้ามีการแก้ไขโปรแกรมแม้เพียงเล็กน้อยก็ต้องทำการแปลใหม่หมดตั้งแต่ต้น อินเตอร์พรีเตอร์(Interpreter)เป็นตัวแปลภาษาอีกตัวหนึ่งที่จะทำการแปลโปรแกรมภาษาชั้นสูงทีละคำสั่งให้เป็นภาษาเครื่องและทำการเอ็กซ์วีคิวท์หรือ ทำงานคำสั่งนั้นทันทีทันใดเลยก่อนที่จะไปทำการแปลต่อในบรรทัดถัดไปถ้าในระหว่างการแปลเกิดพบข้อผิดพลาดที บรรทัดใดก็จะฟ้องให้ทำการแก้ไขทีละบรรทัดนั้นทันทีอินเตอร์พรีเตอร์นี้เมื่อโปรแกรมเสร็จแล​้วจะไม่สามารถเก็บเป็น เอ็กซ์ซีคิวท์โปรแกรม(Execute Program)ได้ซึ่งต่างกับคอมไพเลอร์ดังนั้นเมื่อจะเรียกใช้งานหรือรันโปรแกรมก็จะต้องทำการแปลหรือคอมไพล์โปรแกรมใหม่ทุกคร​ั้งไปดังนั้นเมื่อจะเรียกใช้งานเอ็กซ์ซีคิวท์โปรแกรมย่อมจะทำงานได้เร็วกว่าการเรียกใช้งานโปรแกรมที่ต้องผ่านการแปลด้วยอินเตอร์พรีเตอร์แต่ประโยชน์ของภาษาที่ถูกแปลด้วย อินเตอร์พรีเตอร์คือโปรแกรมจะมีโครงสร้างที่ง​่ายต่อการพัฒนาตัวอย่างของภาษาโปแกรมที่มีการใช้อินเตอร์พรีเตอร์ เป็นตัวแปลภาษาได้แก่ ภาษาเบสิก ภาษาเพร์ล เป็นต้น การเขียนโปรแกรมด้วยภาษาชั้นสูงนั้นนอกจากจะให้ความสะดวกแก่ผู้เขียนเป็นอันมากแล้วผู้เขียน แทบจะไม่ต้องมี ความรู้เกี่ยวกับการทำงานของระบบฮาร์ดแวร์ก็สามารถเขียนโปรแกรมสั่งให้เครื่องคอมพิวเตอร์ทำงานได้นอกจากนี้ ยังมีข้อดีอีกอย่างคือสามารถนำโปรแกรมที่เขียนนี้ ไปใช้งานบนเครื่องใดก็ได้ คือมีลักษณะที่ไม่ขึ้นอยู่กับกับเครื่อง(Hardware Indepent)เพียงแต่ต้องทำการการแปลโปรแกรมใหม่เท่านั้น แต่อย่างไรก็ตามภาษาเครื่องที่ได้จาก การแปลภาษาชั้นสูงนี้อาจเยิ่นเย้อและไม่มีประสิทธิภาพเท่ากับการเขียนด้วยภาษาเครื่องหรือแอสเซมบลีโดยตรง ภาษารุ่นที่3นี้ส่วนใหญ่จะจัดอยู่ในกลุ่มของภาษาที่มีแบบแผน(Procedural language)เนื่องจากลักษณะการเขียนโปรแกรมจะมีโครงสร้างแบบแผนที่เป็นระเบียบกล่าวคืองานทุกอย่างผู้เขียนโปรแกรมต้องเขียนโปรแกรมควบคุมการทำงานเองทั้งหมดและต้องเขียนคำสั่งการทำงานที่เป็นขั้นตอนทุกอย่าง ไม่ว่าจะเป็นการสร้าง แบบฟอร์มกรอกข้อมูล การประมวลผล หรือการสร้างรายงานซึ่งโปรแกรมที่เขียนจะค่อนข้างซับซ้อนและใช้เวลา ในการพัฒนาค่อนข้างยาก

ภาษาเครื่อง

ในยุคแรกๆการใช้คอมพิวเตอร์ให้ทำงานตามต้องการนั้น ผู้เขียนโปรแกรมจะต้องเขียนคำสั่งด้วยภาษาของเครื่อง คอมพิวเตอร์ซึ่งเรียกว่าภาษาเครื่อง คำสั่งของภาษาเครื่องนั้นจะประกอบด้วยกลุ่มของตัวเลขในระบบเลขฐานสองเป็นภาษาเดียวเท่านั้นที่เครื่องคอมพิวเตอร์เข้าใจได้โดยตรง ลักษณะของภาษาเป็นภาษาที่ขึ้นอยู่กับฮาร์ดแวร​์ของ คอมพิวเตอร์แต่ละระบบโดยเขียนอยู่ในรูปของรหัสของระบบเลขฐานสอง ประกอบด้วยเลข0และเลข1ที่นำมาเขียนเรียงติดต่อกัน ประโยคคำสั่งของภาษาเครื่องจะประกอบด้วยส่วนท​ี่ระบุให้คอมพิวเตอร์ทำงานอะไรเช่น สั่งให้ทำการ บวกเลข สั่งให้ทำการเคลื่อนย้ายข้อมูล เป็นต้น และอีกส่วนเพื่อ บอกแหล่งข้อมูลที่จะนำมาทำงานตามที่ระบุในตอนแรก โครงสร้างของคำสั่งในภาษาเครื่อง คำสั่งในภาษาเครื่องจะประกอบด้วย 2 ส่วนคือโอเปอเรชันโคด(Operation Code)เป็นคำสั่งที่สั่งให้เครื่องคอมพิวเตอร์ปฏิบัติการ เช่น การบวก(Addition) การลบ(Subtraction) เป็นต้น โอเปอแรนด์(Operands)เป็นตัวที่ระบุตำแหน่งที่เก็บของข้อมูลที่จะเข้าคอมพิวเตอร์เพื่อนำไป ปฏิบัติการตามคำสั่งในโอเปอเรชันโคด

ภาษาระดับต่ำหรือภาษาแอสเซมบลี

เป็นภาษาที่มีการใช้สัญลักษณ์ข้อความ(mnemonic codes)แทนกลุ่มของเลขฐานสอง เพื่อให้ง่ายต่อการเขียนและการจดจำมากกว่าภาษาเครื่อง ตัวอย่างเช่นมีการใช้สัญลักษณ์ต่อไปนี้ Aย่อมาจาก ADDหมายถึงการบวก Sย่อมาจากSUBTRACTหมายถึงการลบ Cย่อมาจากCOMPLARE หมายถึงการเปรียบเทียบ MPย่อมาจากMULTIPLYหมายถึงการคูณ STย่อมาจาก SRORE หมายถึงการเก็บข้อมูลไว้ในหน่วยความจำ เป็นต้น ถึงแม้ว่าสัญลักษณ์เหล่านี้จะไม่ใช่คำที่มีความหมายในภาษาอังกฤษแต่ก็ทำให้นักเขียนโปรแกรมสามารถเขียนโปรแกรม ได้สะดวกสะบายมากขึ้น เนื่องจากไม่ต้องสะดวกสบายมากขึ้น เนื่องจากไม่ต้องจดจำ0และ1ของเลขฐานสองอีกนอกจากนี้ ภาษาแอสเซมบลียังอนุญาติให้ผู้เขียนใช้ตัวแปรที่ตั้งขึ้นมาเองในการเก็บค่าข้อมมูลใดๆเช่นX, Y, RATEหรือTOTAL แทนการอ้างอิงถึงตำแหน่งที่เก็บข้อมูลจริงๆ ภายในหน่วยความจำ ดังได้กล่าวแล้วว่าเครื่องคอมพิวเตอร์จะรู้จักเฉพาะภาษาเครื่องเท่านั้นดังนั้นจึงจำเป็นที​่จะต้องมีการแปล โปรแกรมภาษาแอสเซมบลีนั้นให้เป็นภาษาเครื่องเสียก่อนเพื่อให้คอมพิวเตอร์สามารถทำงานตามคำส​ั่งในโปรแกรม ได้การแปลภาษาแอสเซมบลีเป็นภาษาเครื่องนั้นจะต้องมีตัวแปลภาษาแอสเซมบลีที่เรียกว่าแอสเซมเบลอร์(Assembler)เป็นตัวแปลซึ่งภาษาแอสเซมบลี1คำสั่งจะสามารถแปลเป็นภาษาเครื่องได้1 คำสั่งเช่นกัน ดังนั้นเขียนโปรแกรมภาษาแอสเซมบลี 10คำสั่ง ก็จะถูกแปลเป็นภาษาเครื่อง10คำสั่งเช่นกันจึงเห็นได้ว่าภาษาแอสเซมบลีจะมีลักษณะที่เหมือนกับภาษาเครื่องคือเป็นภาษาที่ขึ้นอยู่กับเครื่อง กล่าวคือเราไม่สามารถนำโปรแกรมที่เขียนด้วยแอสเซมบลี โปรแกรมเดียวกันไปใช้ในเครื่องต่างชนิดกันได้และนอกจากนี้ผู้ที่จะเขียนโปรแกรมภาษาแอสเซมบลีได้จะต้องมีความรู้ ความเข้าใจในเรื่องของฮาร์ดแวร์เป็นอย่างดีเน​ื่องจากจะต้องยุ่งเกี่ยวกับการใช้งานหน่วยความจำที่เป็นงานหน่วยความจำ ที่เป็นรีจิสเตอร์ภายในตลอดดังนั้นจึงเหมาะที​่จะใช้เขียนในงานที่ต้องการความเร็วในการทำงานสูง เช่น งานทางด้านกราฟิกหรืองานพัฒนาซอฟต์แวร์ระบบต่าง ๆ อย่างไรก็ตามถึงแม้ว่าภาษานี้จะง่ายกว่าการเข​ียนด้วยภาษาเครื่อง แต่ก็ยังถือว่าเป็นภาษาชั้นต่ำที่ยังยากต่อการเขียนและ การเรียนรู้มากสำหรับผู้ที่ไม่ความรู้เกี่ยวก​ับฮาร์ดแวร์เท่าใดนัก

วิวัฒนาการของภาษาคอมพิวเตอร์

ภาษาคอมพิวเตอร์มีการพัฒนาหรือมีวิวัฒนาการโดยลำดับเช่นเดียวกับคอมพิวเตอร์ โดยจะสามารถแบ่งออกเป็นยุคหรือเป็นรุ่นของภาษา(Generation) ซึ่งในยุคหลังๆ จะมีการพัฒนาภาษาให้มีความสะดวกในการอ่านและเขียนง่ายขึ้นกว่าภาษาในยุคแรกๆ เนื่องจากจะมีโครงสร้างภาษาใกล้เคียงกับภาษาอ​ังกฤษ สามารถแบ่งภาษาคอมพิวเตอร์ออกได้เป็น 5 ยุค ภาษาเครื่อง (Machine Language) ภาษาแอสเซมบลี (Assembly Language) ภาษาชั้นสูง (High - level Language) ภาษาชั้นสูงมาก (Very High - level Language) ภาษาธรรมชาติ (Natural Language)