เนื่องด้วยห่างหายการเขียนบล๊อกไปนานเดิมตั้งใจจะใช้เป็นที่เขียนเรื่องสัพเพเหระทั่วไปแต่ไปๆ มาๆ เนื้อหาส่วนใหญ่จะเกี่ยวกับคอมพิวเตอร์เสียมากเพราะเดี๋ยวนี้ไม่อยู่หน้าจอมือถืออ่านนิยายก็มาขลุกอยู่กับคอมฯ แทบทุกวัน ช่วงนี้เห็นคนนิยมหัดเขียนโปรแกรมกันเยอะขึ้นมีคอร์สเรียนมากมายเลยว่าจะเขียนบทความการเขียนโปรแกรมสำหรับคนมือใหม่ที่ไม่เคยเขียนมาก่อนเพราะผมเองก็ไม่ได้เรียนสายนี้โดยตรงเหมือนกันก็พยายามจะถ่ายทอดสิ่งที่ตัวเองเข้าใจถ้ามีผิดพลาดประการใดก็แนะนำเพิ่มเติมได้ครับ
ภาษาเขียนโปรแกรม ภาษาเครื่อง และตัวแปลภาษา
ถ้าเปรียบเครื่องคอมพิวเตอร์เป็นชาวต่างประเทศสมมุติว่าเป็นชนพื้นเมืองประเทศหนึ่งแล้วกัน ภาษาเครื่องก็คือภาษาถิ่น แต่เนื่องจากเป็นภาษาที่ยากเราจึงใช้ภาษากลางที่ง่ายกว่าในการสื่อสารแทนเช่นภาษาอังกฤษ, ฝรั่งเศษ, ญี่ปุ่น เป็นต้นซึ่งก็เปรียบได้กับภาษาเขียนโปรแกรม แต่..แต่ก็ยังไม่สามารถสื่อสารกันได้เนื่องจากอีกฝ่ายไม่เข้าใจภาษากลางที่ใช้จึงต้องใช้ล่ามซึ่งก็คือตัวแปลภาษาในการแปลงภาษากลาง ( ภาษาเขียนโปรแกรม ) ไปเป็นภาษาถิ่น ( ภาษาเครื่อง ) เพื่อสั่งงานชนพื้นเมือง ( คอมพิวเตอร์ ) อีกทีกระบวนทัศน์ของภาษาโปรแกรม
กระบวนทัศน์ ( Paradigm ) ก็คือกรอบหรือชุดของแนวความคิด ซึ่งก็มีหลากหลายแนวทางมากเช่น Imperative, Declarative, Functional, Object-oriented, Logical, Procedural, Even-driven, etc. ซึ่งในภาษาสมัยใหม่หลายตัวก็มักจะมีหลายกระบวนทัศน์ในตัวเองบางอย่างอาจเอามาแค่บางส่วนหรือทั้งหมด รวมถึงภาษาเก่าและลูกหลานบางตัวก็มีการปรับปรุงและเพิ่มความสามารถใหม่ที่เอามาจากกระบวนทัศน์อื่นเข้ามาในตัวภาษาด้วย ก่อนที่เราจะงงกันไปมากว่านี้เราจะโฟกัสไปที่กระบวนทัศน์ที่น่าจะเข้าใจง่ายที่สุดก่อนนั่นก็คือ
การเขียนโปรแกรมเชิงคำสั่ง ( Imperative programming )
ซึ่งเป็นการเขียนโปรแกรมที่มีการบอกลำดับขั้นตอนการทำงานที่ชัดเจนเช่นการอุ่นเบอร์เกอร์ใน 7-11
- ฉีกปลายบรรจุภัณฑ์เล็กน้อย
- เปิดฝาเครื่องไมโครเวฟ
- ใส่สินค้าในเครื่อง
- ปิดฝาแล้วกดปุ่มเลข 2
- รอจนสัญญาณดัง
- เปิดฝานำสินค้าใส่ถุง
การทำงานตามลำดับในคอมพิวเตอร์จะทำจากบนลงล่างจากซ้ายไปขวาเหมือนการอ่านหนังสือยกเว้นการทำงานบางอย่างจะมีข้อยกเว้น
- ระดับความสำคัญของตัวดำเนินการ เช่น ตัวคูณ ( * ) กับหาร ( / ) จะทำก่อนตัวบวก ( + ) กับลบ ( - ) หรือตัวกำหนดค่า ( = ) จะทำงานในฝั่งขวาก่อนจะกำหนดค่าให้ตัวแปรฝั่งซ้าย
- การทำงานแบบทางเลือกหรือเงื่อนไขจะเลือกทำงานส่วนที่ตรงกับเงื่อนไขและข้ามการทำงานส่วนที่ไม่ตรงกับเงื่อนไข
- การทำงานแบบวนรอบจะทำงานวนกลับไปทำซ้ำเดิมจนกว่าจะครบกำหนดหรือตรงตามเงื่อนไขจึงจะหยุดและไปทำงานในส่วนถัดไปได้ เหมือนกับการอ่านหนังสือทบทวนหน้าที่ไม่เข้าใจพอเข้าใจแล้วก็อ่านหน้าถัดไป
- บางภาษาอาจมีคำสั่งพิเศษให้กระโดดจากจุดที่ทำงานอยู่ไปยังส่วนที่กำหนด เหมือนกับการข้ามไปอ่านบทอื่น
ในภาษา Lua ที่เราจะเริ่มเรีัยนกันในตอนต่อไปเป็นภาษาแบบ multi paradigm คือสามารถเขียนเป็น imperative ก็ได้หรือเขียนแบบ procedural ( เป็นกระบวนทัศน์ย่อยของ imperative โดยใช้การสร้างเป็นโปรแกรมย่อยหลายๆ ตัวแล้วเรียกใช้เพื่อลดความซ้ำซ้อนในการเขียนโปรแกรม ในบทความชุดนี้จะเขียนตามกระบวนทัศน์นี้เป็นหลัก ) หรือแม้แต่การเขีียนแบบ functional ก็ได้เช่นกัน
สิ่งที่ควรรู้ก่อนเริ่มเขียนโปรแกรม
ส่วนประกอบของภาษาโปรแกรมต่างๆ ได้แก่
- ประเภทข้อมูล ( Data type ) เช่น ตัวเลข ตัวอักษร ตรรกะ(จริง, เท็จ) ชุดข้อมูล วัตถุ
- ตัวดำเนินการ ( Operator ) เช่น บวก ลบ คูณ หาร มากกว่า น้อยกว่า เท่ากับ และ หรือ ไม่
- ตัวแปร ( Variable ) คือชื่อที่ใช้อ้างถึงข้อมูลหนึ่งๆ เช่น x = 10 หมายถึงตัวแปรชื่อ x เก็บข้อมูลตัวเลขจำนวนเต็มที่มีค่าคือ 10
- โปรแกรมย่อย ( Function, Procedure, Subroutine ) เป็นการแบ่งส่วนการทำงานของโปรแกรมเป็นกลุ่มย่อยซึ่งสามารถเรียกใช้ซ้ำได้ ในการทำงานแบบ Imperative จะเริ่มทำงานทีละบรรทัดจากบนลงล่างถ้าในโปรแกรมของเรามีการทำงานบางอย่างบ่อยๆ ก็ต้องมาเขียนคำสั่งเดิมซ้ำๆ ซึ่งการแยกส่วนที่ทำงานซ้ำออกมาเป็นโปรแกรมย่อยจะช่วยลดการซ้ำซ้อนตรงนี้ได้
- คำสั่ง ( Statement ) และ นิพจน์ ( Expression ) ตัวแรกคือคำสั่งหรือชุดของคำสั่งในโปรแกรมส่วนตัวหลังคือ Statement ประเภทหนึ่งที่ประกอบด้วย ข้อมูล และ ตัวดำเนินการ หรือ การเรียกใช้ฟังก์ชั่น หรือจะเป็น ค่า ( value ) โดดๆ ก็ได้ เช่น 1+2 หรือ sin(90) หรือ a<b หรือ 20
ส่งท้ายก่อนจบตอนแรก
ในตอนต่อๆ ไปเราจะมาเริ่มการเขียนโปรแกรมกันโดยผมจะใช้ภาษา Lua ที่เคยเขียนในบทความก่อนๆ มาเป็นตัวอย่าง เนื่องจากเป็นภาษาที่อ่านง่ายและมีโครงสร้างไม่ซับซ้อนสามารถเรียนรู้ได้ไวและเอาไปใช้งานได้จริง เป็นพื้นฐานที่ดีในการต่อยอดภาษาอื่นๆ ได้ต่อไปครับ
บทความถัดไป
ความคิดเห็น
แสดงความคิดเห็น