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

การเขียนโปรแกรมเชิงแข่งขันหรือการเขียนโปรแกรมกีฬาเป็นกีฬาทางความคิดที่ผู้เข้าร่วมพยายามเขียนโปรแกรมตามข้อกำหนดที่ให้ไว้ การแข่งขันมักจัดขึ้นทางอินเทอร์เน็ตหรือเครือข่ายท้องถิ่น การเขียนโปรแกรมเชิงแข่งขัน ได้รับการยอมรับและสนับสนุนโดยบริษัทซอฟต์แวร์และอินเทอร์เน็ตข้ามชาติหลายแห่ง เช่นGoogle [ 1 ] [ 2 ]และMeta [ 3 ]
โดยทั่วไป การแข่งขันเขียนโปรแกรมจะเริ่มต้นด้วยผู้จัดงานนำเสนอชุดปัญหาเชิงตรรกะหรือ คณิตศาสตร์ หรือที่เรียกว่าปริศนาหรือความท้าทาย ให้แก่ผู้เข้าแข่งขัน (ซึ่งอาจมีจำนวนตั้งแต่หลักสิบหรือหลักร้อยไปจนถึงหลายพันคน) ผู้เข้าแข่งขันจะต้องเขียนโปรแกรมคอมพิวเตอร์ที่สามารถแก้ปัญหาเหล่านี้ได้ การตัดสินส่วนใหญ่จะพิจารณาจากจำนวนปัญหาที่แก้ได้และเวลาที่ใช้ในการเขียนโปรแกรม แต่ก็อาจรวมถึงปัจจัยอื่นๆ ด้วย (คุณภาพของผลลัพธ์ที่ได้ เวลาในการประมวลผล การใช้หน่วยความจำ ขนาดของโปรแกรม ฯลฯ)
ประวัติศาสตร์
หนึ่งในการแข่งขันที่เก่าแก่ที่สุดที่รู้จักกันคือการแข่งขันการเขียนโปรแกรมระดับวิทยาลัยนานาชาติ (ICPC) ซึ่งมีต้นกำเนิดในช่วงทศวรรษ 1970 [ 4 ]และได้ขยายไปสู่การรวม 88 ประเทศในการแข่งขันปี 2011
ตั้งแต่ปี พ.ศ. 2533 ถึง พ.ศ. 2537 Owen Astrachan , Vivek Khera และ David Kotz ได้จัดการแข่งขันเขียนโปรแกรมแบบกระจายศูนย์บนอินเทอร์เน็ตเป็นครั้งแรก โดยได้รับแรงบันดาลใจจาก ICPC [ 5 ]
ความสนใจในการเขียนโปรแกรมเชิงแข่งขันเติบโตขึ้นอย่างมากตั้งแต่ปี 2000 จนมีผู้เข้าร่วมหลายหมื่นคน (ดูการแข่งขันที่น่าสนใจ ) และมีความเชื่อมโยงอย่างแน่นหนากับการเติบโตของอินเทอร์เน็ต ซึ่งอำนวยความสะดวกในการจัดการแข่งขันระดับนานาชาติทางออนไลน์ ขจัดปัญหาด้านภูมิศาสตร์
ภาพรวม
จุดมุ่งหมายของการเขียนโปรแกรมเชิงแข่งขันคือการเขียนโปรแกรมคอมพิวเตอร์ที่สามารถแก้ปัญหาที่กำหนดได้ ปัญหาส่วนใหญ่ที่ปรากฏในการแข่งขันเขียนโปรแกรมมีลักษณะทางคณิตศาสตร์หรือตรรกะ งานทั่วไปดังกล่าวจัดอยู่ในหมวดหมู่ใดหมวดหมู่หนึ่งต่อไปนี้: คณิตศาสตร์เชิงการจัดเรียง , ทฤษฎีจำนวน , ทฤษฎีกราฟ , ทฤษฎีเกมเชิงอัลกอริทึม , เรขาคณิตเชิง คำนวณ , การวิเคราะห์สตริง,คณิตศาสตร์เชิงดิสครีตและโครงสร้างข้อมูล[ 6 ]ปัญหาที่เกี่ยวข้องกับการเขียนโปรแกรมแบบมีข้อจำกัดและปัญญาประดิษฐ์ก็เป็นที่นิยมในการแข่งขันบางรายการเช่นกัน
ไม่ว่าจะเป็นปัญหาประเภทใด กระบวนการแก้ปัญหาโดยทั่วไปสามารถแบ่งออกเป็นสองขั้นตอนหลักๆ คือ การสร้างอัลกอริทึม ที่มีประสิทธิภาพ และการนำอัลกอริทึมไปใช้งานในภาษาโปรแกรม ที่เหมาะสม (ชุดภาษาโปรแกรมที่อนุญาตจะแตกต่างกันไปในแต่ละการแข่งขัน) นี่คือสองทักษะที่ถูกทดสอบบ่อยที่สุดในการแข่งขันเขียนโปรแกรม
ในการแข่งขันส่วนใหญ่ การตัดสินจะทำโดยอัตโนมัติโดยเครื่องโฮสต์ ซึ่งโดยทั่วไปเรียกว่าเครื่องตัดสิน ทุกโซลูชันที่ผู้เข้าแข่งขันส่งมาจะถูกทดสอบบนเครื่องตัดสินกับชุดกรณีทดสอบ (โดยปกติจะเป็นความลับ) โดยทั่วไปแล้ว ปัญหาในการแข่งขันจะมีระบบการให้คะแนนแบบ "ได้ทั้งหมดหรือไม่ได้เลย" หมายความว่า โซลูชันจะ "ได้รับการยอมรับ" ก็ต่อเมื่อให้ผลลัพธ์ที่น่าพอใจในทุกกรณีทดสอบที่เครื่องตัดสินทดสอบ และจะถูกปฏิเสธหากไม่เป็นเช่นนั้น อย่างไรก็ตาม ปัญหาในการแข่งขันบางข้ออาจอนุญาตให้มีการให้คะแนนบางส่วน ขึ้นอยู่กับจำนวนกรณีทดสอบที่ผ่าน คุณภาพของผลลัพธ์ หรือเกณฑ์อื่นๆ ที่ระบุไว้ การแข่งขันบางรายการกำหนดให้ผู้เข้าแข่งขันส่งเฉพาะผลลัพธ์ที่สอดคล้องกับข้อมูลอินพุตที่กำหนดเท่านั้น ในกรณีนี้ เครื่องตัดสินจะต้องวิเคราะห์เฉพาะข้อมูลผลลัพธ์ที่ส่งมาเท่านั้น
ระบบตัดสินออนไลน์คือสภาพแวดล้อมออนไลน์ที่ใช้ในการทดสอบ ระบบตัดสินออนไลน์มีรายการจัดอันดับที่แสดงผู้ใช้ที่มีจำนวนโซลูชันที่ได้รับการยอมรับมากที่สุดและ/หรือเวลาในการดำเนินการที่สั้นที่สุดสำหรับปัญหาเฉพาะ[ 7 ]
การแข่งขันที่น่าสนใจ
การแข่งขันอัลกอริทึม
| ชื่อของการแข่งขัน[ 8 ] | ผู้จัดงาน | ผู้ชม | คำอธิบาย | จำนวนผู้เข้าร่วม |
|---|---|---|---|---|
| Google Code Jam (GCJ) | เปิด | การแข่งขันประจำปีที่จัดและสนับสนุนโดยGoogleตั้งแต่ปี 2003 จนกระทั่งถูกยกเลิกในปี 2023 [ 9 ] | 32,702 (2022) [ 10 ] | |
| การแข่งขันการเขียนโปรแกรมระดับวิทยาลัยนานาชาติ (ICPC) [ 11 ] | มูลนิธิ ICPC | นักศึกษามหาวิทยาลัย | การแข่งขันแบบทีมสำหรับนักศึกษามหาวิทยาลัย การแข่งขันประกอบด้วยรอบระดับภูมิภาคหลายรอบ ซึ่งจะสิ้นสุดลงด้วยรอบชิงชนะเลิศระดับโลกที่จัดขึ้นทุกปี ทีมประกอบด้วยนักศึกษา 3 คนจากมหาวิทยาลัยเดียวกัน และอนุญาตให้ใช้คอมพิวเตอร์ได้เพียงเครื่องเดียว[ 12 ] | 50,000+ (2022) [ 13 ] |
| การแข่งขันโอลิมปิกวิชาการนานาชาติสาขาสารสนเทศศาสตร์ (IOI) | ไอโอไอ | นักเรียนเตรียมเข้ามหาวิทยาลัย | การแข่งขันระดับนานาชาติสำหรับนักเรียนมัธยมศึกษา จัดขึ้นทุกปีตั้งแต่ปี 1989 แต่ละประเทศสามารถส่งผู้เข้าร่วมแข่งขันได้ไม่เกิน 4 คน | 349 จาก 88 ประเทศ (2022) [ 14 ] |
| Meta Hacker Cup (เดิมชื่อFacebook Hacker Cup ) | แพลตฟอร์มเมตา | เปิด | การแข่งขันประจำปีที่จัดขึ้นตั้งแต่ปี 2011 จัดและสนับสนุนโดยMeta (เดิมคือFacebook ) | 27,604 (2022) [ 15 ] |
| Topcoder Open (TCO) | ท็อปโค้ดเดอร์ | เปิด | การแข่งขันอัลกอริทึมประจำปีจัดขึ้นตั้งแต่ปี 2001 จนกระทั่งถูกยกเลิกในปี 2023 [ 16 ] |
ในการแข่งขันส่วนใหญ่ที่กล่าวมาข้างต้น การแข่งขันมักจะจัดขึ้นหลายรอบ โดยปกติจะเริ่มต้นด้วยรอบออนไลน์ และจบลงด้วยรอบชิงชนะเลิศแบบจัดขึ้นจริง ผู้ที่ได้อันดับสูงสุดในการแข่งขัน IOI และ ICPC จะได้รับเหรียญทอง เงิน และทองแดง ส่วนในการแข่งขันอื่นๆ จะมีการมอบเงินรางวัลให้แก่ผู้ที่ได้อันดับสูงสุด การแข่งขันเหล่านี้ยังดึงดูดความสนใจจากผู้สรรหาบุคลากรจากบริษัทซอฟต์แวร์และบริษัทอินเทอร์เน็ตหลายแห่ง ซึ่งมักจะติดต่อผู้เข้าแข่งขันเพื่อเสนองานให้
ปัญญาประดิษฐ์และการเรียนรู้ของเครื่องจักร
- รายชื่ออาจไม่ครบถ้วน
| ชื่อ | ผู้จัดงานหลัก | คำอธิบาย | สถานะ |
|---|---|---|---|
| แค็กเกิล | แพลตฟอร์มการแข่งขันและชุมชนออนไลน์ด้านวิทยาศาสตร์ข้อมูล การเรียนรู้ของเครื่อง และการเพิ่มประสิทธิภาพทางคณิตศาสตร์ | คล่องแคล่ว | |
| ความท้าทายด้าน AI | มหาวิทยาลัยวอเตอร์ลู | การแข่งขันเขียนโปรแกรมปัญญาประดิษฐ์ระดับนานาชาติที่จัดขึ้นระหว่างปี 2009 ถึง 2011 | ไม่ใช้งาน |
| การแข่งขันเขียนโปรแกรม AI Halite | ทูซิกมา, คอร์เนลล์เทค | การแข่งขันเขียนโปรแกรมคอมพิวเตอร์ที่ผู้เข้าร่วมสร้างบอทด้วยภาษาโปรแกรมที่ต้องการเพื่อแข่งขันกันในสนามรบสองมิติ | ไม่ทราบ |
| ถ้วย AI ของรัสเซีย | กลุ่ม Mail.Ru, My.com | การแข่งขันเขียนโปรแกรมปัญญาประดิษฐ์ประจำปี | ไม่ทราบ |
การประกวดที่เน้นเทคโนโลยีโอเพนซอร์ส
- รายชื่ออาจไม่ครบถ้วน
| ชื่อการประกวด | ผู้สนับสนุนหลัก | คำอธิบาย | ดำเนินการตั้งแต่ | เวลาปกติ | รอบการสมัครถัดไป | สถานะ |
|---|---|---|---|---|---|---|
| การแข่งขันการเขียนโปรแกรมแบบหลายเอเจนต์ | มหาวิทยาลัยเทคโนโลยีคลอสทาลร่วมกับเวิร์กช็อปที่เน้นตัวแทน (agent-oriented workshops) | การแข่งขันเขียนโปรแกรมระดับนานาชาติประจำปี เพื่อกระตุ้นการวิจัยในด้านการพัฒนาและการเขียนโปรแกรมระบบหลายเอเจนต์ | 2548 | กันยายน | กันยายน 2554 | คล่องแคล่ว |
| โครงการ Google Summer of Code | บริษัท กูเกิล อิงค์ | โครงการประจำปีที่ Google มอบทุนสนับสนุนแก่นักเรียนหลายร้อยคนที่ทำโครงการเขียนโค้ดซอฟต์แวร์โอเพนซอร์ส/ฟรีซอฟต์แวร์ตามที่ร้องขอสำเร็จในช่วงฤดูร้อน | 2548 | มี.ค.-ส.ค. | 23 มี.ค. - 3 เม.ย. | คล่องแคล่ว |
| การประกวดแบบเปิดกว้างของ Google | บริษัท กูเกิล อิงค์ | การประกวดที่จัดโดย Google ในปี 2007-2008 สำหรับนักเรียนมัธยมปลาย การประกวดนี้ออกแบบมาเพื่อส่งเสริมให้นักเรียนมัธยมปลายมีส่วนร่วมในโครงการโอเพนซอร์ส | 2007 | พฤศจิกายน-กุมภาพันธ์ | ไม่ทราบ | ไม่ทราบ |
แพลตฟอร์มออนไลน์
ชุมชนโปรแกรมเมอร์ทั่วโลกได้สร้างและดูแลรักษาแหล่งข้อมูลทางอินเทอร์เน็ตหลายแห่งที่อุทิศให้กับการเขียนโปรแกรมเชิงแข่งขัน แหล่งข้อมูลเหล่านี้จัดการแข่งขันแบบเดี่ยวๆ โดยมีหรือไม่มีรางวัลเล็กน้อย โดยทั่วไปผู้ใช้จะได้รับการจัดอันดับตามผลงานในการแข่งขันเหล่านั้น คลังเก็บโจทย์เก่าๆ เป็นแหล่งข้อมูลยอดนิยมสำหรับการฝึกฝนการเขียนโปรแกรมเชิงแข่งขัน นอกจากนี้ยังมีองค์กรหลายแห่งที่จัดการแข่งขันเขียนโปรแกรมเป็นประจำ ได้แก่:
| ชื่อ | คำอธิบาย |
|---|---|
| การกำเนิดของโค้ด | การแข่งขันเขียนโปรแกรมประจำปีที่จัดขึ้นในช่วงเทศกาล เตรียมรับวันคริสต์มาส โดยจะมีการปล่อยโจทย์ใหม่สองข้อในแต่ละวัน ไปจนถึงวันคริสต์มาส โจทย์ข้อที่สองของแต่ละวันจะถูกล็อกไว้จนกว่าจะแก้ข้อแรกเสร็จ และโดยปกติแล้วจะเป็นโจทย์ที่ต่อเนื่องจากข้อแรก มีการจัดอันดับทั้งแบบรวมทั่วโลกและแบบส่วนตัวในแต่ละปี โดยการจัดอันดับจะขึ้นอยู่กับว่าใครแก้โจทย์ได้ก่อนเป็นคนแรก |
| CodeChef [ 17 ] [ 18 ] | โครงการนี้ดูแลโดย Unacademy โดยจัดการแข่งขันระยะยาว 3 วัน และการแข่งขันระยะสั้นอีกสองรายการทุกเดือน (รายการหนึ่งคล้ายรูปแบบ IOI ชื่อ Lunchtime และอีกรายการคล้ายรูปแบบ ICPC ชื่อ Cook-Off) และให้บริการแพลตฟอร์มการจัดแข่งขันแก่สถาบันการศึกษาโดยไม่เสียค่าใช้จ่าย ผู้ชนะสองอันดับแรกของการแข่งขันระยะยาวจะได้รับรางวัลเป็นเงินสด ในขณะที่ 10 อันดับแรกของโลกจะได้รับเสื้อยืด |
| Codeforces [ 19 ] [ 17 ] | แพลตฟอร์มของรัสเซียที่ดูแลโดยมหาวิทยาลัย ITMOจัดการแข่งขันบ่อยครั้ง (สูงสุดสองครั้งต่อสัปดาห์) แต่ละครั้งใช้เวลา 2-3 ชั่วโมง (มีให้เลือกทั้งภาษาอังกฤษและรัสเซีย) ผู้ใช้ยังสามารถเข้าร่วมการแข่งขันที่ผู้ใช้รายอื่นเผยแพร่ในส่วน "gym" ส่งกรณีทดสอบเพิ่มเติมเพื่อ "แฮ็ก" ผลงานของผู้เข้าร่วมแข่งขันคนอื่น ๆ ในระหว่างการแข่งขัน เขียนบล็อกเพื่อแบ่งปันเทคนิคระหว่างกัน และดูซอร์สโค้ดของวิธีแก้ปัญหาจากผู้ใช้รายอื่น ผู้เข้าร่วมแข่งขันที่ได้รับคะแนนสูงพออาจได้รับคุณสมบัติเพิ่มเติม เช่น ความสามารถในการเพิ่มแท็กให้กับปัญหาและเสนอชุดปัญหาเพื่อเข้าร่วมการแข่งขันอย่างเป็นทางการ |
| โคดินเกม | เกมปริศนา (ระดับความยากเพิ่มขึ้นเรื่อยๆ), เกมเขียนโค้ดแบบกอล์ฟจัดการแข่งขันออนไลน์เป็นประจำ (เกมเขียนโค้ดและความท้าทายด้านการเขียนโปรแกรม) |
| Codewars | แพลตฟอร์มที่ขับเคลื่อนโดยชุมชน พร้อมสภาพแวดล้อมการพัฒนาแบบบูรณาการออนไลน์ที่ผู้ใช้สามารถแก้โจทย์ ปัญหาการเขียนโค้ดขนาดเล็ก (kata ) ในภาษาโปรแกรมที่หลากหลาย ผู้ใช้จะได้รับอันดับและเกียรติยศเมื่อทำโจทย์สำเร็จและสร้างโจทย์ใหม่ เน้นการเรียนรู้ผ่านการฝึกฝนและการตรวจสอบโดยเพื่อนร่วมทีม โดยมีเฉลยและบทสนทนาให้ดูหลังจากทำโจทย์แต่ละข้อเสร็จแล้ว |
| HackerEarth [ 17 ] | บริษัทที่ตั้งอยู่ในเมือง บังกาลอร์ประเทศอินเดียให้บริการสภาพแวดล้อมการแข่งขันออนไลน์ โดยมีเป้าหมายเพื่อให้บริการด้านการประเมินผลการสรรหาบุคลากร |
| แฮ็กเกอร์แรงค์ | HackerRank นำเสนอโจทย์การเขียนโปรแกรมในหลากหลายสาขาวิทยาการคอมพิวเตอร์ นอกจากนี้ยังจัดงาน Codesprint ประจำปี ซึ่งช่วยเชื่อมโยงนักเขียนโค้ดและสตาร์ทอัพ ในซิลิคอนแวลลี ย์เข้าด้วยกัน |
| ลีทโค้ด | LeetCode มีคำถามมากกว่า 2,300 ข้อ ครอบคลุมแนวคิดการเขียนโปรแกรมที่หลากหลาย และมีการจัดการแข่งขันรายสัปดาห์และรายสองสัปดาห์ โจทย์การเขียนโปรแกรมมีให้เลือกทั้งภาษาอังกฤษและภาษาจีน |
| โครงการออยเลอร์[ 18 ] | แหล่งรวม โจทย์ คณิตศาสตร์เชิงคำนวณ ขนาดใหญ่ (เช่น โจทย์ที่ไม่เกี่ยวข้องกับการเขียนโปรแกรมโดยตรง แต่ส่วนใหญ่มักต้องใช้ทักษะการเขียนโปรแกรมในการแก้ปัญหา) แตกต่างจากระบบตรวจสอบโจทย์ออนไลน์อื่นๆ ตรงที่ ไม่จำเป็นต้องส่งโค้ดต้นฉบับเพื่อส่งคำตอบ แต่ละโจทย์ต้องการเพียงคำตอบเชิงตัวเลข (ซึ่งโดยปกติแล้วจะมีขนาดใหญ่เกินกว่าจะเดาหรือคำนวณด้วยมือได้) ทำให้ผู้ใช้สามารถใช้วิธีการใดๆ ก็ได้ตามที่เห็นสมควรในการแก้ปัญหา รวมถึงการเลือกใช้หรือไม่ใช้ภาษาโปรแกรมก็ได้ |
| SPOJ [ 17 ] | ระบบ ตัดสินออนไลน์ของโปแลนด์ที่ให้โจทย์ปัญหามากมายสำหรับการฝึกฝน และเป็นแพลตฟอร์มสำหรับผู้จัดงานอื่นๆ ในการจัดการแข่งขันเขียนโปรแกรมของตนเอง |
| ท็อปโคเดอร์[ 19 ] [ 17 ] | บริษัทและแหล่งข้อมูลจากสหรัฐอเมริกา ซึ่งจัดกิจกรรมการแข่งขันและให้โจทย์ปัญหาทางอุตสาหกรรมในรูปแบบงานฟรีแลนซ์ โดยจัดกิจกรรมการแข่งขันระยะสั้นหลายสิบรายการและการแข่งขันระยะยาว ("มาราธอน") อีกหลายรายการในแต่ละปี จุดเด่นคือ ผู้เข้าร่วมมีโอกาสตรวจสอบความถูกต้องของคำตอบของผู้เข้าร่วมคนอื่นๆ หลังจากขั้นตอนการเขียนโค้ดและก่อนการทดสอบอัตโนมัติขั้นสุดท้าย (ที่เรียกว่า "ขั้นตอนการตรวจสอบความถูกต้อง") |
| UVa Online Judge [ 19 ] [ 17 ] | มีโจทย์ให้ฝึกฝนมากกว่า 4,500 ข้อ จัดการแข่งขันออนไลน์เป็นประจำ เปิดให้บริการตั้งแต่ปี 1995 จึงเป็นหนึ่งในเว็บไซต์ประเภทนี้ที่เก่าแก่ที่สุด |
ข้อดีและข้อเสีย
การเข้าร่วมการแข่งขันเขียนโปรแกรมอาจเพิ่มความกระตือรือร้นของนักเรียนใน การศึกษาด้าน วิทยาการคอมพิวเตอร์ทักษะที่ได้รับจากการแข่งขันเขียนโปรแกรมแบบ ICPC ยังช่วยปรับปรุงโอกาสในอาชีพการงาน เนื่องจากช่วยให้ผ่าน "การสัมภาษณ์ทางเทคนิค" ซึ่งมักต้องการให้ผู้สมัครแก้ปัญหาการเขียนโปรแกรมและอัลกอริทึมที่ซับซ้อนได้ทันที[ 19 ] [ 20 ]
นอกจากนี้ยังมีการวิพากษ์วิจารณ์การเขียนโปรแกรมเชิงแข่งขัน โดยเฉพาะจากนักพัฒนาซอฟต์แวร์ มือ อาชีพ[ 21 ]ประเด็นสำคัญประการหนึ่งคือ การแข่งขันเขียนโปรแกรมที่รวดเร็วหลายรายการสอนให้ผู้เข้าแข่งขันมีนิสัยการเขียนโปรแกรมและรูปแบบโค้ดที่ไม่ดี (เช่น การใช้มาโคร โดยไม่จำเป็น การ ขาด นามธรรม เชิงวัตถุและคำอธิบาย การใช้ชื่อตัวแปรสั้นๆ เป็นต้น) [ 22 ] [ 21 ]นอกจากนี้ การแข่งขันเขียนโปรแกรมอย่าง ICPC และ IOI ที่นำเสนอเพียงปริศนาอัลกอริทึมขนาดเล็กที่มีวิธีแก้ปัญหาค่อนข้างสั้น ไม่ได้สอน ทักษะและแนวปฏิบัติ ด้านวิศวกรรมซอฟต์แวร์ ที่ดีเสมอไป เนื่องจากโครงการซอฟต์แวร์จริงมักมีโค้ดหลายพันบรรทัดและได้รับการพัฒนาโดยทีมขนาดใหญ่ในช่วงระยะเวลานาน[ 21 ]ปีเตอร์ นอร์วิกกล่าวว่า จากข้อมูลที่มีอยู่ การเป็นผู้ชนะการแข่งขันเขียนโปรแกรมมีความสัมพันธ์เชิงลบกับประสิทธิภาพของโปรแกรมเมอร์ในการทำงานที่ Google (แม้ว่าผู้ชนะการแข่งขันจะมีโอกาสได้รับการว่าจ้างสูงกว่าก็ตาม) [ 23 ]ต่อมานอร์วิกกล่าวว่า ความสัมพันธ์นี้พบในชุดข้อมูล ขนาดเล็ก แต่ไม่สามารถยืนยันได้หลังจากตรวจสอบชุดข้อมูลขนาดใหญ่ขึ้น[ 24 ]
ความคิดเห็นอีกประการหนึ่งคือ แทนที่จะใช้เวลาไปกับการแข่งขันมากเกินไปในการแก้ปัญหาที่มีวิธีแก้ปัญหาที่ทราบอยู่แล้ว โปรแกรมเมอร์ที่มีชื่อเสียงควรลงทุนเวลาในการแก้ปัญหาในโลกแห่งความเป็นจริงแทน[ 21 ]
วรรณกรรม
- Halim, S., Halim, F. (2013). การเขียนโปรแกรมเชิงแข่งขัน 3: ขีดจำกัดล่างใหม่ของการแข่งขันการเขียนโปรแกรม Lulu.
- Laaksonen, A. (2017). คู่มือการเขียนโปรแกรมเชิงแข่งขัน (หัวข้อระดับปริญญาตรีในสาขาวิทยาการคอมพิวเตอร์). Cham: Springer International Publishing.
- Xu, X. (2020) การพัฒนา ความเจริญรุ่งเรือง และความเสื่อมถอยของโอลิมปิกในสาขาวิทยาการสารสนเทศเผยแพร่ทางออนไลน์
- คอสท์กา บี. (2021). โปรแกรมกีฬาในทางปฏิบัติมหาวิทยาลัยวรอตซวาฟ
ดูเพิ่มเติม
- AlphaCode — โครงการของ Google Deepmindสำหรับการพัฒนาซอฟต์แวร์โดยใช้ AI ช่วย
- ปริศนาเชิงอัลกอริทึม
- หมวดหมู่: การแข่งขันด้านวิทยาการคอมพิวเตอร์
- โค้ดกอล์ฟ
- เกมแจม
- แฮ็กกาธอน
- ดาต้าธอน
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเขียนโปรแกรมเชิงแข่งขัน
การเขียนโปรแกรมเชิงแข่งขันหรือการเขียนโปรแกรมกีฬาเป็นกีฬาทางความคิดที่ผู้เข้าร่วมพยายามเขียนโปรแกรมตามข้อกำหนดที่ให้ไว้ การแข่งขันมักจัดขึ้นทางอินเทอร์เน็ตหรือเครือข่ายท้องถิ่น...
ประวัติศาสตร์
หนึ่งในการแข่งขันที่เก่าแก่ที่สุดที่รู้จักกันคือ การแข่งขันการเขียนโปรแกรมระดับวิทยาลัยนานาชาติ (ICPC) ซึ่งมีต้นกำเนิดในช่วงทศวรรษ 1970 [ 4 ] และได้ขยายไปสู่การรวม 88 ประเทศในการแข่งขันปี 2011
ภาพรวม
จุดมุ่งหมายของการเขียนโปรแกรมเชิงแข่งขันคือการเขียนโปรแกรมคอมพิวเตอร์ที่สามารถแก้ปัญหาที่กำหนดได้ ปัญหาส่วนใหญ่ที่ปรากฏในการแข่งขันเขียนโปรแกรมมีลักษณะทางคณิตศาสตร์หรือตรรกะ งานทั่วไปดังกล่าวจัดอยู่ในหมวดหมู่ใดหมวดหมู่หนึ่งต่อไปนี้: คณิตศาสตร์เชิงการจัดเรียง...
การแข่งขันอัลกอริทึม
ในการแข่งขันส่วนใหญ่ที่กล่าวมาข้างต้น การแข่งขันมักจะจัดขึ้นหลายรอบ โดยปกติจะเริ่มต้นด้วยรอบออนไลน์ และจบลงด้วยรอบชิงชนะเลิศแบบจัดขึ้นจริง ผู้ที่ได้อันดับสูงสุดในการแข่งขัน IOI และ ICPC จะได้รับเหรียญทอง เงิน และทองแดง ส่วนในการแข่งขันอื่นๆ...