“ถ้าคุณอยู่ในที่แห่งหนึ่ง แล้วคุณต้องการจะเดินจากตึก A ไป D แต่มีเงื่อนไขว่าคุณไม่สามารถเดินจาก A ไป D ได้โดยตรง ต้องผ่านตึกอื่นๆ จำนวนหนึ่งก่อน ทว่า เส้นทางระหว่างแต่ละตึกนั้น จะมีร้านอาหารระหว่างทาง แถมคุณจะต้องแวะซื้อของกินในทุกๆ ร้าน ซึ่งของกินในแต่ละร้าน ก็มีปริมาณแคลอรี่ที่มากน้อยแตกต่างกันไปอีก คำถามคือ เส้นทางไหนเป็นเส้นทางจากตึก A ไป D ที่คุณจะได้รับแคเลอรี่เข้าร่างกายน้อยที่สุด”
นี่คือลักษณะคร่าวๆ ของปัญหาที่ใกล้เคียงกับโจทย์ในการแข่งขันเขียนโปรแกรม ICPC (International Collegiate Programming Contest) การแข่งแก้ปัญหาด้วยโปรแกรมที่เพิ่งจัดแข่งขันรอบภูมิภาคเอเชีย-แปซิฟิกขึ้นที่ประเทศไทยเมื่อสัปดาห์ที่ผ่านมา โดยมีทีมจากประเทศไทย เวียดนาม ไต้หวัน จีน เกาหลี และญี่ปุ่นเดินทางมาร่วมแข่งขัน เพื่อค้นหาผู้ชนะที่จะเดินทางไปแข่งในรอบ World Finals 2020 ต่อไป
ลีกแข่งขันเขียนโปรแกรมของนิสิตนักศึกษาจากมหาวิทยาลัยต่างๆ ทั่วโลกนี้ มีมาตั้งแต่ปี ค.ศ.2004 แล้ว แต่อาจจะยังไม่เป็นที่รู้จักในวงกว้าง ทั้งที่จริงๆ แล้วมีผู้สมัครเข้าแข่งขันกว่า 50,000 คน จาก 3,000 กว่ามหาวิทยาลัย ใน 110 ประเทศทั่วโลก และประเทศไทยเอง ก็เคยเป็นเจ้าภาพในการจัดแข่งขัน World Finals เมื่อปี ค.ศ.2016 รวมถึงมีทีมที่เคยเข้าสู่รอบ World Finals มาแล้วสามครั้ง
“ถ้าคุณจะมองมันเป็นกีฬาก็มองได้ เพราะมันต้องอาศัยการฝึกฝน เด็กที่ทำไม่ได้ ก็ต้องกลับไปซ้อม ไปเก็บความรู้ แล้วกลับมาลงสนามใหม่ปีหน้า เหมือนกับการแข่งขันกีฬาประเภทอื่นๆ” อรรถสิทธิ์ สุรฤกษ์ อาจารย์ประจำภาควิชาวิศวกรรมคอมพิวเตอร์ จุฬาลงกรณ์มหาวิทยาลัย ผู้จัดการแข่งขัน ICPC พูดถึงการแข่งขันนี้ในมุมมองของกีฬาทางความคิด แถมยังเป็นกีฬาที่ใช้ ‘ทักษะแห่งอนาคต’ ที่ใครต่อใครต่างต้องการ เพื่อที่จะชนะในการแข่งขันด้วย
ในการแข่งขัน ICPC จะมีการคัดเลือกทีมชนะเลิศจากการแข่งระดับภูมิภาค (regionals) เพื่อไปแข่งในระดับโลก (World Finals) ซึ่งการแข่งระดับภูมิภาคมีทั้งหมดแปดภูมิภาค และในแต่ละภูมิภาคก็มีหลายสนามให้ประลองกันด้วย ตัวอย่างเช่น ประเทศไทยอยู่ในภูมิภาคเอเชีย-แปซิฟิก ซึ่งมีถึงสิบสนามให้เข้าแข่งขันเพื่อไปสู่รอบ World Finals ได้ แต่ในหลายๆ ประเทศ ก็จะมีการจัดแข่งขันระดับประเทศ ที่ผลัดกันจัดตามมหาวิทยาลัยต่างๆ ทั้งแบบออนไลน์ (online) และจัดที่สถานที่จริง (on-site) เพื่อเป็นสนามฝึกซ้อมให้ผู้เข้าแข่งขันเตรียมตัวไปแข่งระดับภูมิภาคและระดับโลกต่อได้
ส่วนรูปแบบการแข่งขันนั้น จะเป็นทีมนิสิตนักศึกษาสามคน มาช่วยกันเขียนโปรแกรมเพื่อแก้ปัญหาที่กำหนดให้ โดยมี ‘เวลา’ เป็นเงื่อนไขและปัจจัยสำคัญในการวัดผล คนที่ใช้เวลาน้อยที่สุดในการแก้ปัญหาจะได้คะแนนมากที่สุด และเมื่อตัดสินใจส่งแล้ว ทางกรรมการก็จะมีชุดทดสอบ (test case) หรือตัวอย่างข้อมูลที่เอาไว้ทดสอบว่าโปรแกรมที่เขียนมาแก้ปัญหาได้ถูกต้องเหมาะสมไหม ส่วนใครที่ส่งมาแล้วผิด ก็จะมีการบวกเวลาเพิ่มเป็นบทลงโทษ
โจทย์ที่นำมาใช้ในการแข่งขันจัดว่าค่อนข้างยากสำหรับนิสิตนักศึกษา บางทีมทำได้เกือบทุกข้อ ส่วนใหญ่ทำได้ไม่กี่ข้อ ขณะที่บางทีมที่ทำไม่ได้เลยก็มี เราจึงลองถามอาจารย์อรรถสิทธิ์ว่าจริงๆ แล้ว โจทย์เหล่านี้ต้องการวัดอะไร แล้วคนแบบไหนที่จะชนะการแข่งขันนี้ได้?
“เทคนิคในทางอัลกอริธึมนั้นมีหลากหลาย แต่โจทย์คือการวัดว่าเด็กสามารถเลือกทฤษฎีบท (theorem) ที่เหมาะสมมาใช้ได้ และเป็นทางแก้ที่ดีที่สุด (optimization) อธิบายง่ายๆ เช่น เราจะหาวิธีเดินทางจากจุด A ไป B มันมีวิธีที่เป็นไปได้หลายวิธี เราสามารถคำนวณหาวิธีที่เป็นไปได้ทั้งหมด แล้วเลือกวิธีที่ดีที่สุดมาเพื่อส่งเป็นคำตอบก็ได้ แต่ด้วยข้อจำกัดด้านเวลา เราต้องตัดสิ่งที่ไม่จำเป็นออก เพื่อให้กรณีที่เราจะนำมาคิดนั้นลดลง และทำให้เวลาที่ใช้ในการแก้ปัญหาลดลง เพื่อที่จะเป็นผู้ชนะ ส่วนเวลาเราตรวจ ก็จะมีชุดทดสอบ (test case) ที่หลากหลาย เพื่อวัดว่าคำตอบที่ส่งมานั้นหาทางแก้ที่ดีที่สุดได้ไหม แต่ก็ไม่ได้หมายความว่ามีเพียงแค่คำตอบเดียวสำหรับแต่ละคำถาม ในบางครั้งคนแข่งส่งวิธีการที่ดีกว่าเราก็มี เราก็ให้รางวัลพิเศษไป”
ส่วนกลุ่มคนที่คิดโจทย์ที่นิสิตนักศึกษาที่เข้าแข่งขันบอกว่ายากแสนยากนั้น มีทั้งอาจารย์ที่เป็นผู้เชี่ยวชาญจากมหาวิทยาลัยต่างๆ รวมถึงมีการเชิญผู้เชี่ยวชาญที่เป็นคนออกโจทย์ระดับ World Finals มาจากต่างประเทศ เพื่อให้มาตรฐานของการแข่งขันระดับภูมิภาคใกล้เคียงกับระดับโลกมากที่สุด และสามารถคัดคนที่มีประสิทธิภาพพอที่จะผ่านไปสู่การแข่งขันระดับโลกได้
เมื่อลองย้อนดูสถิติการแข่งขันที่ผ่านมาพบว่า ประเทศที่ชนะรอบ World Finals ในระยะ 10 ปีที่ผ่านมานี้คือรัสเซียและจีน (ดูสถิติผู้ชนะในการแข่งขันได้ ที่นี่) อาจารย์อรรถสิทธิ์เล่าให้ฟังว่ามหาวิทยาลัยในรัสเซียนั้น มีกระบวนการฝึกฝนที่ชัดเจนเพื่องานนี้โดยเฉพาะ เมื่อรู้แล้วว่าการแข่งขันแบบนี้วัดด้านไหน ก็จัดเป็นค่ายที่ฝึกทั้งเด็กทั้งอาจารย์ แต่ของประเทศไทยเรายังไม่มีการฝึกฝนด้านนี้อย่างจริงจัง และหากถามว่า ไทยอยู่ตรงไหนในสนามนี้? “โดยรวมคือไทยเราไม่ติดฝุ่นเลย แต่เด็กที่ได้รางวัลคือเด็กที่เก่งจริงๆ แล้วก็น่าเสียดายว่าเด็กที่เก่งมากๆ สุดท้ายก็จะไปเรียนต่อต่างประเทศ จริงๆ ในสนามแข่งระดับ World Finals ผมเจอเด็กไทยทุกปี แต่เป็นเด็กไทยที่มาแข่งในนามมหาวิทยาลัยของประเทศอื่นๆ ดูสัดส่วนแล้วก็ประมาณ 3% ซึ่งก็ถือว่าไม่น้อยเลย เพียงแต่ไม่ได้ไปในนามประเทศไทย”
หากเราพูดกันว่า การเขียนโปรแกรมและการคิดเชิงคำนวณเป็นทักษะที่จำเป็นสำหรับอนาคต และเราต้องการพัฒนาบุคลากรด้านนี้ในประเทศของเรา สนามของการแข่งขันเขียนโปรแกรม อาจจะเป็นสิ่งที่เราควรผลักดันให้เกิดการฝึกฝนอย่างจริงจัง เหมือนกับกีฬาประเภทอื่นๆ หรือเปล่า? เหมือนกับที่เราอยากเห็นบอลไทยไปบอลโลก หรือ eSports ไทยไป eSports โลก
สุดท้าย เมื่อเราถามความเห็นของอาจารย์ถึงภาพรวมของหนทางในการพัฒนาบุคลากรด้านการเขียนโปรแกรมของประเทศไทย ในด้านของการบรรจุหลักสูตรการเรียนเขียนโปรแกรมและวิทยาการคำนวณเข้าไปในโรงเรียน อาจารย์อรรถสิทธิ์ก็เล่าให้ฟังว่า
“ผมได้มีโอกาสมีส่วนในการออกแบบหลักสูตรช่วงเริ่มต้น ผมก็เชียร์ว่าหลักสูตรนี้วางไว้ดี แต่มันยังเป็นช่วงเริ่มต้นใช้ เด็กเพิ่งเริ่มเรียน อาจารย์เพิ่งเริ่มหัดสอน ก็อาจจะยังไม่เห็นผลเร็วนัก ที่บอกว่าดีคือหลักสูตรนี้วางไว้กว้างๆ ไม่ได้เขียนให้ทุกคนไปเรียนคอมพิวเตอร์ แต่เขียนให้ทุกคนพัฒนาตรรกะในการวิเคราะห์และแก้ปัญหาได้
“นอกจากเรื่องตรรกะในการคำนวณ ในอนาคตเราต้องอยู่กับเครื่องจักรกลหรือหุ่นยนต์อย่างหลีกเลี่ยงไม่ได้ เราจะหลับหูหลับตาเชื่อมันทั้งหมด หรือจะดีกว่าถ้าเราจะสามารถเข้าใจสถานการณ์ว่ามันเป็นแบบนี้เพราะอะไร เราจึงต้องเตรียมคนให้พร้อมที่จะอยู่กับเครื่องจักรกลหรือหุ่นยนต์ เข้าใจความเสี่ยง และสร้างความปลอดภัยให้ตัวเองได้ในโลกแบบนั้น ซึ่งสิ่งเหล่านี้ถูกใส่เข้าไปในหลักสูตรด้วย อีกอย่างคือเรื่องของการนำไปใช้อย่างสร้างสรรค์ จะเอาทักษะและตรรกะที่เรียนไปใช้กับเรื่องอื่นได้อย่างไร เด็กโตมาไม่จำเป็นต้องเรียนคอมฯ ก็ได้ อยากทำสวนทำไร่ ก็ต้องรู้จักวิธีเอาแนวคิดเหล่านี้ไปใช้ได้ ดีกับโรงเรียนที่อยู่ในชนบทตรงที่สามารถเชื่อมโยงกับชีวิตประจำวันได้ด้วย
“เพราะเรื่องตรรกะเหตุผล (logic) ถ้ามานั่งสอนเป็นเลกเชอร์มันน่าเบื่อ มันยาก มันไม่จำ แต่หลักสูตรใหม่นี้ถ้าใช้ได้อย่างมีประสิทธิภาพ ก็จะทำให้เด็กมีตรรกะได้โดยไม่ต้องมานั่งท่อง สร้างกลไกในสมองให้เกิดขึ้นได้ด้วยการเรียนรู้ ไม่ใช่แค่การเรียน”
อ่านเพิ่มเติมเกี่ยวกับ ICPC ได้ที่ icpc.baylor.edu หรือ acm-icpc.eng.chula.ac.th