
Yazılım & Uygulama
Kendi Kodunu Yeniden Yazabilen Pong
Jonah Uellenberg, Uluslararası Obfüskasyonlu C Kodu Yarışması'nda (IOCCC) kendi kaynak kodunu her karede yeniden derleyen bir Pong versiyonuyla ödül kazandı.
Hexcore
3 dk
30 Haziran 2026

Uluslararası Obfüskasyonlu C Kodu Yarışması'nın (IOCCC) 29. yılında büyük ses getiren bir eser ortaya çıktı: pong oyununun her karede kendi kaynak kodunu yeniden derlemesi. Bu teknik, hem programlamaya dair ilginç meydan okumaları sunuyor hem de dijital sanatın sınırlarını zorluyor.
Bu alanda ödül kazanan Jonah Uellenberg'in eseri, geleneksel bir oyun formatını ele alıp onu benzersiz bir yöntemle dönüştürdü. Oyunun her çalıştırılması, mevcut gösterimi ve oyun durumunu içine alan C kaynak kodunun çıktısını verir. Bu çıkış kodu daha sonra derlenip yeniden çalıştığında, oyun tek adım ilerler diyebiliriz.
Bu süreçte ilginç olan kısım, Uellenberg'in bu meşhur oyunu doğrudan obfüskasyon (karma) yöntemleriyle yazmamasıdır. Bunun yerine kendisi bir programlama dili inşa etti ve bu dilde temiz, yorumlanmış kaynak kodlarını kullandı. Bu kodu derleyen kompilör ise nihai, karmaşık C formatını oluşturdu ve yarışı kazanan esere imza attı.
Wartıklarda genellikle bu tarz sonuçlar 'karışık' (obfuskasyon) kabul edilir. Ancak Uellenberg, ödül kazanan kodun aslında manuel olarak karıştırılmış bir yöntem olmadığını belirtti. Koddaki yoğun karmaşanın sebebi tamamen kompilörün kendisidir. Kompilör Insert dili için C hedefini seçmiş ve üretim düzeyinde bir derleyicinin yaptığı tüm adımları uygulamıştır.
İçinde boş kodu temizleme (liveness analysis), sabit değerleri tek bir değere dönüştürme (constant folding) ve değişkenlerin farklı rolleri üstlenmesi gibi ileri seviye optimizasyon aşamaları yer almaktadır. Ayrıca tekrar eden belirteç dizileri bile C ön işlemci tanımları içinde paketlenerek kodun boyutunun küçülmesinde rol oynar.
Bu bağlamda, gözlemlenen yoğunluktaki karmaşık görünümlu çıktı aslında optimizasyon ile obfüskasyonun birbirine çok yakın sonuçlar doğurmasının bir sonucudur. Bu durum, kodun tek karakterli adlandırmalar ve sabitlerle değişen değerleri içeren veri dizileri içermesine yol açar.
A program that prints its own source code is known as a quine (yin). Uellenberg'in yarattığı bu versiyon ise kendisinin modifiye edilmiş bir kopyasını basmaktadır: Yani her yeni kare için güncellenmiş oyun durumunu içeren bir kaynak kodu oluşturur. Bu kaynağı çalıştırdığınızda sonraki kareyi görür, döngü devam eder.
Oyun mekanikleri açısından, oyuncu sağdaki paleti 'w' veya 'e' tuşları ile komut satırı argümanı olarak hareket ettirebilir ve bir yapay zeka rakibine karşı yarışır. Oyunun gerçek zamanlı oynanabilmesi için ayrıca bu derle-çalıştır döngüsünü otomatik hale getiren paketlenmiş bir betik kullanılmıştır.
Oyun sırasında bilgisayar rakibini yenerek programa ikinci bir moda geçiş yapabilir; burada Chrome'daki o meşhur T-Rex koşusu tarzında yana kayan bir zıplama oyununa dönüşür. Bu bölümü de bitirince tekrar klasik Pong döngüsüne dönülmüş olur.
IOCCC, temmuz aylarından önce gerçekleşen ve her 2020-2024 yılları arasında dört yıl ara veren yarışmadır. Yarışmanın geçmişini merak edenler için bu tarz kendini değiştiren quine programları daha önceki çalışmalarla ilişkilendirilebilir. Bu eser, CSS ile tamamen yazılmış bir x86 işlemci emülatörü ve saf SQL diliyle tasarlanmış oynanabilir bir Doom versiyonu gibi, beklenmedik malzemelerden devasa sistemler çıkarılması temalı son dönemdeki teknik başarılar arasında yer almaktadır.
Mevcut IOCCC 29 yarışması sona erse de, organizatörlerin planlarına göre etkinlik daha ileri tarihte devam edecek.




Topluluk yargısını şekillendirmek için fikrini tek bir sinyalle belirt.
Henüz yorum yapılmamış. İlk yorumu sen yap!
E-posta adresiniz yayımlanmayacaktır. Gerekli alanlar (*) ile işaretlenmiştir.