การแข่งขัน International Obfuscated C Code Contest ( IOCCC ) กลับมาอย่างยิ่งใหญ่หลังจากหยุดพักไป 4 ปี โดยประกาศผู้ชนะจำนวนสถิติใหม่ 23 รายสำหรับการแข่งขันครั้งที่ 28 นี่เป็นการฉลองครบรอบ 40 ปีของการแข่งขัน และเป็นจำนวนผู้ชนะที่มากที่สุดในประวัติศาสตร์ IOCCC โดยเกินสถิติเดิม 15 รายไปมาก
ช่วงหยุดพักที่ยาวนานไม่ได้เป็นเวลาที่เสียไป ผู้จัดการแข่งขันใช้เวลาหลายปีนั้นในการสร้างโครงสร้างพื้นฐานใหม่ทั้งหมด สร้างเครื่องมือใหม่ และปรับปรุงกระบวนการตัดสิน สิ่งที่เคยใช้เวลาหลายเดือนระหว่างการประกาศผู้ชนะและการเผยแพร่โค้ด ตอนนี้ใช้เวลาไม่ถึง 2 ชั่วโมง
สถิติสำคัญของ IOCCC 2024:
- ผู้ชนะ: 23 รายการ (สถิติเก่า: 15 รายการ)
- ระยะเวลาการตัดสิน: 33 วัน (เร็วกว่าการแข่งขันครั้งก่อนๆ มาก)
- การเพิ่มขีดจำกัดขนาด: 21% (การเพิ่มครั้งแรกในรอบ 10+ ปี)
- การกระจายขนาดโค้ด: 50% ของผู้ชนะใช้พื้นที่น้อยกว่า 2/3 ของขีดจำกัด, ผู้ชนะ 10 รายใช้พื้นที่น้อยกว่า 1/2 ของขีดจำกัด
- ระยะเวลาการแข่งขัน: 5 มีนาคม - 5 มิถุนายน 2025 (การส่งผลงาน), การตัดสินเสร็จสิ้น 7 กรกฎาคม 2025
ชุมชนหลงใหลในเทคนิคโค้ดที่ชาญฉลาด
ชุมชนโปรแกรมเมอร์ให้ความสนใจเป็นพิเศษกับผลงานที่โดดเด่นหลายรายการ หนึ่งในนั้นที่สร้างการพูดคุยอย่างมากคือเครื่องคำนวณดวงจันทร์ที่วาดรูปดวงจันทร์ในขณะปัจจุบันบนเทอร์มินัลของคุณ โดยใช้โค้ดที่ถูกปิดบังอย่างหนักเพียงไม่กี่บรรทัด โปรแกรมนี้ใช้ค่าคงที่ลึกลับ 2551443 ซึ่งเชื่อมโยงกับผลงานที่คล้ายกันจากปี 2000
นี่คือสิ่งที่ทำให้ฉันรู้สึกว่าฉันทำงานผิดสายอาชีพ...
อีกหนึ่งผลงานที่ได้รับความนิยมคือเครื่องมือขยายภาพแบบบรรทัดเดียวที่ทำเทคนิคที่น่าทึ่ง เมื่อคุณป้อน MD5 hash ของซอร์สโค้ดของมันเอง มันจะแสดง IOCCC logo ออกมา ผู้เขียนระบุด้วยอารมณ์ขันว่าเวลาที่ใช้ไม่ได้เป็นเรื่องบังเอิญทั้งหมด - จำนวนบิตของรูปแบบอินพุตใกล้เคียงกับสิ่งที่ GPU อายุ 5 ปีสามารถคำนวณได้ใน 1 ชั่วโมงของการดำเนินการ MD5
ผลงานที่โดดเด่นในปี 2024:
- 2024/cable1: "เอนจิ้นการประมวลผล LLM ที่เล็กที่สุดในโลก" ที่รัน LLAMA 2 (7B parameters)
- 2024/kurdyukov1: เครื่องคำนวณดวงจันทร์โดยใช้ค่าคงที่ 2551443
- 2024/stedolan: ตัวคลายการบีบอัดรูปภาพแบบบรรทัดเดียว (135 bytes) ที่แสดงโลโก้ IOCCC จาก MD5 hash ของตัวมันเอง
- 2024/endoh1: Ray tracer ที่ใช้ C preprocessor (รูปภาพ 512x512 ใช้เวลาเรนเดอร์ 23.5 ชั่วโมง)
- 2024/carlini: โปรแกรมจำลอง Intel 4004 processor ที่จำลองวงจรแต่ละเกตแยกกัน
- 2024/howe: โปรแกรมแก้ไขข้อความที่มีฟังก์ชันมากกว่า ed(1) พร้อมรองรับ UTF-8
ผลกระทบจำกัดของ AI ต่อการปิดบังโค้ด
แม้จะมีความกังวลว่า AI อาจส่งผลงานที่สร้างขึ้นมาท่วมการแข่งขัน แต่ความเป็นจริงดูเหมือนจะแตกต่างออกไป สมาชิกชุมชนที่เข้าร่วมรายงานว่าโมเดลภาษาขนาดใหญ่ประสบปัญหากับการปิดบังเชิงสร้างสรรค์ที่ทำให้ผลงาน IOCCC พิเศษ ระบบ AI มักจะสร้างโค้ดที่อ่านได้และมีเอกสารประกอบ ซึ่งเป็นสิ่งตรงข้ามกับสิ่งที่การแข่งขันนี้เฉลิมฉลอง
เมื่อถูกขอให้สร้างโค้ดที่ปิดบัง โมเดล AI มักจะไม่สามารถต้านทานการเพิ่มองค์ประกอบที่อ่านได้หรือคอมเมนต์อธิบาย บางตัวยังปฏิเสธที่จะวิเคราะห์ผลงานที่ถูกปิดบังอย่างหนัก โดยเข้าใจผิดว่าเป็นมัลแวร์เนื่องจากลักษณะที่ผิดปกติ
ความสำเร็จทางเทคนิคผลักดันขีดจำกัด
ผู้ชนะปีนี้แสดงให้เห็นความหลากหลายทางเทคนิคที่น่าทึ่ง ผลงานหนึ่งอ้างว่าเป็นเอนจิ้นการอนุมานโมเดลภาษาขนาดใหญ่ที่เล็กที่สุดในโลก โดยรัน LLAMA 2 ของ Meta ด้วยพารามิเตอร์ 7 พันล้านตัว อีกผลงานหนึ่งจำลองโปรเซสเซอร์ Intel 4004 จากปี 1971 โดยการจำลองเกตวงจรแต่ละตัว ซึ่งเป็นแนวทางที่ละเอียดอย่างไม่น่าเชื่อ ทำให้โค้ดทำงานช้าแต่แท้จริง
ผลงานที่ทดสอบความอดทนมากที่สุดคือ ray tracer ที่ทำงานผ่าน C preprocessor operations ทั้งหมด การสร้างภาพ 8x8 อย่างง่ายใช้เวลาประมาณ 20 วินาที ในขณะที่การเรนเดอร์ 512x512 ที่ละเอียดต้องใช้เวลามากกว่า 23 ชั่วโมงในการประมวลผลล่วงหน้าผ่านการเรียกใช้คอมไพเลอร์หลายพันครั้ง
ผู้จัดการแข่งขันสังเกตเห็นแนวโน้มที่น่าสนใจ แม้จะเพิ่มขีดจำกัดขนาดขึ้น 21% เป็นครั้งแรกในรอบกว่าทศวรรษ แต่ผลงานที่ชนะหลายรายยังคงอยู่ต่ำกว่าขีดจำกัดใหม่มาก ครึ่งหนึ่งของผู้ชนะใช้พื้นที่น้อยกว่าสองในสามของที่อนุญาต พิสูจน์ว่าการเขียนโปรแกรมที่ชาญฉลาดมักจะเอาชนะปริมาณโค้ดที่มากมาย
มองไปข้างหน้า IOCCC29 มีแผนจัดขึ้นในเดือนธันวาคม 2025 โดยผู้จัดสัญญาว่าจะมีกฎเกณฑ์ที่คล่องตัวและนวัตกรรมต่อเนื่องในศิลปะของโค้ดที่สวยงามและน่าพิศวง
อ้างอิง: The International Obfuscated C Code Contest 2024 - The 28th IOCCC