วันพุธที่ 16 พฤศจิกายน พ.ศ. 2554

ภาษาคอมพิวเตอร์ (Computer Programming Language)


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

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

          ภาษาคอมพิวเตอร์สามารถแบ่งออกเป็นสองกลุ่มคือ ภาษาระดับสูง (high level) และภาษาระดับต่ำ (low level) ภาษาระดับสูงถูกออกแบบมาเพื่อให้ใช้งานง่ายและสะดวกสบายมากกว่าภาษาระดับต่ำ โปรแกรมที่เขียนถูกต้องตามกฎเกณฑ์และไวยากรณ์ของภาษาจะถูกแปล(compile) ไปเป็นภาษาระดับต่ำเพื่อให้คอมพิวเตอร์สามารถนำไปใช้งานหรือปฏิบัติตามคำสั่งได้ต่อไป ซอฟต์แวร์สมัยใหม่ส่วนมากเขียนด้วยภาษาระดับสูง แปลไปเป็นออบเจกต์โค้ด (object code) แล้วเปลี่ยนให้เป็นชุดคำสั่งในภาษาเครื่อง

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


        การใช้งานทางคอมพิวเตอร์ซึ่งเป็นเครื่องมือทางอิเล็กทรอนิกส์ให้ทำงานตามที่ต้องการ จำเป็นต้องมีการกำหนดภาษาสำหรับใช้ติดต่อสั่งงานกับคอมพิวเตอร์ ภาษาคอมพิวเตอร์จะเป็น ภาษาประดิษฐ์ (artificial language) ที่มนุษย์คิดสร้างมาเอง เป็นภาษาที่มีจุดมุ่งหมายเฉพาะ มีกฎเกณฑ์ที่ตายตัวและจำกัด คือ อยู่ในกรอบให้ใช้คำและไวยากรณ์ที่จำกัด และมีการตีความหมายที่ชัดเจน จึงจัดภาษาคอมพิวเตอร์เป็น ภาษาที่มีรูปแบบเป็นทางการ (formal language) ต่างกับภาษาธรรมชาติที่มีขอบเขตกว้างมาก ไม่มีรูปแบบตายตัวที่แน่นอน กฎเกณฑ์ของภาษา จะขึ้นกับหลักไวยากรณ์ และการยอมรับของกลุ่มผู้ใช้นั้น ๆ
        ภาษาคอมพิวเตอร์ อาจแบ่งได้เป็น 3 ระดับ คือ ภาษาเครื่อง (machine language) ภาษาระดับต่ำ (low-ianguage) และภาษาระดับสูง (high-level language)

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

2. ภาษาระดับต่ำหรือภาษาแอสเซมบลี
        ภาษาระดับต่ำ หรือภาษาแอสเซมบลี ลักษณะของภาษานี้จะเป็นการใช้ตัวอักษรมาเรียงกันเป็นคำ แทนเลขฐานสอง โดยคำที่กำหนดขึ้นจะมีความหมายที่สามารถเข้าใจและจำได้ง่าย เช่น จะใช้คำสั่ง ADD แทนการบวก คำสั่ง SUB แทนการลบ เป็นต้น ขณะดียวกัน ส่วนที่ใช้บอกแหล่งข้อมูลก็จะแทนด้วยชุดของตัวอักษรที่เรียกว่าตัวแปร เช่น คำสั่ง ADD A,B จะหมายถึงให้นำข้อมูลที่ตำแหน่ง A และตำแหน่ง B มาบวกรวมกัน แล้วนำผลลัพธ์ไปเก็บที่ตำแหน่ง a เป็นต้น
        เนื่องจากลักษณะของเครื่องคอมพิวเตอร์จะรับรู้ หรือทำงานด้วยภาษาเครื่องที่เป็นเลขฐานสองเท่านั้น การเขียนโปรแกรมด้วยภาษาแอสแซมบลี จะต้องผ่านกระบวนการแปลเสียก่อน โดยแปลภาษาแอสแซมบลี ตัวแปลภาษาแอสแซมบลีนี้เรียกว่า แอสแซมเบลอร์ (assembler)
        การเขียนโปรแกรมด้วยภาษาแอสแซมบลี ถึงแม้ว่าจะง่ายและเสียเวลาน้อยกว่าการเขียนโปรแกรมด้วยภาษาเครื่อง แต่มีข้อเสียคือผู้ใช้จะต้องเรียนรู้โครงสร้างของระบบเครื่องนั้นอย่างละเอียด เพราะภาษาแอสแซมบลีเป็นภาษาที่ขึ้นกับฮาร์ดแวร์ จะใช้กับเครื่องระบบนั้น ถ้าใช้เครื่องต่างระบบที่มีตัวประมวลผลต่างกัน จะต้องเรียนรู้โครงสร้างภายในและชุดคำสั่งสำหรับเครื่องนั้นใหม่ทั้งหมด ดังนั้นจึงเป็นเรื่องที่ยุ่งยากและไม่สะดวก

3. ภาษาระดับสูง
        ภาษาระดับสูง การพัฒนาภาษาคอมพิวเตอร์ในยุคต่อมา จึงพยายามให้เป็นภาษาที่สามารถนำไปใช้กับเครื่องต่างระบบกัน ไม่ต้องเสียเวลาเรียนรู้ใหม่ทั้งหมด โปรแกรมที่เขียนสั่งงานกับเครื่องระบบหนึ่ง ก็สามารถนำไปใช้หรือดัดแปลงเพียงเล็กน้อยเพื่อสั่งงานกับเครื่องอีกระบบหนึ่งได้ ลักษณะของภาษาจะพยายามให้ใกล้เคียงกับภาษาธรรมชาติมากขึ้น ทำให้เราสามารถศึกษาและเรียนรู้ได้ในเวลาอันรวดเร็ว ภาษาในยุคหลังนี้ เรียกว่า ภาษาระดับสูง ซึ่งได้มีการคิดค้นพัฒนาออกมาหลายภาษาด้วยกัน ที่เด่น ๆ และนิยมกันมาก ได้แก่ ภาษาฟอร์แทรน (FORTRAN) ภาษาโคบอล (COBOL) ภาษาเบสิก (BASIC) ภาษาปาสกาล (PASCAL) ภาษาซี (C) ภาษาเอดา (ADA) ภาษาลิสป์ (LISP) และภาษาโปรลอก (PROLOG) เป็นต้น

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

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

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

---------BASE = 4
---------HEIGHT = 6
---------AREA = 0.5 * BASE * HEIGHT
---------PRINT AREA
---------END

ไม่มีความคิดเห็น:

แสดงความคิดเห็น