ความเหมือนที่แตกต่าง

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

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

    การตัดสินใจ (Decision) ในการดำเนินชีวิตประจำวันนั้นจะเกิดขึ้นประจำอยู่แล้ว ตั้งแต่เริ่มตื่นนอนจนเราเข้านอนก็ว่าได้ แม้แต่ตอนเดินทางไปทำงานหรือไปโรงเรียน เราก็เกิดการตัดสินใจแล้วว่าเราจะเดินทางไปเส้นทางไหนจะถึงที่ทำงานหรือถึงโรงเรียนได้เร็วที่สุด ถ้าเรามาพูดเรื่องของการตัดสินใจของโปรแกรมแล้วก็ไม่แตกต่างกันมากนัก เพราะการตัดสินใจมีตั้งแต่ 2 ทางเลือก แต่บางกรณีเท่านั้นที่จำเป็นที่จะต้องมีการเลือกมากกว่า 2 ทางเลือก

    การทำซ้ำ (Iteration) ในการดำเนินชีวิตประจำวันนั้นจะเป็นการทำงานที่ดำเนินการแบบซ้ำกัน ตัวอย่างเช่น พนักงานต้อนรับ จะทำหน้าที่ต้อนรับและอำนวยความสะดวกให้กับผู้มาเยือน ส่วนการเขียนโปรแกรมนั้นจะเป็นการทำซ้ำตามเงื่อนไขต่างๆ ที่เกิดขึ้นว่าเราต้องการให้ทำอะไร เป็นจำนวนเท่าไร ซึ่งบางครั้งการทำซ้ำนั้นเราเรียกว่า "ลูป (Loop)" นั่นเอง แต่การเขียนโปรแกรมแบบการทำซ้ำนั้นมีประมาณ 3 รูปแบบด้วยกัน แต่ในที่นี้ไม่ขอพูดถึงมีลักษณะการทำงานครับ

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

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