Program Pong yang merekompilasi dirinya sendiri setiap frame memenangkan kontes IOCCC29

Program Pong Rekompilasi Source Code Sendiri Menangkan IOCCC29

Penulis:Nur Hamzah
Terbit:
Diperbarui:
⏱️3 menit membaca
Bagikan:
  • Program Pong memenangkan IOCCC29 dengan mekanisme rekompilasi source code sendiri setiap frame
  • Setiap frame game dicetak sebagai kode sumber C yang harus dikompilasi ulang
  • Jonah Uellenberg menulis kode bersih dalam bahasa Insert, bukan kode obfuscated manual
  • Kompiler Insert menghasilkan kode C acak yang memenangkan kontes
  • Game mendukung pemain melawan komputer dengan argumen baris perintah
  • Pemain bisa beralih ke game side-scrolling jumper setelah mengalahkan komputer
  • IOCCC29 adalah kontes kedua setelah jeda empat tahun sejak 2020-2024

Telset.id – Sebuah program game Pong yang secara unik merekompilasi kode sumbernya sendiri setiap frame berhasil memenangkan penghargaan di ajang International Obfuscated C Code Contest (IOCCC) ke-29. Kemenangan ini disandang oleh Jonah Uellenberg, yang menciptakan versi Pong dengan mekanisme kompilasi berantai yang sangat tidak lazim.

Setiap kali program dijalankan, ia akan mencetak kode sumber C untuk frame berikutnya. Layar permainan dan status game saat itu disematkan langsung di dalam kode tersebut. Dengan mengompilasi dan menjalankan output itu, game akan maju satu langkah. Proses ini berulang hingga permainan selesai.

Uniknya, Uellenberg tidak menulis kode yang membingungkan (obfuscated) secara manual. Ia justru menulis kode sumber yang bersih dan berkomentar dalam bahasa pemrograman buatannya sendiri bernama Insert. Kompiler dari bahasa Insert-lah yang menghasilkan kode C acak yang kemudian memenangkan kontes.

Dalam catatan masuknya, Uellenberg menegaskan bahwa kode pemenang “sebenarnya tidak membingungkan. Tidak pernah demikian.” Ia menekankan bahwa itu adalah hasil kompiler, bukan sesuatu yang diubah-ubah dengan tangan. Kompiler Insert menargetkan bahasa C dan menjalankan optimasi ukuran seperti yang dilakukan kompiler produksi, termasuk analisis liveness untuk membuang kode mati, constant folding, dan penggabungan variabel.

Proses optimasi dan obfuscation cenderung menghasilkan output yang sama, menurut Uellenberg. Inilah sebabnya hasil akhirnya tampak seperti dinding identifier satu karakter dan array data yang mencampur nilai konstan dan mutable.

Program ini bekerja layaknya sebuah quine, yaitu program yang mencetak kode sumbernya sendiri saat dijalankan. Versi Uellenberg mencetak salinan yang dimodifikasi dari dirinya sendiri: kode sumber untuk frame berikutnya dengan status game yang diperbarui. Pemain menggerakkan paddle kanan dengan memberikan argumen baris perintah “w” atau “e”, dan melawan lawan komputer.

Game ini juga menyertakan skrip yang mengotomatiskan siklus kompilasi dan eksekusi sehingga pertandingan berjalan secara real-time. Jika pemain berhasil mengalahkan komputer, program akan beralih ke game kedua, yaitu side-scrolling jumper yang meniru game lari dinosaurus Chrome. Menyelesaikan game kedua akan mengembalikan program ke game Pong.

IOCCC29 adalah kontes kedua sejak penyelenggara mengakhiri jeda empat tahun yang berlangsung dari 2020 hingga 2024. Pemenang tahun 2025 diumumkan melalui siaran langsung YouTube pada 6 Juni sebelum kode sumbernya diunggah ke repositori GitHub kontes.

Yusuke Endoh, yang quine memodifikasi dirinya sendiri diakui Uellenberg sebagai alasan ia mulai menulisnya, memenangkan tiga penghargaan tahun ini. Kontes yang dijalankan sejak 1984 oleh Landon Curt Noll dan diterbitkan di bawah lisensi Creative Commons ini menarik catatan dari juri untuk entri Pong yang meminta peserta untuk menahan diri membuat “Quine Doom” untuk tahun depan.

Pong game that recompiles itself every frame wins the IOCCC29 obfuscated C contest

Entri ini berdampingan dengan pencapaian lain baru-baru ini yang memeras sistem penuh dari bahan yang tidak biasa, termasuk emulator CPU x86 yang ditulis seluruhnya dalam CSS dan versi Doom yang dapat dimainkan yang dirender dalam SQL murni. Para juri berencana membuka IOCCC30 menjelang akhir tahun 2026.

Pendekatan Uellenberg menunjukkan bahwa batas antara kode yang dioptimalkan dan kode yang membingungkan bisa sangat tipis, terutama ketika kompiler dirancang untuk memaksimalkan efisiensi ukuran. Hasilnya adalah sebuah program yang tidak hanya fungsional tetapi juga merupakan sebuah karya seni pemrograman yang cerdas.

Ikuti Telset.id di Google NewsFollow

Komentar

Belum ada komentar.