บทความนี้ผมเขียนขึ้นจากประสบการณ์ ที่เขียนโปรแกรมไม่คล่อง จนเริ่มชำนาญ และเริ่มมีน้อง ๆ เพื่อน ๆ พี่ ๆ มาขอความช่วยเหลือ เวลารันโปรแกรมไม่ผ่าน หรือเกิด Error แม้กระทั่งคอมไพล์โค้ดยังไม่ผ่าน
คุณเชื่อหรือไม่ มีเซียนเทพโปรแกรมเมอร์หลายท่าน แค่ดมกลิ่น หรือเห็น Error ด้วยหางตา ก็รู้แล้วว่าเกิดจากอะไร? …จนสามารถแก้ไข และรันโปรแกรมผ่าน
ถ้าโปรแกรมเมอร์มือใหม่ หรือผู้เริ่มต้นศึกษา อยากรู้ว่าพวกเขามีเทคนิคอะไร ผมจะแนะนำ 5 เทคนิคง่าย ๆ ดังนี้ (ส่วนจะทำตามหรือไม่ ก็แล้วแต่)
1) เวลา IDE แจ้งเตือนอะไร ก็ช่วยอ่านกันหน่อยนะ
เคยมั๊ย เรียนวิชาโปรแกรมมิ่งครั้งแรก คอมไพล์ไม่ผ่าน ต่อให้นั่งงมเข็มในมหาสมุทร ก็ไม่รู้ว่าเขียนผิดตรงไหน
สุดท้าย โดดเรียน เล่มเกมส์ ถอดใจกินเหล้า ตัดสินใจเปลี่ยนสาขาเรียนเลยดีกว่า
ผมเองสารภาพด้วยความอาย
เคยเขียน 0 กับ o สลับกัน (เลขศูนย์ กับอักษรโอ)
หรือ l กับ I สลับกัน (อักษรแอลตัวเล็ก กับ ไอตัวใหญ่)
แล้วงงเป็นไก่ตาแตก ว่ามันผิดตรงไหน ทำไมถึงคอมไพล์ไม่ผ่าน ที่สำคัญนั่งหาทั้งวันครับ
ถ้าคุณยังใช้ Notepad เขียนโปรแกรมอยู่ ผมแนะนำให้เลิกใช้ซะ แต่ให้หา IDE เจ๋ง ๆ สักตัวมาใช้ เพื่อช่วยชีวิตคุณเวลาคอมไพล์โค้ดไม่ผ่าน แต่ก็นั้นแหละ ต่อให้ใช้ IDE เทพสักปานใด ถ้าใช่ไม่เป็น ก็เหมือนซื้อไอโฟนมารับสายอย่างเดียว ไร้ประโยชน์
ยิ่งเวลา IDE ฟ้อง เมื่อเกิด Error แดง จนมันจะทิ่มแทงทะลุตาเราอยู่แล้ว แต่กลับไม่ยอมอ่านกัน แล้วที่นี้เราจะรู้ว่าเขียนผิดที่ตรงไหนละเนี่ย ?
จริง ๆ แล้ว ถ้าลองเอาเมาส์ไปคลิกอ่าน บริเวณที่ IDE แจ้งเตือน ยิ่งเราแม่นไวยากรณ์ด้วยแล้ว แทบจะกระโดดตัวลอย รู้ว่าหนูหรือผมเขียนผิดเพราะอะไร
แถมสมัยนี้ IDE ฉลาดไอคิวสูงเยอะ ซึ่งบางครั้งมันจะแนะวิธีแก้ไขโค้ดให้เสร็จสรรพเรียบร้อยโรงเรียนจีน หน้าที่เรา เพียงแค่กดปุ่มปุ๊บ มันก็จะแก้ไขโค้ดให้อย่างอัตโนมัติ สบายแฮ เร็วกว่าต้มมาม่ากินอีก
แต่สำหรับมือใหม่ การฝึกฝนด้วยการเขียน Notepad หรือ Text Editor มันก็ช่วยฝึกตรรกะ ที่โค-ต-ระ สำคัญ
อารมณ์คงเหมือนซ้อม และซ้อม โดยการเขียนมือด้วย Text Editor
พอลงสนามจริง แทนที่จะขึ้นบันไดไปชั้น 5 ให้เหนื่อย
สู้ใช้ IDE ซึ่งเปรียบเสมือนลิฟท์ ที่พอกดปุ่มปั๊บก็ถึงชั้นที่ต้องการแหละ
2) เลิกใช่เหอะ ! Print out แสดงผลที่หน้าจอ เวลาไล่หาบั๊ก
เคยเป็นกันมั๊ย (เมื่อก่อนตัวผมเองก็เคยเป็น)
เวลานั่งไล่หาบั๊ก ชอบมาเขียนโค้ดด้วยการ print out แสดงผลที่หน้าจอ
ในบริเวณโค้ด ที่ตกเป็นผู้ต้องหาก่อการร้าย ซึ่งทำบาปเรา ให้ต้องมานั่งคดนั่งแข็งงมเป็นวัน
สุดท้ายกว่าจะรู้ว่าบั๊ก เกิดจากการเขียนโค้ดสลับบรรทัด
เรื่องแค่นี้แหละ! ที่เสียค่าโง่ ทำให้ตูเจ็บใจมาหลายสัปดาห์
และเชื่อว่า มีมือใหม่หลาย ๆ คน (สารภาพมาดี ๆ) ว่าคงทำแบบผม ไม่ยอมใช้การ Debugging ซึ่งเป็นของมีค่าดุจฟ้าประทาน สิ่งที่จะช่วยให้โปรแกรมเมอร์กินข้าวแกง มีชีวิตที่ดีขึ้น
และผมต้องขอบคุณโลกนี้ที่มีโหมด Debug ทำให้โปรแกรมเมอร์ไล่โค้ด เพื่อดูการทำงานของโปรแกรม ได้อย่างง่ายดาย
ดังนั้นมือใหม่ อย่างแรกเลยต้องหัดใช้โหมด Debug ให้เป็นก่อน ยิ่ง Debug เป็น ยิ่งใช้คล่อง ก็ยิ่งฉีดพ่นฆ่าบั๊กน่ารักมากมายได้รวดเร็วเป็นเข่ง ๆ ถ้าขายคงได้หลายกิโลแล้วละ
แต่ถ้าใครยังติดใจ อยากจะเขียน Print out ใส่ไปในโค้ด ผสมผสานกับการใช้โหมด Debug ก็ไม่ผิดกฎหมายอะไร …แถมบางครั้งก็มีประสิทธิภาพดีกว่าพึ่งการ Debug อย่างเดียวด้วย
ก็เข้าใจน่านะ โปรแกรเมอร์ส่วนใหญ่ก็อยากที่จะ Print out ยิ่งใส่รายละเอียดทุก step ขั้นตอนการทำงานได้ก็ยิ่งดี เพราะจะได้เห็นบั๊กง่าย ๆ ไม่ต้องเสียเวลามาเปิด Debug โหมด
แต่ขอแนะนำให้ Print out ลงเป็น Log ไฟล์ แบบมีหลายโหมดหน่อยก็ดีนะ เช่น Info, Warning, Error, และ Debug เป็นต้น ซึ่งแต่ละโหมดจะพ่นรายละเอียดการทำงาน ออกมาให้เห็นมากน้อยต่างกัน ยกตัวอย่าง
- ถ้าเป็นโหมด Info ก็จะแสดงข้อความที่สำคัญ ซึ่งจะแสดงไม่มากเท่าไร
- แต่ถ้าเป็นโหมด Debug ก็จะแสดงทุกสิ่งอย่าง ทุกขั้นตอนการทำงานอย่างละเอียดยิบ
เชื่อผมเถอะ ถ้าทำแบบนี้…
Debug + Log file
สูตรนี้เหมือนน้ำยาล้างผ้าขาว ช่วยล้างขจัดทำความสะอาดบั๊ก
แล้วชีวิตการไล่หาบั๊กของมือใหม่จะง่ายขึ้น !
3) ไม่อ่าน Error ที่พ่นออกมา ก็เหมือนหลี่ตาเขียนโปรแกรม
ครั้งหนึ่ง ผมเคยเจอ Error บางอย่าง งมหลายชั่วโมง แก้ไม่ได้
พอยกคอมไปให้เทพโปรแกรมเมอร์ชาวสิงค์โปร์ ช่วยดูให้หน่อย
เขาสามารถตอบผมทันทีภายใน 1 นาที ว่าสาเหตุเกิดจากอะไร
ที่เขาตอบผมได้เร็ว ไม่ใช่เพราะเขาอัจฉริยะอะไรหรอกครับ ก็ Error มันเขียนชัดเจน แบบถ้าคุณอ่านออก ก็จะรู้ว่าเกิดจากอะไร และอยู่บรรทัดไหนของโค้ด แต่ผมไม่ยอมอ่านเอง คนต่างชาติมันเก่งภาษา เลยเห็นข้อความชัดเจน เต็มสองลูกกะตา?น่าเอาโน๊ตบุ๊ค มาเขกกะโหลกตัวเองในตอนนั้นมาก ๆ
ดังนั้น สิ่งสำคัญของโปรแกรเมอร์เลย ห้ามเกลียดการอ่านภาษาอังกฤษ โดยเฉพาะเวลาโปรแกรมมันเกิด Error
และพ่นข้อความอะไรออกมา ต้องอ่านให้เป็น อ่านให้เข้าใจ บางทีก็เหมือนยาขม ต้องกล้ำกลืนฝืนทนอ่าน เพราะมันช่วยชีวิตเราได้จริง ๆ เวลารันโปรแกรมไม่ได้
สำหรับมือใหม่หลายคน เวลาเขียนโปรแกรม สายตามัวแต่จ้องอยู่ที่โค้ดเป็นหลัก ไม่ยอมอ่านวิเคราะห์ Error ที่พ่นให้เต็มสองลูกกะตา แต่กลับหลี่ตาลง เพราะขี้เกียจอ่านภาษาอังกฤษ ที่อ่านไม่รู้เรื่อง
เพราะถ้าไม่ใช่ข้อความ Error ที่ยากอะไร บางทีเห็นแล้ว ก็ร้องอ่อ รู้ตัวเองว่า เขียนโค้ดผิดเพราะอะไร เว้นแต่มันคือ Error แบบเก้าท่าพิศดารลำลึ้ก เกิดมาครั้งแรกเพิ่งเคยเห็นบนโลกมนุษย์ในชาตินี้ อย่างนี้ต้องไปถามเทพผู้หยั่งรู้กูรูพี่ Google?หรือไปถามเว็บ StackOverflow ขวัญใจคนไอที?โดยด่วน
แต่เชื่อเหอะ หลายคนไม่ยอมไปค้นหาก่อน มักจะโพสต์ถามในอินเตอร์เนตแทน โดยเฉพาะเฟสบุ๊คเห็นบ่อย ?เพราะคิดว่า สามารถหาผู้ใหญ่ใจดี ที่ช่วยตอบคำถามได้ง่ายกว่า หรือแอบตีเนียนเอาการบ้านมาให้คนอื่นช่วยทำ
แล้วเมื่อไร จะได้เป็นโปรแกรมเมอร์แบบบินเดียว มีโอกาสสร้างรายได้ มีเงินเดือนแพง ๆ ละท่าน ?
4) หัดคุ้นเคยข้อความ Error ที่เกิดขึ้นบ่อย ๆ
เทพโปรแกรมเมอร์หลายคน ก็เหมือนเล่นเกมส์แฟนพันธุ์แท้
เพียงเปิดแผ่นป้าย เห็นข้อความ Error ด้วยหางตา ก็รู้ว่าเกิดอะไรขึ้น
ถ้าใครเขียนโปรแกรมบ่อย ๆ จะพบว่า Error ในภาษาใด ภาษาหนึ่ง มันก็วนซ้ำไป ซ้ำมา อยู่แค่เนี่ยแหละ
ยกตัวอย่าง Error ที่พบบ่อย ๆ เช่น?Null, Index out of range , ต่อดาต้าเบสไม่ได้, ต่อระบบข้างนอกไม่ได้ หรือพวก HTTP response status code 500 และ 404 อะไรพวกนี้ เป็นต้น
…ซึ่งในแต่ละภาษาก็จะแสดงข้อความแตกต่างกันไป
ทางที่ดี คนที่เริ่มเขียนโปรแกรมครั้งแรก ควรพยายามหัดจดจำ Error ให้ได้ และรู้สาเหตุว่าเกิดจากอะไร อาจจะจดบันทึก หรือเขียนในสมุดด้วยก็ดี เพราะเวลาเกิดปัญหาอีกครั้ง ก็จะจำได้ และแก้ไขได้เอง
แต่แน่นอน ถ้าเกิดวันไหนเราทำบุญไม่ดี ดวงมรณะมาเยือน ก็ย่อมเจอ Error ยาก ๆ พิศดารแสนล้ำลึ้ก อย่างนี้ก็ต้องทำตามข้อ 3 ข้างบนที่เขียนไว้ ด้วยการไปค้นหาใน Google หรือ?StackOverflow
ถ้าแก้ไขไม่ได้จริง ๆ ก็อย่าอีโก้สูง ให้สอบถามผู้อื่นที่ทรงความรู้แก่กล้ากว่าเรา (แต่เราต้องหาทางแก้เต็มที่แล้วนะ) รบกวนให้เขาช่วยแก้ปัญหาให้หน่อย
แต่ถ้าหมดหนทางเยียวยา หรือแม้กระทั่งแอบพึ่งสิ่งศักดิ์ ยกทวยเทพมาเป็นกองทัพ?ก็ยังช่วยอะไรไม่ได้ เพราะองค์เทพโปรแกรมเมอร์?ยังไม่จุติในสรวงสวรรค์?ถ้าเป็นกรณีนี้ คงต้องแนะให้เปลี่ยนวิธีเขียนโปรแกรมใหม่หมดแหละ
5) คุ้นเคยกับการเขียนแบบวนลูป (Loop) แต่ชีวิตจริงอยากติดลูป
คนเรียนโปรแกรมมิ่งใหม่ ๆ คิดว่า คงงง เรื่องวน Loop แน่ ๆ
ขนาด 1 ลูปยังมึน พอเจอ 2 ลูป ไมเกรนขึ้น
พอไปนั่งสอบ เจอวน 3 ลูป เท่านั้นแหละ
ชีวิตนักเรียน ก็ติดลูปไปตลอดกาล
เรื่องลูปเป็นอะไร ที่สร้างความปวดหัวให้กับผู้เริ่มต้นศึกษาใหม่ ๆ แม้ว่าจะคอมไพล์ผ่าน รันได้ปกติทุกอย่าง
…แต่ผลการทำงานไม่ได้ดั่งใจ เพราะลูปทำงานผิด
วิธีแก้ไข เราต้องฝึกเขียนบ่อย ๆ จนสามารถมองลอจิก เรื่องการเขียนวนลูป เป็นของง่าย ๆ เหมือนปอกกล้วยเข้าปาก ถึงกระนั้นก็ดี เราควรระวังเรื่องอัลกอรึทึมให้ดี อย่าเขียนจนโปรแกรมรันช้าละ
ว่าไปแล้ว การทำงานจริง เขียนจริง โนสแตนอิน โนสตั๊นแมน การเขียนวน 1-2 ลูป พบเจอในโค้ดบ่อยมาก ดีไม่ดี เจอบ่อยกว่าเห็นหน้าแฟนเสียอีก ทางที่ดีควรฝึกให้คล่องและชำนาญจะดีกว่า
หมายเหตุ ถ้าใช้ภาษาที่มีคอนเซปท์ เรื่อง Functional Programming ก็จะหลีกเลี่ยงการเขียนวนลูป ในบางกรณีได้ (แต่มันนอกประเด็นของบทความเลยไม่กล่าวถึง)
แค่นี้แหละครับ เทคนิคง่าย ๆ 5 ข้อ ที่จะช่วยให้โปรแกรมเมอร์หน้าใหม่ สามารถรันโปรแกรมผ่านได้
ยินดีตอนรับสู่โลกการเขียนโปรแกรมครับ
Hello World !
แล้วพบกัน รักนะจุ๊บ ๆ
เขียนโดย แอดมินโฮ โอน้อยออก