Paralel evrenler fikri genellikle laboratuvar önlüğü giymiş fizikçilerin, kahvesini soğutmuş filozofların ve bilimkurgu yazarlarının ortak masasında dolaşır. Fakat yazılım açısından bakınca konu bir anda daha tanıdık hale gelir: Her seçim, bir dallanma noktasıdır. Her dallanma, farklı bir durum uzayı üretir. Yani evren dediğimiz şey, belki de devasa bir karar ağacının o an çalışmakta olan dalıdır.
Bir yazılımcı için bu düşünce romantik olmaktan çok yapısaldır. Karar ağacı, belirli bir başlangıç durumundan yola çıkarak olası seçimleri dallara ayıran bir modeldir. Bugün kırmızı gömlek mi giydin, siyah mı? Mesaja cevap verdin mi, erteledin mi? Bir yatırım yaptın mı, vazgeçtin mi? Her karar, sistemin durumunu değiştirir. Eğer tüm olası sonuçları saklayabilseydik, elimizde yalnızca bir hayat hikayesi değil, dallanan bir hayat grafı olurdu.
Evreni Bir Veri Yapısı Gibi Düşünmek
Yazılımda bir evreni temsil etmek için önce durum tanımı gerekir. Bir oyunda karakterin konumu, can puanı, envanteri ve ilişkileri bir durumdur. Gerçek hayatta ise durum; biyoloji, bellek, ekonomi, çevre, sosyal bağlar ve rastlantıların korkutucu derecede karmaşık birleşimidir. Bu yüzden paralel evren simülasyonu dediğimiz şey, aslında şu soruyla başlar: Neyi yeterince önemli sayıp modelleyeceğiz?
Bu noktada karar ağaçları sahneye çıkar. Kök düğüm başlangıç anıdır. Her kenar bir eylemi, her düğüm yeni bir dünyayı temsil eder. Basit bir örnek düşünelim: Sabah alarm çaldı. Kalkarsan bir dal, ertele dersen başka bir dal açılır. Kalktığın evrende toplantıya erken yetişebilir, ertelediğin evrende otobüsü kaçırabilirsin. Fakat her dalın altında yeni dallar oluşur. Birkaç karar sonra ağaç, sevimli bir şemadan çıkar, kozmik bir spagettiye dönüşür.
Buradaki temel problem patlamadır: Olasılık patlaması. Her seçim iki seçenekli olsa ve günde yalnızca yüz anlamlı karar verdiğini varsaysak, ortaya çıkan dal sayısı akıl almaz büyür. Bu nedenle yazılımsal yaklaşım, tüm evrenleri saklamaya çalışmaz; önemli dalları seçer, düşük olasılıklı yolları budar, benzer durumları birleştirir. Tıpkı satranç motorlarının her hamleyi sonsuza kadar hesaplamayıp sezgisel değerlendirme fonksiyonları kullanması gibi.
Git, Oyun Motorları ve Kaderin Sürüm Kontrolü
Paralel evrenleri anlamak için Git dallarını düşünmek eğlenceli olabilir. Ana dalda yaşarsın; sonra bir karar verirsin ve alternatif bir branch açılır. Birinde işi kabul edersin, diğerinde şehir değiştirirsin, üçüncüsünde radikal biçimde çömlek kursuna yazılırsın. Bazı dallar merge edilebilir; bazıları geri dönülmez çatışmalar üretir. Yazılım geliştirmede bu kontrol edilebilir görünür, fakat hayatta commit geçmişi çoğu zaman sisli, yorum satırları eksik ve testler başarısızdır.
Oyun motorları bu fikri daha somut uygular. Save dosyaları, checkpoint sistemleri ve senaryo dallanmaları küçük paralel evren makineleridir. Oyuncu bir karakteri kurtardığında dünya başka tepki verir; kurtarmadığında hikaye kararır. Modern anlatı oyunları, aslında çok evrenli dramaturji yazar. Burada evren, fiziksel gerçeklik değil, kurallar ve durumlar toplamıdır. Kod açısından bakıldığında kader, if-else bloklarının şiirsel bir adıdır.
Daha ileri düzeyde, Markov karar süreçleri ve pekiştirmeli öğrenme devreye girer. Bir ajan, bir ortamda eylem seçer, ödül alır, yeni duruma geçer. Ajanın amacı tüm dalları yaşamak değil, en iyi politikayı öğrenmektir. Bu da paralel evren fikrine pratik bir cevap verir: Her olasılığı deneyimleyemeyiz, ama olası gelecekleri simüle ederek daha iyi karar kuralları geliştirebiliriz.
Yine de dikkatli olmalıyız. Yazılımsal modeller, gerçekliğin kendisi değil, gerçekliğe atılmış ağlardır. Ağın delikleri büyüktür; bazı balıklar kaçar. İnsan kararları yalnızca mantıkla değil, korkuyla, arzuyla, travmayla, tesadüfle ve bazen öğle yemeğinde yenilen ağır bir börekle şekillenir. Bu nedenle karar ağacı, hayatı tamamen açıklayan kutsal şema değil; karmaşaya bakarken elimizde titreyen ama işe yarayan bir fenerdir.
Sonuçta her seçimin yeni bir evren yaratıp yaratmadığını kesin olarak bilmiyoruz. Fakat yazılım bize güçlü bir düşünme biçimi sunuyor: Olasılıkları düğümlere, eylemleri kenarlara, sonuçları durumlara dönüştürmek. Böylece kader sisli bir kehanet olmaktan çıkıp analiz edilebilir bir yapı kazanıyor. Belki de özgür irade, sonsuz ağacın tamamına hükmetmek değil; bulunduğumuz düğümde hangi dala bilinçle geçeceğimizi seçebilmektir.