ก้าวแรกสู่การเป็นนักเขียนโปรแกรม(1st step of a programmer)


“หลักการพื้นฐานในการเขียนโปรแกรม คืออะไร?“… คงจะมีหลาย ๆ คนสงสัยว่าโดยเฉพาะน้อง ๆ ที่เพิ่งจะเริ่มก้าวเข้ามาสู่วงการเขียนโปรแกรม หรือเพิ่งจะหันมาสนใจงานด้านเขียนโปรแกรม วันนี้เราจะมาคุยกันเรื่องนี้แหละครับ
บอกไว้ก่อนนะครับ อย่าพยายามตามหาบทความที่เป็นหลักวิชาการ… ที่นี่ไม่มีครับ บล็อกแนวนั้นมีเยอะแล้วครับ ผมเพียงแค่อยากจะมาเสริมในส่วนที่ไม่ค่อยจะไม่ใครถ่ายทอดให้ทราบ… เรื่องของประสบการณ์ในงานเขียนโปรแกรมจริง ๆ อันนี้ต่างหากครับ ที่ไม่ค่อยมีใครเขียนถึง… เอาล่ะ มาว่ากันที่หัวข้อของเราต่อ “หลักการพื้นฐานในการเขียนโปรแกรม คืออะไร?”… ผมตอบแบบสั้น ๆ ให้ครับ มันคือ “ตรรกะ” หรือ “Logic” สั้น ๆ เลยนะ
“ตรรกะ” คือ แนวคิด วิธีคิด แนวทางแก้ปัญหา หรืออะไรก็ตามช่างมันเถอะ เอาเป็นเข้าใจง่าย ๆ นะครับ มันคือการที่เราได้รับโจทย์มาให้เขียนโปรแกรม แล้วเราสามารถคิดขั้นตอนในการแก้ปัญหาออกมาเป็นแนวทางแก้ปัญหาได้ เช่น ให้หาค่าเฉลี่ย เราต้องทำอะไรบ้าง ใช่แล้วครับ บวกค่าทั้งหมดเข้าด้วยกัน นับว่าโจทย์ให้มากี่ค่า แล้วเอาสองตัวมาหารกัน แม่นบ่…
“ตรรกะ” เน้นเลยนะครับ ตรงนี้สำคัญมาก โดยเฉพาะน้อง ๆ ที่ยังเรียนอยู่ หรือ junior programmer ก็ตามแต่ เราสามารถที่จะแก้โจทย์หนึ่ง ๆ โดยวาดภาพขั้นตอนการทำงานในอากาศได้หรือยัง? ถ้ายัง “ฝึก” ซะ! ..จุดเริ่มต้นตรงนี้ ไม่มีใครเก่งกว่าใครหรอก มันอยู่ที่การฝึกฝน บางคนอาจจะทำได้เร็วหน่อย ไม่เป็นไร ช่างหัวเขา ลองเทียบกับกีฬาดู ของพวกนี้มันสำคัญที่เราอยู่กับมันมากแค่ใหน งานเขียนโปรแกรมก็เหมือนกัน บางคนอาจจะมีพรสวรรค์ ก็ไม่ว่ากัน แต่ถ้า “มวยค่ายไม่ซ้อม ก็มีสิทธิ์แพ้มวยวัดได้เหมือนกัน” เห็นด้วยหรือเปล่า
เดี๋ยวจะหาว่าผม “พล่าม“… มาดูกันดีกว่าว่างานอะไรบ้างที่เราต้อง “วาดภาพในอากาศ” ให้ได้

