“ทำไมต้อง?”
ก่อนจะเรียนรู้การเขียนโปรแกรมภาษา C/C++ ให้ไกลไปกว่านี้ ลองย้อนกลับมามองโครงสร้างพื้นฐานที่หลายคนเขียนจนคุ้นมือ
#include <iostream>
using namespace std;
int main() {
return 0;
}
หลายคนจำเพียงว่า “เขียนตามนี้แล้วโปรแกรมจะทำงาน” แต่เคยถามไหมว่า…ทำไมต้องเขียน?
ทำไมต้อง #include <iostream>
เพราะเรากำลังบอกให้โปรแกรมนำเครื่องมือสำหรับรับและแสดงผลข้อมูล เช่น cin และ cout มาใช้งาน หากโปรแกรมไม่ได้ใช้เครื่องมือเหล่านี้ ก็ไม่จำเป็นต้อง include ไลบรารีนี้เสมอไป
ทำไมต้อง using namespace std;
เพราะ cin และ cout อยู่ภายใน namespace ที่ชื่อว่า std คำสั่งนี้ทำให้เราเขียน cout ได้โดยไม่ต้องเขียนเต็มว่า std::cout อย่างไรก็ตาม ในโปรแกรมขนาดใหญ่ การเขียน std:: กำกับอย่างชัดเจนอาจปลอดภัยกว่า เพราะช่วยลดปัญหาชื่อซ้ำกัน
ทำไมต้อง int main()
เพราะ main() คือจุดเริ่มต้นที่ระบบจะเข้ามาทำงานเมื่อเปิดโปรแกรม ส่วน int หมายความว่าฟังก์ชันนี้จะส่งค่าจำนวนเต็มกลับไปยังระบบปฏิบัติการเมื่อทำงานเสร็จ
ทำไมต้อง return 0;
เพราะเป็นการส่งสัญญาณกลับไปบอกระบบว่า “โปรแกรมทำงานเสร็จสมบูรณ์และไม่พบข้อผิดพลาด” แม้ภาษา C++ รุ่นปัจจุบันจะอนุญาตให้ละคำสั่งนี้ใน main() ได้ แต่การเข้าใจความหมายของมันสำคัญกว่าการจำว่าต้องพิมพ์หรือไม่
หลายคนรีบก้าวไปสู่การเขียนโปรแกรมระดับสูง รีบฝึกทำโจทย์ และรีบเรียนรู้อัลกอริทึมที่ซับซ้อน จนลืมตั้งคำถามกับสิ่งเล็ก ๆ ที่เขียนอยู่ทุกวัน
การเขียนโปรแกรมที่ดีไม่ได้เริ่มต้นจากการจำโค้ดได้มากที่สุด แต่เริ่มจากการรู้ว่าโค้ดทุกบรรทัดมีไว้เพื่ออะไร
ก่อนจะถามว่า “ต้องเขียนอย่างไร?”
ลองถามให้ได้ก่อนว่า “ทำไมต้องเขียน?”
เพราะถ้าเข้าใจถึงแก่น เราจะไม่ได้เพียงเขียนโปรแกรมเป็น แต่จะสามารถคิด วิเคราะห์ และแก้ปัญหาได้อย่างแท้จริง
— ครูโจ๊ก ณัฐพล บัวอุไร
www.nattapon.com

