SYNTAX : วากยสัมพันธ์ เพื่อให้ได้มาซึ่งคำว่า “ภาษา” สำหรับ Programming
เพราะสำเหนียกว่าตัวเองห่างไกลจากการเป็นนักภาษาศาสตร์ ในยามที่ต้องการออกแบบภาษาสำหรับใช้ในการโปรแกรมหุ่นยนต์เพื่อการศึกษาที่แก่นหลังคือระบบสมองกลฝังตัวขนาดเล็ก จึงได้แต่ต้องไต่ถามเอากับผู้ทรงภูมิ อะไรสักอย่างที่นิยามได้ว่าเป็น “ภาษา” ต้องมีองค์ประกอบที่ครบถ้วนอะไรบ้าง อะไรนั้นแน่นอนว่าต้องรวมไปถึง หลักเกณฑ์ กติกา ข้อกำหนดเฉพาะตัว ที่แม่นยำเคร่งครัด คะเนว่าความสลับซับซ้อนที่มีอาจหลีกลี้ได้ ต้องอยู่ในระดับที่ผู้ต่ำต้อยได้แต่โค้งคำนับขอรับคำสั่งสอน เมื่อเป็นการไต่ถามมิใช่เข้าคอร์สฝึกวิทยายุทธ์ที่ถูกจัดไว้อย่างมีขั้นตอนและระเบียบแบบแผนที่ชัดเจน คำถามที่สมควรถูกตั้งขึ้น จึงต้องมีหลากหัวข้อ หลายประเด็น ผู้ทรงภูมิที่เยี่ยมยุทธ์ย่อมมีข้ออธิบาย เสนอแนะ ขยายความ ให้ในความต่ำต้อยนั้นไม่กลายเป็นขวากหนามจนเกินคาดหวังผล
หลังคำถาม อะไรที่เรียกว่าภาษา ผู้ทรงภูมิพลันชี้แนะว่า
คำว่า “ภาษา” หมายถึงระบบหรือวิธีการที่มนุษย์ใช้เพื่อสื่อสารกัน ซึ่งอาจอยู่ในรูปแบบของคำพูด ข้อเขียน หรือสัญลักษณ์ ภาษาใช้เพื่อแลกเปลี่ยนข้อมูล ความคิด ความรู้สึก และความหมายต่างๆ ภาษามีองค์ประกอบหลักหลายอย่าง เช่น ไวยากรณ์ โครงสร้างคำ เสียง หรือสัญลักษณ์ที่ตกลงร่วมกัน นอกจากนี้ยังมีการจัดกลุ่มภาษาตามโครงสร้างทางไวยากรณ์หรือเสียง เช่น ภาษาไทย ภาษาอังกฤษ ภาษาญี่ปุ่น เป็นต้น
ภาษาไม่เพียงแค่ใช้ในมนุษย์เท่านั้น แต่ยังรวมถึงภาษาสำหรับการสื่อสารในด้านเทคโนโลยี เช่น ภาษาคอมพิวเตอร์ ซึ่งเป็นชุดของกฎที่ใช้เพื่อเขียนโปรแกรมและสั่งงานคอมพิวเตอร์
ประเภทของภาษาแบ่งได้หลายแบบ เช่น:
- ภาษามนุษย์ (Human Language): ใช้ในการสื่อสารทั่วไป เช่น ภาษาไทย อังกฤษ จีน
- ภาษาทางเทคนิค: ใช้ในงานเฉพาะ เช่น ภาษาในการเขียนโปรแกรม (Python, JavaScript) หรือภาษาสัญลักษณ์ในวิชาคณิตศาสตร์
คล้ายว่าผู้ทรงภูมิหยั่งรู้ล่วงหน้าว่า คำถามที่จะมีตามมาคือภาษาสำหรับสิ่งที่มิใช่มนุษย์ ญาณหยั่งรู้นี้เชื่อว่าเกิดมาด้วย บทสนทนาที่ได้แลกเปลี่ยนกันมานับนานพอควร
“ใครผู้หนึ่งถูกผู้อื่นรู้จักมากเกินไป อย่างนั้นแล้วท่านยังจะสามารถซ่อนอำพรางสิ่งที่มิปรารถนาเปิดเผยได้หรือ ความรู้สึกเยี่ยงนี้ ท่านว่าน่าอภิรมย์หรือไม่
ข้าพเจ้าไม่ !!! ”
คำขอรับการชี้แนะต่อมาจึงเป็นเรื่องของภาษาทางเทคนิค หลายบทสนทนาต่อเนื่องมา สรุปได้ความว่า ภาษาคอมพิวเตอร์หรือภาษาสำหรับการเขียนโปรแกรมพึงมีข้อกำหนดและโครงสร้างที่เคร่งครัดชัดเจน ข้อกำหนดสำคัญคือ มี Syntax หรือ ไวยากรณ์ ที่ผู้เชี่ยวเชิงภาษาศาสตร์ขนานนามว่า วากยสัมพันธ์ กฎที่จัดเจนย่อมไม่คลุมเครือ ชัดเจนเคร่งครัดสำหรับการเขียนรหัสคำสั่งก็เพื่อให้เครื่องหรือคนที่อ่าน สามารถเข้าใจเจตนาและปฏิบัติตามได้อย่างถูกต้องแม่นยำ
วันนี้จึงต้องว่ากล่าวกันถึงเรื่อง Syntax โดยละเอียดเพียงเรื่องเดียว
องค์ประกอบหลักที่สำคัญคือ
◙ Order of Commands การเขียนคำสั่งในโปรแกรมต้องมีการจัดลำดับของคำสั่งอย่างเหมาะสมเพื่อให้โปรแกรมทำงานตามที่ตั้งใจไว้ ลำดับที่เพี้ยนผิดย่อมส่งผลให้โปรแกรมทำงานไม่ถูกต้องหรือเกิดข้อผิดพลาดได้ ภาษาไพทอนที่ใช้การทำงานแบบลำดับบรรทัด ซึ่งคำสั่งจะถูกอ่านจากบนลงล่าง มิเพียงเลือกคำสั่งถูก ยังต้องจัดเรียงลำดับให้ถูกต้องด้วย
◙ Operators and Symbols ภาษาทางเทคนิคใช้เครื่องหมายและสัญลักษณ์ เช่น +, -, =, {}, [], () ซึ่งมีความหมายเฉพาะ คำสั่งที่ใช้เครื่องหมายเหล่านี้ต้องเขียนให้ถูกต้องตามกฎ หากไม่ต้องการความพลาดซ้ำซาก
ตัวอย่างเช่นในภาษาไพทอน การตั้งค่าและการเปรียบเทียบค่าใช้เครื่องหมายพื้นฐานเดียวกันคือ = เป็นการตั้งค่าหรือ assignment ส่วน == เป็นการเปรียบเทียบค่า หรือ comparison รหัส a = 10 เป็นการตั้งค่า a ให้มีค่าเท่ากับสิบ แต่ a==10 กลับต้องการเปรียบเทียบค่า a ว่าเท่ากับสิบหรือไม่ ผลที่ได้จากคำสั่ง a = 10 มีผลทำให้ a มีค่าเป็นสิบโดยไม่คำนึงว่าก่อนหน้านั้นมี a อยู่หรือไม่ หรือมีค่าเป็นเท่าไร แต่ a==10 เป็นการเปรียบเทียบค่าของ a ที่มีอยู่แล้วว่ามีค่าเท่ากับสิบหรือไม่ หมายความว่า ถ้าไม่มี a อยู่ก่อนหน้านั้น คำสั่งนี้ย่อมผิดพลาด แต่ถ้า a มีอยู่แล้วค่าของมันจะไม่ได้รับกระทบจากคำสั่งนี้แต่อย่างใด แต่ส่งผลดำเนินการเป็นสองลักษณะคือ เป็นจริง หรือ True หากค่า a เดิมนั้นเป็นสิบ และเป็นเท็จหรือ False ถ้าเป็นอย่างอื่น
◙ Variables and Naming Conventions หรือการใช้ตัวแปรและแนวทางการตั้งชื่อ เป็นหัวใจสำคัญในภาษาทางเทคนิค โดยเฉพาะในการเขียนโปรแกรม โปรแกรมย่อมต้องการใช้พื้นที่ในการเก็บข้อมูล และการข้องแวะเพื่อการใดกับพื้นที่ในการเก็บข้อมูลหนึ่งนั้นใช้การอ้างถึงด้วยชื่อ ชื่อซึ่งเมื่อถูกจัดอยู่ในประเภทอะไรสักอย่างที่สามารถพลันผันแปรค่าได้ คำ variables หรือตัวแปรจึงสะท้อนตัวตนตามพฤติกรรมของการไม่คงอยู่เสมอตลอดไป แนวทางการตั้งชื่อส่งผลต่อการอ่านและทำความเข้าใจรหัสคำสั่งหรือโค้ด แนวทางที่ดีย่อมส่งเสริมให้เป็นไปได้โดยง่าย ช่วยให้โค้ดมีความชัดเจนในตัวตนอย่างเห็นได้ในฉับพลันว่าทำอะไร อีกทั้งเป็นการป้องกันข้อผิดพลาดที่อาจจะเกิดได้โดยง่ายเฉพาะอย่างยิ่งกับโค้ดที่มีความสลับซับซ้อน และเป็นการลดความสับสนสำหรับผู้อื่นที่หากมาศึกษาหรือแก้ไขโค้ดในภายภาคหน้า
ตัวแปรเมื่อเป็นพื้นที่หรือกล่องเก็บข้อมูลที่ถูกกำหนดให้มีชื่อเรียกเฉพาะ การใช้ตัวแปรจึงช่วยผู้เขียนโปรแกรมให้มีความสามารถสามอย่างที่สำคัญ หนึ่งคือ จัดเก็บข้อมูล ที่ต้องใช้ในโปรแกรม เช่น ค่าตัวเลข ข้อความ หรือข้อมูลเชิงตรรกะ สองคือ เข้าถึงข้อมูล ที่เก็บไว้และนำไปใช้ซ้ำได้ในโค้ดหลายหลากที่ โดยไม่ต้องสร้างข้อมูลขึ้นใหม่ และ สามคือ แก้ไขค่าข้อมูลได้ง่าย ทุกเมื่อยามที่ต้องการเปลี่ยนค่าใหม่ให้กับตัวแปร
“โปรแกรมเมอร์ระดับที่พึงอวยด้วยคำเทพท่านหนึ่ง ทำให้ข้าพเจ้าตระหนักว่า วิธีการตั้งชื่อตัวแปร สามารถเปิดเผยอุปนิสัยบางส่วนของผู้เขียนได้”
◙ Data Types หรือรูปแบบข้อมูล หมายถึงประเภทของข้อมูลที่ใช้ในการเขียนโปรแกรม ซึ่งกำหนดลักษณะและรูปแบบของข้อมูลที่ตัวแปรหรือค่าที่ใช้ในโปรแกรมจะถูกจัดเก็บและประมวลผล รูปแบบข้อมูลจะมีบทบาทสำคัญต่อการทำงานของโค้ดและการประมวลผลข้อมูล เนื่องจากแต่ละประเภทของมันมีการใช้งานและข้อจำกัดที่ผิดแผกกัน การเข้าใจประเภทของข้อมูลช่วยให้สามารถเลือกใช้ข้อมูลได้เหมาะสม ลดข้อผิดพลาด และเพิ่มประสิทธิภาพในการเขียนโปรแกรม โดยทั่วไปแล้วรูปแบบข้อมูลพื้นฐานที่สำคัญได้แก่
- Numbers หรือตัวเลข ซึ่งเป็นไปได้ในหลายรูปแบบได้แก่ Integer — เป็นตัวเลขที่เป็นจำนวนเต็ม ไร้จุดทศนิยม เช่นตัวเลข -3 , 0 หรือ 3 ใช้ในการนับ การบวก ลบ คูณ หาร หรืออื่นใด ที่ไม่ต้องการความแม่นยำในระดับทศนิยม Floating Point — เป็นตัวเลขที่มี ทศนิยม ซึ่งใช้เก็บค่าที่ต้องการความละเอียดมากกว่าจำนวนเต็ม เพราะสามารถเก็บค่าในช่วงที่ละเอียดและยืดหยุ่นมากกว่า เช่น 3.14, -2.718, หรือ 0.0001 ตัวเลขทศนิยมมีประโยชน์ในงานที่ต้องการความแม่นยำของตัวเลขสูง เช่น การคำนวณทางวิทยาศาสตร์ คณิตศาสตร์ การเงิน หรือการคำนวณที่เกี่ยวกับเศษส่วน Complex Numbers — หมายถึงตัวเลขที่ประกอบด้วยสองส่วนหลัก คือ ส่วนจริง หรือ Real Part และ ส่วนจินตภาพ หรือ Imaginary Part ซึ่งถูกแสดงในรูปแบบของ a+bi เมื่อ a เป็นตัวเลขของส่วนจริง และ b เป็นตัวเลขของส่วนจินตภาพ ใช้ตัวอักษร i ซึ่งย่อจากคำว่า imaginary บ่งบอกว่าเป็นส่วนของจินตภาพ กำหนดค่าด้วย i*i = -1 ตัวเลขเชิงซ้อนถูกใช้อย่างแพร่หลายในด้านวิทยาศาสตร์ เช่น การคำนวณในงานฟิสิกส์ และด้านวิศวกรรมศาสตร์ โดยเฉพาะในสาขาที่เกี่ยวกับการวิเคราะห์คลื่น วงจรไฟฟ้า การประมวลผลสัญญาณ เนื่องจากการแสดงข้อมูลเชิงซ้อนช่วยให้ง่ายต่อการคำนวณสมบัติที่มีทั้งมุมและขนาดของสัญญาณ
- Strings หรือข้อความ เป็นกลุ่มของตัวอักษรที่เรียงต่อเนื่องกัน ในภาษาโปรแกรมส่วนใหญ่ เช่น Python, C, Java, หรือ JavaScript ข้อความใน string จะถูกล้อมรอบด้วยเครื่องหมายอัญประกาศ หรือ quotation marks ซึ่งอาจจะเป็นเครื่องหมายอัญประกาศเดี่ยว ‘ ‘ หรือเครื่องหมายอัญประกาศคู่ “ “ ตัวอักษรแต่ละตัวใน string สามารถประกอบด้วย ตัวอักษร ตัวเลข และสัญลักษณ์ต่างต่าง เช่น เครื่องหมายจุลภาค, จุด, ขีดเส้นใต้ เป็นต้น ใช้สำหรับเก็บข้อมูลที่เป็นตัวหนังสือ คำพูด และอักขระพิเศษ ตัวอย่างของสตริงได้แก่ ‘Hello’, ‘12345’, “Temperature: 25°C”
- Boolean หรือค่าความจริง เป็นชนิดข้อมูลที่ใช้แสดงค่าของคำตอบที่มีเพียงสองค่าเท่านั้น คือ จริง (True) หรือ เท็จ (False) ทั้งสองค่านี้โดยข้อมูลประเภทนี้มีความสำคัญในตรรกศาสตร์, การตรวจสอบเงื่อนไข, และการควบคุมการทำงานของโปรแกรม ในคอมพิวเตอร์ Boolean ถือเป็นชนิดข้อมูลพื้นฐานที่มีบทบาทสำคัญ โดยมักนำมาใช้ในการตัดสินใจหรือเปรียบเทียบค่าต่างๆ เช่น การตรวจสอบว่าเงื่อนไขบางอย่างเป็นจริงหรือไม่ True ใช้แสดงว่าค่าหรือเงื่อนไขนั้นเป็นจริง False ใช้แสดงว่าค่าหรือเงื่อนไขนั้นเป็นเท็จ ค่าความจริงนี้สามารถใช้ร่วมกับตัวดำเนินการหรือ operators หลายประเภทในการตรวจสอบเงื่อนไขหรือทำการคำนวณทางตรรกะ เช่น ตัวดำเนินการ AND ที่ผลลัพธ์จะเป็น True เมื่อทั้งสองค่าเป็น True , ตัวดำเนินการ OR ผลลัพธ์จะเป็น True เมื่ออย่างน้อยหนึ่งค่าเป็น True , ตัวดำเนินการ NOT (not): ผลลัพธ์จะเป็นค่าตรงข้ามของค่าที่กำหนด เหล่านี้เป็นต้น
ค่าความจริงมักใช้ในการเปรียบเทียบข้อมูลในรูปแบบต่างต่าง เช่น การตรวจสอบว่าเท่ากัน, มากกว่าหรือ น้อยกว่า โดยใช้ตัวดำเนินการเปรียบเทียบ เช่น ตัวดำเนินการเปรียบเทียบ Equal to ใช้เครื่องหมาย == ใช้ตรวจสอบว่าสองค่าซ้ายขวาของ == นั้น มีค่าเท่ากันหรือไม่ , Not equal to ใช้เครื่องหมาย != เพื่อตรวจสอบว่าสองค่าซ้ายกับขวาของเครื่องหมายนั้น มีค่าไม่เท่ากัน หรือไม่ Less than ใช้เครื่องหมาย < เพื่อตรวจสอบว่าค่าซ้ายมือเครื่องหมายนั้น น้อยกว่า ค่าทางขวามือเครื่องหมายหรือไม่
การใช้ค่าความจริงในการควบคุมโปรแกรม ใช้ตัดสินใจว่าคำสั่งหรือบล็อกของโค้ดจะถูกดำเนินการหรือไม่ ขึ้นอยู่กับว่าเงื่อนไขที่กำหนดไว้เป็นจริงหรือเป็นเท็จ ค่าความจริงนี้สามารถนำไปใช้ในคำสั่งต่างๆ เช่น if, while, และ for เพื่อกำหนดลำดับของการทำงานในโปรแกรม ตัวอย่างเช่นใช้ คำสั่ง if เพื่อทำการตรวจสอบเงื่อนไขว่า อะไรสักอย่างหนึ่ง (ซึ่งจะรับรู้กันในภายภาคหน้าในนาม Boolean expression) นั้น แสดงค่าความจริงเป็นอย่างไร ถ้าค่าความจริงเป็นอย่างที่ต้องการแล้วจะตัดสินใจดำเนินการตามคำสั่งต่างต่างที่อยู่ภายในกลุ่มหรือบล็อกของคำสั่งหนึ่งถัดมา หากถ้าไม่ใช่อย่างที่ต้องการแล้วจะละเว้นไม่ทำคำสั่งในบล็อกนั้น ซึ่งอาจจะหมายรวมถึงไปทำบล็อกของคำสั่งที่แตกต่างออกไปหากใช้คำ else ที่บ่งบอกว่าไม่ใช่อย่างที่ if ต้องการ
- Sequence ลำดับข้อมูล คือโครงสร้างข้อมูลที่ใช้จัดเก็บกลุ่มของข้อมูลหลายรายการเรียงตามลำดับอย่างชัดเจน ทำให้สามารถเข้าถึงแต่ละข้อมูลได้ตามตำแหน่งหรือดัชนี (index) ที่กำหนด โดยลำดับข้อมูลนี้อาจประกอบด้วยข้อมูลประเภทเดียวกันทั้งหมด เช่น ชุดตัวเลขหรือชุด string ซึ่งเรียกว่าเป็นแบบ Homogeneous หรืออาจมีข้อมูลหลายประเภทปะปนกัน เช่น บางรายการเป็นตัวเลขและบางรายการเป็น string ซึ่งถือว่าเป็นแบบ Heterogeneous การจัดเก็บข้อมูลในรูปแบบลำดับนี้มีประโยชน์อย่างยิ่งเมื่อต้องการประมวลผลข้อมูลหลายรายการพร้อมกันในชุดเดียว เช่น การใช้คำสั่งวนซ้ำ (for loop) เพื่อผ่านข้อมูลในลำดับทั้งหมด หรือการใช้คำสั่งเพื่อคำนวณผลรวม ผลคูณ หรือการจัดเรียงลำดับข้อมูล
ภาษาทางเทคนิคยุคใหม่ เพิ่มเติมรูปแบบข้อมูลบางอย่างเข้าไปด้วย เช่น เซ็ตหรือ Set ซึ่งถูกใช้ในกรณีที่ต้องการจัดเก็บ ข้อมูลที่ไม่ซ้ำกัน หมายความว่าถ้าพยายามใส่ข้อมูลที่ซ้ำกับข้อมูลที่มีอยู่เดิมในเซ็ต ข้อมูลนั้นจะถูกละเว้น ไม่เพิ่มซ้ำอีกครั้ง ข้อมูลในเซ็ต ไม่เป็นลำดับ ที่แน่นอน ทำให้ไม่สามารถเข้าถึงข้อมูลตามดัชนีได้ และข้อมูลในเซ็ตจะถูกเรียงแบบอัตโนมัติเมื่อใส่ลงไป การเรียงลำดับของเซ็ตไม่ได้ขึ้นอยู่กับลำดับที่ใส่ข้อมูลเข้าไป ทำให้ไม่สามารถอ้างอิงข้อมูลในเซ็ตโดยใช้ดัชนีชี้หา หรือระบุหมายเลขตำแหน่งได้ ลักษณะนี้ช่วยให้การตรวจสอบข้อมูลในเซ็ต เช่น การตรวจสอบว่าข้อมูลหนึ่งนั้น มีอยู่ในเซ็ตหรือไม่ มีประสิทธิภาพมากยิ่งขึ้น ในบางภาษาเช่นไพทอน จะมีประเภทข้อมูล None ซึ่งหมายถึงไม่มีข้อมูลคือว่างเปล่าหรือ null และใช้เพื่อระบุว่าตัวแปรนั้นไม่ได้เก็บค่าที่มีความหมายใดใดเลย
ยิ่งกว่านั้นข้อมูลอาจจะอยู่ในรูปแบบที่เรียกว่า โครงสร้างข้อมูลเชิงซ้อน หรือ Compound Data Types ซึ่งเป็นการรวมข้อมูลชนิดพื้นฐานหลายชนิดหรือหลายชุดข้อมูลเข้าไว้ด้วยกันในโครงสร้างเดียว ข้อมูลชนิดพื้นฐานหมายถึง Number , String , Sequence ที่อาจจะมีอยู่หลายรูปแบบ , Boolean , Set และ None ทำให้สามารถจัดเก็บข้อมูลที่ซับซ้อนและมีหลายมิติได้ง่ายขึ้น โครงสร้างข้อมูลเชิงซ้อนนี้มักจะใช้ในโปรแกรมที่มีข้อมูลหลายประเภทหรือข้อมูลที่ต้องการจัดเก็บในรูปแบบที่เป็นระบบมากขึ้น
โครงสร้างข้อมูลเชิงซ้อน แม้จะดูไม่เรียบง่ายตรงไปตรงมา แต่ละข้อมูลมีรูปแบบที่ไม่พ้องต้องกัน แต่ทำให้เกิด ความยืดหยุ่นในการจัดเก็บข้อมูล กล่าวคือสามารถเก็บข้อมูลหลายมิติที่มีความสัมพันธ์กันได้ง่าย เช่น การเก็บข้อมูลผู้ใช้หลายคนในระบบเดียว อ่านและเข้าถึงข้อมูลง่าย ทำให้สามารถเข้าถึงข้อมูลได้ตามที่ต้องการโดยไม่ต้องสร้างโครงสร้างใหม่
◙ Code Structure and Blocks เป็นการจัดระเบียบคำสั่งและโครงสร้างของโค้ดให้อยู่ในลำดับที่เหมาะสม เพื่อให้ง่ายต่อการอ่านและทำความเข้าใจการทำงานของโปรแกรม ช่วยให้ผู้อ่านหรือปรารถนาจะแก้ไขโค้ดสามารถเข้าใจลำดับการทำงานได้ดียิ่งขึ้น การจัดโค้ดในลักษณะที่ชัดเจนและมีระเบียบยังช่วยลดข้อผิดพลาดในการเขียนโปรแกรม และทำให้กระบวนการค้นจุดผิดพลาดของโปรแกรม หรือการ Debug ง่ายยิ่งขึ้น
การจัดโครงสร้างโค้ดและบล็อกคำสั่งประกอบด้วย
- Blocks หรือบล็อกคำสั่ง หมายถึงกลุ่มคำสั่งที่ทำงานร่วมกันเพื่อให้ได้ผลลัพธ์ที่ต้องการ เช่น if ที่เป็นบล็อกเงื่อนไข , for และ while ที่เป็นบล็อกของการวนรอบ หรือบล็อกฟังก์ชันที่เป็นบล็อกของการทำงานเฉพาะอย่าง ในหลายหลาย ภาษา การกำหนดขอบเขตของบล็อกมักจะทำโดยการเยื้องบรรทัดหรือ Indentation อย่างใน Python หรือใช้เครื่องหมายปีกกา { } ใน C, C++ หรือ Java
- Indentation หรือการเยื้องบรรทัด ช่วยบ่งบอกขอบเขตของบล็อกคำสั่ง โดยเฉพาะในภาษา Python ที่การเยื้องบรรทัดไม่เพียงแต่ช่วยให้อ่านโค้ดได้ง่ายขึ้น แต่ยังเป็นการกำหนดขอบเขตของบล็อกอย่างเป็นทางการ การเยื้องบรรทัดควรมีความสม่ำเสมอเพื่อเพิ่มความชัดเจนในการจัดระเบียบโค้ด
- Functions การใช้ฟังก์ชันที่เป็นการกระทำเฉพาะอย่าง ช่วยแยกโค้ดที่ทำงานเป็นขั้นตอนเฉพาะ ออกเป็นส่วนย่อยย่อยที่เข้าใจง่าย ช่วยให้การอ่านและการแก้ไขโค้ดทำได้สะดวกขึ้น นอกจากนั้นแล้วยังช่วยลดการเขียนโค้ดซ้ำซ้อน โดยนำฟังก์ชันที่เขียนไว้แล้วไปใช้ซ้ำในที่อื่นอื่น ทำให้โค้ดมีความกระชับยิ่งขึ้น
- Modularization คือการแบ่งโค้ดออกเป็นโมดูลหรือหน่วยย่อยที่สามารถทำงานได้อิสระจากกัน เช่น การแยกโค้ดที่เกี่ยวข้องกับการคำนวณ, ฐานข้อมูล, หรือการจัดการกับการเชื่อมต่อกับผู้ใช้ (User Interface) ให้เป็นโมดูลที่แยกต่างหาก ซึ่งแต่ละโมดูลสามารถทำงานได้อิสระและนำไปใช้ซ้ำในโปรแกรมอื่นได้ modularization ทำให้โค้ดอ่านง่ายและเข้าใจง่ายขึ้น เพราะโค้ดถูกแยกเป็นโมดูลที่มีหน้าที่ชัดเจนในตัวเอง แต่ละโมดูลสามารถทดสอบการทำงานโดยแยกอิสระจากกันได้ ช่วยให้การค้นหาและแก้ไขข้อผิดพลาดของโปรแกรมตลอดจนการตรวจสอบการทำงานของโปรแกรมโดยรวม ทำได้ง่ายขึ้น ลดการทำงานซ้ำซ้อนเพราะสามารถนำโค้ดที่เขียนไว้แล้วไปใช้ซ้ำในส่วนต่างต่าง ของโปรแกรมช่วยให้การปรับปรุงหรือเพิ่มเติมความสามารถของโปรแกรมทำได้ง่ายขึ้น เนื่องจากสามารถเพิ่มเติมหรือแก้ไขโค้ดในแต่ละโมดูล โดยไม่กระทบกับส่วนอื่นอื่นของโปรแกรม
การแบ่งโปรแกรมออกเป็น โมดูล เป็นกระบวนการที่ทำให้โปรแกรมมีการจัดการที่ดีขึ้น โดยการแบ่งงานออกเป็นส่วน ๆ ที่ทำงานอิสระแต่เชื่อมโยงกัน โมดูลแต่ละตัวจะมีหน้าที่เฉพาะ ซึ่งช่วยให้โปรแกรมสามารถขยายหรือปรับเปลี่ยนได้ง่ายขึ้น
ในโปรแกรมที่ต้องการจัดการข้อมูลของผู้ใช้ อาจจะมีโมดูลที่รับผิดชอบหน้าที่ต่าง ๆ เช่น โมดูลสำหรับการเชื่อมต่อกับฐานข้อมูล (Database Module) ซึ่งหน้าที่ของโมดูลนี้คือการเชื่อมต่อกับฐานข้อมูล, ดึงข้อมูล, และส่งข้อมูลไปยังฐานข้อมูล ตัวอย่างฟังก์ชันในโมดูลนี้ได้แก่ ฟังก์ชันซึ่งทำหน้าที่เชื่อมต่อกับฐานข้อมูล และฟังก์ชันนี้ใช้เพื่อเพิ่มข้อมูลใหม่ในฐานข้อมูลเป็นต้น โมดูลสำหรับการตรวจสอบข้อมูล (Validation Module) โมดูลนี้จะตรวจสอบข้อมูลก่อนที่จะส่งไปยังฐานข้อมูล เช่น การตรวจสอบว่าข้อมูลที่กรอกมีความถูกต้องตามรูปแบบที่กำหนดหรือไม่ ตัวอย่างฟังก์ชันได้แก่ ฟังก์ชันที่จะตรวจสอบว่าที่อยู่อีเมลที่กรอกมีรูปแบบที่ถูกต้องหรือไม่ และฟังก์ชันที่จะตรวจสอบว่ารหัสผ่านที่กรอกมีความยาวและความซับซ้อนตามที่กำหนดหรือไม่ โมดูลสำหรับการแสดงผล (Display Module) โมดูลนี้จะทำหน้าที่แสดงผลข้อมูลให้กับผู้ใช้ เช่น การแสดงข้อมูลผู้ใช้ที่ดึงมาจากฐานข้อมูล ตัวอย่างฟังก์ชันได้แก่ ฟังก์ชันนี้จะแสดงข้อมูลของผู้ใช้ และฟังก์ชันที่จะแสดงข้อความแสดงข้อผิดพลาดเมื่อมีปัญหาในการดึงข้อมูล
- Comments เรียกทับศัพท์ว่า คอมเมนต์ ที่อาจจะแปลว่าความคิดเห็น หากในมุมของโปรแกรมคอมพิวเตอร์กลับถือเป็นส่วนช่วยอธิบายการทำงานของโค้ดแต่ละส่วน ใช้คอมเมนต์เพื่อให้ผู้อ่านหรือผู้เขียนเองสามารถเข้าใจโค้ดได้ง่ายขึ้นในอนาคต ไม่ได้ส่งผลต่อการทำงานของโปรแกรมแต่อย่างใด คอมเมนต์ควรเขียนให้กระชับ เข้าใจง่าย และตรงกับสิ่งที่โค้ดทำจริง
- Control Structures หรือโครงสร้างการควบคุม หมายถึง กลไกในภาษาการเขียนโปรแกรมที่ใช้ควบคุมการทำงานของโปรแกรมให้เป็นไปตามลำดับที่กำหนด หรือควบคุมการทำงานซ้ำตามเงื่อนไขที่ระบุ โดย Control Structures ช่วยให้โปรแกรมสามารถตอบสนองต่อเงื่อนไขหรือสถานการณ์ต่างต่าง ได้อย่างยืดหยุ่นและทำให้โค้ดมีความเป็นระบบ โดยทั่วไป Control Structures แบ่งออกได้เป็น 3 ประเภทหลัก คือ Selection Structures หรือโครงสร้างการเลือก ใช้ในการควบคุมเส้นทางการทำงานตามเงื่อนไขที่กำหนด ซึ่งเป็นวิธีที่ทำให้โปรแกรมสามารถเลือกทำงานในส่วนที่ตรงกับเงื่อนไขนั้นได้ Loop Structures หรือ โครงสร้างการวนซ้ำ ช่วยควบคุมการทำงานซ้ำ หรือวนซ้ำตามเงื่อนไขหรือจำนวนครั้งที่กำหนด ซึ่งทำให้โปรแกรมทำงานซ้ำได้จนกว่าจะครบจำนวนหรือเป็นไปตามเงื่อนไขที่กำหนดไว้ Jump Statements หรือ โครงสร้างการกระโดด เป็นการควบคุมให้โปรแกรมข้ามหรือออกจากโครงสร้างการทำงานบางส่วนในทันทีโดยไม่ต้องรอให้จบการทำงานทั้งหมด ตัวอย่างสำหรับ Phytonได้แก่ break ใช้ในการหยุดการทำงานของวงซ้ำหรือเงื่อนไข และออกจากโครงสร้างนั้นทันที continue ใช้ในการข้ามคำสั่งภายในวงซ้ำนั้น ไปสู่การวนซ้ำรอบถัดต่อไป return ใช้ในการส่งค่ากลับจากฟังก์ชันไปยังส่วนที่เรียกใช้งานและหยุดการทำงานของฟังก์ชันนั้นทันที
กฎ กติกา และหลักเกณฑ์ เหล่านี้ทำให้ภาษาทางเทคนิคมีความชัดเจน โดยช่วยให้ เครื่อง สามารถแปลและทำความเข้าใจโค้ดได้ถูกต้องตามเจตนาของผู้เขียนโปรแกรม คน ผู้เขียนผู้อ่านโค้ด สามารถเขียน อ่านและเข้าใจโค้ดได้ง่ายขึ้น ทำให้การพัฒนาและบำรุงรักษาโค้ดเป็นไปได้อย่างมีประสิทธิภาพ
===============================================================
“Domus leges domus habet, civitas leges civitatis habet, et lingua programmatis similiter.”
“บ้านมีกฏบ้าน เมืองมีกฏเมือง ภาษาของการโปรแกรมก็เฉกเช่นกัน”
Naturvirtus
XIV Novembris MMXXIV