Lua 002 แนวคิดพื้นฐาน ชุดคำสั่ง

Lua 002 แนวคิดพื้นฐาน ชุดคำสั่ง

           

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

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

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

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

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

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

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

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

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

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

a = "มด"
b = "คัน"
c = "ไฟ"
a = "มด";
b = "คัน";
c = "ไฟ";
a = "มด" b = "คัน" c = "ไฟ"
a = "มด"; b = "คัน"; c = "ไฟ";