* Sequence(ลำดับขั้น) : ขอให้แยกแยะขั้นตอนการแก้ปัญหา ออกมาเป็นลำดับ เช่น จะรดน้ำต้นไม้ต้องทำขั้นตอนใหนบ้าง >> เอาถังไปรอ -> เปิดน้ำ -> รอให้น้ำเต็มถัง -> ปิดน้ำ –> หิ้วไปรดต้นไม้ อะไรประมาณนี้ มันมีอยู่ในชีวิตประจำวันอยู่แล้ว เพียงแต่นึกในทางการเขียนโปรแกรมมันต้องเป็นขั้นเป็นตอนนะครับ(คอมพิวเตอร์มันไม่ได้มีวิจาณญาณเหมือนคนเรานะ อย่าลืม!)
* Decision(ตัดสินใจ) : มันคือ IF-THEN-ELSE น่ะแหละ ตัวอย่างเดิม จะรดน้ำต้นไม้ แต่ต้นไม้เยอะเหลือเกิน ต้องเลือกถังน้ำ ถังใหญ่ หรือเล็ก >> เลือกถึงน้ำขนาดใหญ่ “มีหรือไม่” >> มี : ก็กลับไปทำตาม Sequence ข้างบน / ไม่มี : ใช้ถึงเล็ก ทำซ้ำด้วย Repetition ข้อถัดไป
* Repetition/Loop(การทำซ้ำ) : ตัวอย่างต่อเนื่อง กรณีที่ไม่มีถังใบใหญ่ ก็ใช้การ Sequence ข้างบนซ้ำ ๆ จนกว่าจะรดน้ำต้นนไม่ครบทุกต้น

เพียงแค่ 3 อย่างข้างต้น ฝึกซ้ำ ๆ ทำบ่อย ๆ “ตรรกะ” ในหัวเราก็จะดีขึ้นจนสามารถเขียนโปรแกรมได้ “Logic สำคัญกว่า Syntax” จำไว้เลยนะครับ ของเพียงเรามีตรรกะในหัว เราจะสามารถเขียนโปรแกรมได้ทุกภาษา(ใช้เวลาศึกษา Syntax สักหน่อยก็เขียนได้แล้ว)
สำหรับเครื่องมือที่จะฝึกฝน Logic ในการเขียนโปรแกรม ก็ใช้พวก Flow-Chart หรือ Pseudocode อะไรพวกนี้ก็ได้ครับ สำคัญที่จะหาโจทย์มาจากใหนในการฝึก? …search ใน google ด้วยคำนี้ครับ “ข้อสอบ CT211” หรือ “ข้อสอบ CS111” ก็ได้ครับ โจทย์ที่นี่เขาแรง ขอบอก!
ตัวอย่างโจทย์ : จงเขียน flow diagram สำหรับคำนวณหาจำนวนปีที่ใช้เมื่อฝากเงินต้นจำนวนหนึ่งแล้วต้องการให้เงินต้น ที่ฝากนั้นมีค่ามากกว่าหรือเท่ากับ 2 เท่า คิดดอกเบี้ยทบต้นในแต่ละปี โดยรับ input 2 ค่า คือ เงินต้น และอัตราดอกเบี้ย
ลองฝึกเขียนดูนะครับ เมื่อเรามีตรรกะ ก็ไม่ต้องกังวลว่าจะเขียนภาษาอะไรแล้ว และที่สำคัญตัวผู้เขียนเองเขียนโปรแกรมภาษาอะไรก็ไม่เป็น เก่งสุด Pascal แต่ได้งานทำเพราะ “ตรรกะ/Logic” อย่างเดียวเท่านั้นเอง
———————————————————————————————————————
ขอขอบคุณข้อมูลดี ๆ จาก
วัชรากร @Dev24x7.com
ในนามของ นักเขียนโปรแกรม .Net
http://dev24x7.com/%E0%B8%81%E0%B9%89%E0%B8%B2%E0%B8%A7%E0%B9%81%E0%B8%A3%E0%B8%81%E0%B8%AA%E0%B8%B9%E0%B9%88%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%80%E0%B8%9B%E0%B9%87%E0%B8%99%E0%B8%99%E0%B8%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%E0%B8%A2%E0%B8%99%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%81%E0%B8%81%E0%B8%A3%E0%B8%A11st-step-of-a-programmer/

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s