ในจุดเปลี่ยนที่น่าประหลาดใจซึ่งท้าทายนิยามของการเขียนโปรแกรม การแข่งขัน International Obfuscated C Code Contest ปี 1994 ได้มอบรางวัล การละเมิดกฎที่แย่ที่สุด ให้กับโปรแกรมที่สามารถทำซ้ำตัวเองได้ที่เล็กที่สุดในโลก - ซึ่งก็คือไฟล์เปล่า
Szymon Rusinkiewicz โปรแกรมเมอร์จากสหรัฐอเมริกา ได้ส่งผลงานที่ไม่เป็นไปตามขนบเข้าประกวด ซึ่งต่อมาได้จุดประเด็นถกเถียงเกี่ยวกับธรรมชาติของโปรแกรมภาษา C ที่ถูกต้อง และขอบเขตของการเขียนโค้ดที่เข้าใจยาก
ความย้อนแย้งของโค้ดเปล่า
ผลงานของ Rusinkiewicz ที่มีชื่อว่า smr.c
คือไฟล์เปล่าๆ แม้ว่าในตอนแรกอาจดูเหมือนเป็นการส่งผลงานเล่นๆ แต่มันได้สร้างคำถามที่น่าสนใจเกี่ยวกับธรรมชาติของภาษาโปรแกรมมิ่งและพฤติกรรมของคอมไพเลอร์
คณะกรรมการสังเกตว่าแม้ smr.c
จะไม่ใช่โปรแกรม C ที่ถูกต้องตามมาตรฐานอย่างเคร่งครัด แต่ก็ไม่ได้ผิดด้วย คอมไพเลอร์บางตัวจะคอมไพล์ไฟล์เปล่าให้เป็นโปรแกรมที่ไม่ทำอะไรเลย ซึ่งทำให้มันกลายเป็นโปรแกรมที่ถูกต้อง แม้จะเป็นแค่โปรแกรมขั้นต่ำสุดก็ตาม
พฤติกรรมของคอมไพเลอร์และมาตรฐาน
ผลงานที่แปลกประหลาดนี้ได้จุดประเด็นถกเถียงในหมู่โปรแกรมเมอร์เกี่ยวกับมาตรฐานภาษา C และพฤติกรรมของคอมไพเลอร์ ตามมาตรฐาน C89 หน่วยแปลภาษาควรประกอบด้วยการประกาศภายนอกอย่างน้อยหนึ่งรายการ อย่างไรก็ตาม มาตรฐานไม่ได้ระบุชัดเจนว่าต้องมีฟังก์ชัน main()
ซึ่งแตกต่างจากที่โปรแกรมเมอร์ส่วนใหญ่เข้าใจ
คอมไพเลอร์บางตัว เช่น GCC (GNU Compiler Collection) จะปฏิเสธไฟล์เปล่าด้วยข้อความว่า ISO C ไม่อนุญาตให้มีหน่วยแปลภาษาที่ว่างเปล่า ความแตกต่างในพฤติกรรมของคอมไพเลอร์นี้ยิ่งเพิ่มความซับซ้อนให้กับการถกเถียงเกี่ยวกับผลงานของ Rusinkiewicz
ผลกระทบต่อการแข่งขันในอนาคต
ความฉลาดของการส่งผลงานนี้นำไปสู่การเปลี่ยนแปลงกฎการแข่งขัน การแข่งขันรอบต่อๆ ไปของ International Obfuscated C Code Contest จะกำหนดขนาดขั้นต่ำของผลงานให้ใหญ่กว่าผลงานนี้หนึ่งตัวอักษร เพื่อป้องกันไม่ให้มีการส่งผลงานลักษณะนี้อีกในอนาคต
การนิยามการทำซ้ำตัวเองใหม่
สิ่งที่ทำให้ผลงานนี้น่าสนใจเป็นพิเศษคือการอ้างว่าเป็นโปรแกรมที่สามารถทำซ้ำตัวเองได้ เมื่อรันโปรแกรม ผลลัพธ์ที่ได้จะตรงกับโค้ดต้นฉบับพอดี - นั่นคือ ไม่แสดงผลอะไรเลย สิ่งนี้ท้าทายความเข้าใจทั่วไปของเราเกี่ยวกับโปรแกรมที่ทำซ้ำตัวเอง และสร้างคำถามเชิงปรัชญาเกี่ยวกับธรรมชาติของการทำซ้ำในบริบทของซอฟต์แวร์
บทสรุป
ผลงานไฟล์เปล่าของ Rusinkiewicz เป็นเครื่องเตือนใจถึงความสำคัญของการนิยามที่แม่นยำในวิทยาการคอมพิวเตอร์ และวิธีการตีความกฎที่ไม่คาดคิด มันแสดงให้เห็นว่าแม้แต่ในสาขาที่เคร่งครัดอย่างการเขียนโปรแกรม ก็ยังมีพื้นที่สำหรับความคิดสร้างสรรค์ อารมณ์ขัน และการครุ่นคิดเชิงปรัชญา
ในขณะที่เรายังคงผลักดันขอบเขตของสิ่งที่เป็นไปได้ในการเขียนโค้ด ผลงานเช่นนี้เตือนให้เราตั้งคำถามกับสมมติฐานของเราและคิดนอกกรอบ - หรือในกรณีนี้ คิดภายในไฟล์เปล่า