Ana içeriğe geç
Programlama

Geliştirici ezoterik dil Brainfuck ile ışın izleme motoru yazdı

Öne çıkanlar

  • Sayısal hesaplamalar için dört adet 8 bitlik hücreyi birleştiren işaretli Q16.16 sabit noktalı sayı formatı kullanıldı.
  • Bölme ve karekök alma gibi karmaşık işlemler klasik uzun bölme algoritmasıyla sıfırdan Brainfuck döngülerine uyarlandı.
  • Üretilen 23 MB boyutundaki programın dakikada bir piksel hesapladığı ve sahneyi işlemenin 62 günden uzun sürdüğü belirtildi.

Bir yazılım geliştiricisi, yalnızca sekiz komuttan ve tek boyutlu bellek şeridinden oluşan ezoterik programlama dili Brainfuck üzerinde çalışan bir ışın izleme motoru geliştirdi. Proje, dilde doğrudan aritmetik işlem veya yazmaç bulunmadığı için temel matematik işlemlerinin sıfırdan kurgulanmasını gerektirdi. C++ tabanlı bir ışın izleme uygulamasını temel alan geliştirici, kod yapısını SSA benzeri bir ara temsile dönüştürdü ve ardından doğrudan Brainfuck talimatları üreten bir derleme hattı oluşturdu.

Sistemde ondalıklı sayıların hesaplanabilmesi amacıyla 32 bitlik sabit noktalı Q16.16 sayı formatı tercih edildi. Bellek şeridindeki hücrelerin birleştirilmesiyle oluşturulan bu yapıda çarpma işlemi tekrarlayan toplamalarla, bölme işlemi ise klasik okul yöntemi olan uzun bölmeyle uygulandı. Karekök alma fonksiyonu için tam sayı karekök algoritması entegre edilirken, ışınların saçılmasını hesaplamak amacıyla 256 döngülük doğrusal bir rastgele sayı üreteci kurgulandı.

Üretilen Brainfuck kaynak kodu yaklaşık 23 megabayt dosya boyutuna ulaştı. 400x225 piksel çözünürlüğündeki bir görseli işlemek üzere tasarlanan program, dakikada ortalama bir piksel hesaplayabildi. Geliştirici, ilk hesaplamalara göre tüm sahneyi işlemenin dizüstü bilgisayarında 62 günden fazla süreceğini, bu nedenle performans açısından henüz pratik bir kullanım sunmadığını aktardı.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.