เรียนเขียนโปรแกรม จำเป็นต้องใช้คอมมั้ย?

เรียน Programming หรือการเขียนโปรแกรม จำเป็นต้องใช้คอมมั้ย? เรียนโดยใช้แค่กระดาษกับดินสอได้เหรอ

ในความคิดของคนส่วนใหญ่ ถ้าเราจะเรียนเขียนโปรแกรม มันก็ต้องใช้คอมเรียน
ถ้าไม่มีคอมพิวเตอร์ จะเขียนโปรแกรมได้ยังไง? ในเมื่อการเขียนโปรแกรมคือการสั่งงานคอมพิวเตอร์?

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

นั่นเพราะคนทั่วไปอาจจะเข้าใจคำว่า "Programming" ผิดไปซักหน่อย
โปรแกรมคือคำสั่งที่เอามาเรียงๆ คอมพิวเตอร์จะมาอ่านคำสั่งพวกนี้แล้วทำงานตามลำดับไปเรื่อยๆ
ถ้าเราเรียงคำสั่งถูก คอมพิวเตอร์ก็ทำงานถูก
ถ้าเราเรียงคำสั่งผิด คอมพิวเตอร์ก็ทำงานถูกอยู่ดี !? เอ๊ะ ยังไง
คือคอมพิวเตอร์ทำงานถูกต้องตามคำสั่งที่เราเขียนไปให้ แค่ผลที่ได้ออกมามันไม่ตรงกับที่เราต้องการเท่านั้นเอง (ฮา)

คอนเซ็ปมันคือการคิด

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

การคิด Algorithm นั้นไม่ต้องใช้คอมพิวเตอร์หรือไม่ต้องพิมพ์โค้ดก็ได้
เราสามารถใช้กระดาษและดินสอ (หรือจะวาดใน Tablet ก็ได้นะ) ในการร่างความคิดพวกนี้ก่อนได้

ปกติที่เราสอนน้องๆ มา คนที่เขียนโปรแกรมไม่ได้ ไม่ใช่ว่าเขาพิมพ์โค้ดไม่ได้ แต่เขาคิด Algorithm ไม่ออกตั้งหาก
เขียนโค้ดหรือการท่องโค้ดว่าคำสั่งนี้ใช้อะไรไม่ได้อยากหรอก เน้นความคำอย่างเดียว (และเวลาทำงานจริง เราก็มี google นะ คำสั่งไหนจำไม่ได้ก็เสิร์จหาสิ)
เช่นอยากแสดงค่าออกมาทางหน้าจอ ภาษา Python ใช้ print() ส่วนภาษา Java อาจจะเขียนยาวหน่อยเป็น System.out.println()
แต่คอนเซ็ปมันก็คือเราต้องการสั่ง "ให้คอมแสดงค่าออกมา" เหมือนกัน

ปัญหาของคนส่วนใหญ่เลยเป็น "ไม่รู้ว่าตอนนี้ ต้องสั่งให้คอมแสดงค่าออกมา"
ไม่ใช่ "จำไม่ได้ว่าคำสั่งแสดงค่าใช้คำว่า print()"

คล้ายๆ คุณรู้จัก บวก ลบ คูณ หาร และใช้เป็นด้วย รู้ว่าเจอ 1+1 ต้องตอบ 2
แต่พอเจอโจทย์ ค่าจอดรถชั่วโมงละ10บาท แต่จอดฟรี2ชม.แรก ถ้าจอดไป5ชม.ค่าจอดเท่าไหร่
คุณอาจจะตอบว่า 30 บาทไง อันนี้คือคุณกำลังพยายามคำนวณ (Compute) เองอยู่
แต่ในมุมมองโปรแกรมเมอร์ คุณควรจะคิดว่ามันคือ

  • ถ้า ชม. น้อยกว่า 2 ค่าจอด = 0
  • ไม่งั้นค่าจอด = (ชม.-2) x 10

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

หมายเหตุ: มีวิธีคิดแบบอื่นอีกเยอะ อันนี้เป็นแค่ตัวอย่าง

อาจจะดูว่า ก็ไม่เห็นยากเลยไม่ใช่เหรอ แต่คนที่เรียนเขียนโปรแกรมแรกๆ เจอปัญหานี้เยอะมากนะ
เอาแค่โจทย์ค่าจอดรถเมื่อกี้ น้องที่เราสอนก็มีคนติด คิดลำดับว่าต้องเอา ชม. มาลบ2ก่อน แล้วค่อยคูณ10ไม่ออกเยอะ
แม้ว่าถ้าถามไปตรงๆ ว่าจอด5ชม. ค่าจอดเท่าไหร่ --> ส่วนใหญ่จะตอบ30บาทได้อย่างไม่มีปัญหา
คือเราจะพยายามคำนวณ (Compute) แทนเครื่องจักร (Computer)
จริงๆ แล้วเราต้องคิดว่าจะให้มันคำนวณยังไงตั้งหาก (Programming)

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

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

ในต่างประเทศมีการสอนแนวคิดของการโค้ดดิ้งโดยไม่ต้องใช้คอมที่เรียกว่า Unplugged Programming ด้วยนะ

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

ถึงบอกว่าเป็นเกม จริงๆ เรียนได้ทั้งเด็กและผู้ใหญ่นะ สนใจลองเสิร์จ CS Unplugged ดูได้ มีคนแจกเป็นหนังสือ PDF เลย (มีแปลไทยด้วย)

สรุป

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

สุดท้าย ขอทิ้งท้ายไว้หน่อยละกันว่า...
โปรแกรมเมอร์คนแรกเกิดก่อนเครื่องคอมพิวเตอร์!

6 Total Views 6 Views Today
Ta

Ta

สิ่งมีชีวิตตัวอ้วนๆ กลมๆ เคลื่อนที่ไปไหนโดยการกลิ้ง .. ถนัดการดำรงชีวิตโดยไม่โดนแสงแดด
ปัจจุบันเป็น Senior Software Engineer อยู่ที่ Centrillion Technology
งานอดิเรกคือ เขียนโปรแกรม อ่านหนังสือ เขียนบทความ วาดรูป และ เล่นแบดมินตัน

You may also like...