ความเข้าใจโปรแกรมคืออะไร?

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

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

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

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

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