Her Tıklamada Yeni Bir Evren: Karar Ağaçlarıyla Kaderi Kodlamak

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.

Git Evreninde Schrödinger’in Kedisi: Her Commit Yeni Bir Dünya mı Açıyor?

Bir yazılımcı yeni bir dal açtığında görünüşte sıradan bir işlem yapar: Mevcut kod tabanının belirli bir anına işaret eden yeni bir geliştirme yolu oluşturur. Fakat biraz geri çekilip baktığımızda sahne tuhaflaşır. Ana dalda kullanıcı arayüzü mavi kalırken başka bir dalda kırmızıya döner; birinde hata düzeltilir, diğerinde yeni bir hata doğar; üçüncüsünde ise proje bütünüyle terk edilir. Aynı geçmişten çıkan farklı gelecekler, Git deposunun içinde yan yana yaşamayı sürdürür. Bu manzara, kuantum mekaniğinin çoklu dünyalar yorumunun şaşırtıcı derecede kullanışlı bir dijital maketini andırır.

Commit, ölçüm ve ayrılan gelecekler

Çoklu dünyalar yorumuna göre kuantum ölçümü, olasılıklardan yalnızca birini seçip diğerlerini yok etmez. Bunun yerine evrenin kuantum durumu, farklı sonuçların gerçekleştiği ve birbirleriyle etkin biçimde etkileşemeyen dallara ayrılır. Teknik olarak burada gündelik anlamda yeni evrenler üreten kozmik bir fotokopi makinesi yoktur; evrensel dalga fonksiyonunun üniter evrimi ve dekoherens vardır. Git dalı da benzer biçimde yoktan bir proje yaratmaz. Bir commit’e yeni bir referans ekler ve bundan sonra yapılacak değişikliklerin ayrı bir tarih oluşturmasına izin verir.

Benzetmenin en güçlü yanı, olasılıkla gerçekleşmiş durum arasındaki farkı görünür kılmasıdır. Bir özellik yalnızca ekip toplantısında tartışılıyorsa henüz olasıdır. Dal açılıp kod yazıldığında bu gelecek çalıştırılabilir hâle gelir. Test ortamı, alternatif dünyanın laboratuvarıdır: Uygulama derlenir, kullanıcı davranışları taklit edilir ve seçimin sonuçları gözlenir. Böylece yazılım geliştirme, karşı-olgusal düşünmeyi somutlaştırır. “Başka türlü yapsaydık ne olurdu?” sorusu felsefi bir hayal olmaktan çıkar; indirilebilir, ölçülebilir ve gerektiğinde silinebilir bir yapıya dönüşür.

Birleşebilen dünyalar

Ancak analojinin kırıldığı önemli bir nokta vardır: Kod dalları birleşebilir. Bir özellik dalındaki değişiklikler ana dala taşınabilir, iki ayrı tarih ortak bir commit’te buluşabilir. Çoklu dünyalar yorumundaki makroskobik dalların yeniden girişim göstermesi ise dekoherens nedeniyle pratikte olağanüstü derecede zordur. Evrenin “merge conflict” çözüm ekranı bulunmaz. Yazılım dünyasında bile birleşme sihirli değildir; aynı satır farklı biçimlerde değiştirildiyse insan kararı gerekir. Çatışma, alternatif geleceklerin mantıksal olarak uyumlu olmasının, teknik olarak birlikte var olabilecekleri anlamına gelmediğini gösterir.

Bu fark, programlama açısından değerli bir ders üretir. Her dal korunmaya değmez. Deneysel yollar çoğaldıkça test yükü, güvenlik riski ve bakım maliyeti artar. Sonsuz dijital evren fikri romantik görünse de pratikte depo karmaşası yaratır. İyi bir ekip, dallanmayı özgürlük; birleştirmeyi ise seçim disiplini olarak görür. Kısa ömürlü dallar geri bildirim süresini azaltır, otomatik testler hangi dünyanın yaşanabilir olduğunu belirler, kod incelemesi de seçilen geleceğin ortak akla dayanmasını sağlar.

Versiyon kontrolü bir zaman makinesi midir?

Git yalnızca alternatif gelecekleri değil, geçmişin yeniden yorumlarını da saklar. Bir commit’e dönmek zamanda yolculuğa benzer; fakat geçmişi gerçekten değiştirmez, ondan yeni bir tarih başlatır. Rebase işlemi ise tarihin anlatısını yeniden düzenler: Olaylar aynı değişiklikleri taşısa bile daha temiz bir sıraya yerleştirilir. Bu durum, kimliğin yalnızca mevcut koddan mı, yoksa o koda ulaşan tarihçeden mi oluştuğu sorusunu doğurur. İki dal sonunda aynı dosyalara sahipse aynı yazılım mıdır? İşlevsel açıdan belki; denetlenebilirlik, güven ve sorumluluk açısından hayır.

Sonuçta Git, çoklu dünyalar yorumunun fiziksel bir kanıtı değildir. Kuantum dallanması doğanın matematiksel betimlenmesine, kod dallanması ise insanların tasarladığı veri yapılarına dayanır. Yine de bu dijital simülasyon güçlü bir düşünme aracıdır. Bize tek bir geleceği tahmin etmeye çalışmak yerine birden fazla geleceği ucuzca üretmeyi, sınamayı ve karşılaştırmayı öğretir. Belki de iyi yazılım geliştirme, doğru evreni ilk seferde bulma sanatı değildir; kötü evrenleri erken keşfedip yaşanabilir olanı dikkatle ana dala birleştirme sanatıdır.

Kod Her Satırda Şüphe Ederken, Biz Neden Kesinlik Arıyoruz?

Bir yorumlayıcı dilde program çalıştırmak, biraz güvenilmez ama parlak bir kahinle konuşmaya benzer. Kodunuzu baştan sona önceden mühürlemez; satır gelir, okunur, yorumlanır ve o anda hükmünü verir. İlk yüz satır kusursuz ilerleyebilir, yüz birinci satırda ise eksik bir değişken, yanlış türde bir veri ya da beklenmedik bir ağ yanıtı bütün evreni küçük bir hata mesajına indirger. Programın çalışıyor olması, onun bir sonraki anda da çalışacağına dair mantıksal bir garanti değildir.

Bu durum, felsefedeki radikal kuşkuculuğun teknoloji içindeki ilginç karşılığıdır. Radikal kuşkucu, duyularımızın, anılarımızın ve çıkarımlarımızın mutlak biçimde güvenilir olduğunu kanıtlayamayacağımızı söyler. Belki gördüğümüz dünya bir yanılsamadır; belki en sağlam sandığımız inanç, fark etmediğimiz bir varsayıma yaslanıyordur. Yorumlayıcı program da benzer biçimde yaşar: Elindeki satırın anlamını çözebilir, fakat henüz karşılaşmadığı satırların, verilerin ve koşulların güvenli olduğunu peşinen bilemez.

Çalışmak, Kanıtlanmak Değildir

Bir Python betiğinin terminalde başarıyla sonuçlanması çoğu zaman gereğinden fazla güven üretir. Geliştirici, ekran çıktısını görünce programın doğru olduğunu düşünmeye meyleder. Oysa bu yalnızca belirli girdiler, belirli ortam değişkenleri, belirli saat ve belirli bağımlılık sürümleri altında bir yürütmenin başarıyla tamamlandığını gösterir. Kodun doğruluğu ile kodun şu an hata vermemesi aynı önerme değildir. Tıpkı güneşin her gün doğmuş olmasının yarın da doğacağını biçimsel olarak ispatlamaması gibi, bin başarılı çalışma da milyon birinci çalışmanın güvence senedi değildir.

Burada David Hume’un alışkanlık üzerine düşüncesi devreye girer. Geçmişte sürekli birlikte gördüğümüz olaylardan, gelecekte de aynı düzenin süreceği sonucunu çıkarırız. Yazılımda buna daha teknik bir ad veririz: test kapsamı. Bir fonksiyon yüz testten geçince ona güveniriz; ama test edilmemiş sınırlar, boş değerler, eşzamanlılık sorunları ve kullanıcıların hayal gücü hâlâ kapıda bekler. Kullanıcı, yazılımcının asla düşünmediği bir kombinasyonu denemek konusunda neredeyse metafizik bir yeteneğe sahiptir.

Kuşku, Felç Değil Tasarım İlkesidir

Radikal kuşkuculuk yanlış yorumlandığında insanı eylemsizliğe sürükler: Hiçbir şey kesin değilse neden kod yazalım? Yazılım mühendisliğinin cevabı pratiktir: Kesinlik yoksa savunma katmanları kurarız. Tür denetimi, birim testleri, istisna yakalama, doğrulama kuralları, günlük kayıtları, geri alma mekanizmaları ve izleme araçları bu yüzden vardır. Bunlar mutlak doğruluk makineleri değildir; hata ihtimalini görünür, sınırlı ve onarılabilir kılan araçlardır.

Yorumlayıcı dillerin satır satır karakteri, bu yaklaşımı özellikle canlı tutar. Derleme aşamasında yakalanabilecek bazı sorunlar daha geç ortaya çıkabilir; çalışma zamanındaki dünya, kodun mantığına sürekli müdahale eder. Dosya bulunamaz, API cevap vermez, kullanıcı metin yerine sayı gönderir, sayı yerine boşluk gönderir. Bu kırılganlık bir kusur olmak zorunda değildir. Doğru kullanıldığında geliştiriciyi, sistemin soyut bir şemadan ibaret olmadığını; gerçek veri, gerçek zaman ve gerçek belirsizlik içinde yaşadığını kabul etmeye zorlar.

Sonuçta iyi programcı, koduna körü körüne inanan kişi değildir. Kodunun hangi varsayımlar üzerinde durduğunu soran, bu varsayımlar bozulduğunda ne olacağını tasarlayan kişidir. Kuşkuculuğun yazılımdaki değeri, her şeyi şüpheli ilan etmek değil; güvenin dereceli olduğunu kavramaktır. Program çalışır, ama koşullu olarak. Bilgi işe yarar, ama sınırları içinde. En olgun sistemler, hata vermeyeceklerini iddia edenler değil, hata verdiklerinde dünyayı yıkmadan konuşabilenlerdir.

Eklentiler Neden Bir Ekosistem Gibi Davranır? Kodun Görünmez Ortakyaşamı

Bir yazılım projesi ilk bakışta birkaç klasör, binlerce satır kod ve sabırsız bir geliştiricinin kahvesinden ibaret görünebilir. Oysa modern bir uygulama, tek başına yaşayan bir organizma değildir. Kimlik doğrulama için bir paket, veri işleme için başka bir kütüphane, arayüz için onlarca eklenti ve bunların altında daha küçük bağımlılıklar bulunur. Bu yapı, yağmur ormanındaki canlı çeşitliliğine şaşırtıcı derecede benzer: Her tür kendi işini yapar, ama sistemin davranışı tek tek parçaların toplamından daha karmaşıktır.

Bağımlılık ağacı değil, canlı bir ağ

Yazılım dünyasında bağımlılıklar genellikle “ağaç” metaforuyla anlatılır. Bir proje ana gövdedir; kullandığı paketler dallar, onların paketleri ise ince dallardır. Fakat gerçek tablo çoğu zaman ağaçtan çok bir mantar miselyumunu andırır. Aynı küçük kütüphane, yüzlerce farklı projeye görünmez bağlarla hizmet edebilir. Tarih biçimlendiren bir araç, şifreleme modülü ya da metin ayrıştırıcı, milyonlarca kullanıcının farkında olmadan güvendiği ortak bir altyapıya dönüşebilir.

Biyolojide buna benzer ilişkiler vardır. Arı ile çiçek arasında karşılıklı fayda üreten bir ortakyaşam görülür: Arı besin alır, çiçek tozlaşır. Açık kaynak eklentilerde de geliştirici, küçük ama yararlı bir modül üretir; topluluk onu test eder, hata bildirir, belgeler yazar ve bazen yeni özellikler ekler. Eklenti projeleri hızlandırır; projeler de eklentinin görünürlüğünü, kullanım alanını ve bakım kapasitesini artırır. İdeal durumda herkes kazanır.

Ortakyaşamın karanlık yüzü: Parazit ve kırılganlık

Ancak doğada her ilişki uyumlu değildir. Bazı organizmalar konakçısını sömürür, bazı türler ise çevresel değişimle tüm ağı zor durumda bırakır. Yazılım bağımlılıkları da benzer riskler taşır. Bakımı terk edilmiş bir paket, güncellenmeyen bir eklenti ya da kötü niyetli biçimde ele geçirilmiş bir hesap, zincirin çok üstündeki uygulamaları etkileyebilir. Bir kütüphanenin yalnızca birkaç satırlık yardımcı işlev sunması, onun önemsiz olduğu anlamına gelmez; o satırlar binlerce projenin başlangıç noktasında çalışıyor olabilir.

Bu nedenle “açık kaynak zaten güvenlidir” düşüncesi eksiktir. Açıklık, inceleme imkânı sağlar; incelemenin gerçekten yapıldığını garanti etmez. Bir ekosistemin sağlığı, kodun görünürlüğünden çok bakımın sürekliliğine, sürüm disiplinine, denetim araçlarına ve topluluğun sorumluluk paylaşımına bağlıdır. Biyolojik bir habitatta temiz su neyse, yazılımda da güvenilir sürüm kaynağı, imzalı paket, bağımlılık taraması ve açık güvenlik bildirimi odur.

Dengeyi kurmak için mühendislik

Sağlıklı bir bağımlılık ekosistemi kurmak romantik bir “topluluk ruhu” çağrısından fazlasını gerektirir. Önce her bağımlılığın neden var olduğu bilinmelidir. Tek satırlık iş için devasa bir paket eklemek, bahçeye bir saksı çiçeği koymak için tropik sera kurmaya benzer. Ardından sürümler kilitlenmeli, güncellemeler otomatik testlerden geçmeli ve kritik paketler düzenli olarak güvenlik açısından taranmalıdır. Yazılım envanteri, yani hangi uygulamanın hangi bileşenleri kullandığını gösteren kayıtlar, kriz anında bir tür ekolojik harita işlevi görür.

Açık kaynak eklentilerin evrimi bize önemli bir ders verir: Modülerlik yalnızca teknik kolaylık değildir; karşılıklı bağımlılık etiğidir. Bir paketi kullanmak, onun bakım yükünün başkalarının omzunda olduğunu kabul etmektir. Bu yüzden hata raporu göndermek, belgeyi düzeltmek, sponsorluk yapmak veya kullanılmayan bağımlılığı kaldırmak küçük ama ekolojik açıdan anlamlı hareketlerdir. En iyi yazılım mimarisi, en çok paketi kullanan mimari değil; hangi ortakyaşamın değer ürettiğini, hangisinin kırılganlık taşıdığını ayırt edebilen mimaridir.

Evren Bir Statik Site Olsaydı: Kader, Derleme ve Önceden Yazılmış Sayfalar

Bir statik site üreticisi ilk bakışta mütevazı bir araçtır: Markdown dosyalarını, şablonları ve görselleri alır; ardından bunları ziyaretçiye hazır HTML sayfalarına dönüştürür. Jekyll, Hugo ya da Eleventy gibi araçlar, web sitesini kullanıcı geldiği anda icat etmez. Site çoktan derlenmiştir. Ziyaretçi yalnızca önceden kurulmuş bir dünyada dolaşır. İşte bu teknik ayrıntı, ontolojinin en eski sorularından birine beklenmedik bir pencere açar: Gerçeklik de bizim karşılaşmamızdan önce, bütün ayrıntılarıyla “derlenmiş” olabilir mi?

Deterministik evren modelinde her olay, önceki koşulların zorunlu sonucudur. Başlangıçtaki madde dağılımı, fizik yasaları ve zamanın akışı verildiğinde, sonraki her an teorik olarak hesaplanabilir olur. Bu görüşte gelecek, henüz bizim deneyimimize sunulmamış olsa da nedensel zincirin içinde zaten içerilmiştir. Statik bir sitedeki “hakkımızda” sayfası da ziyaretçi o bağlantıya tıklamadan önce vardır. Tıklama, sayfayı yaratmaz; yalnızca ona erişim sağlar.

Derleme zamanı ile yaşanan zaman

Burada güçlü ama dikkatle kullanılmalıdır bir benzetme vardır. Statik site üreticisinde iki zaman düzeyi bulunur: Derleme zamanı ve çalışma zamanı. Derleme sırasında içerik, şablon ve kurallar birleşerek somut dosyalara dönüşür. Çalışma sırasında ise tarayıcı bu dosyaları gösterir. Deterministik ontolojide de buna benzer biçimde, evrenin temel yasaları bir tür “derleme mantığı” gibi düşünülebilir. Bizim yaşadığımız anlar ise bu mantığın ekranda görünür hâle gelmesidir.

Bu bakış, özgür irade tartışmasını da keskinleştirir. Eğer her bağlantı hedefi önceden oluşturulmuşsa, ziyaretçinin seçimi ne kadar gerçektir? Elbette kullanıcı hangi menüye tıklayacağına karar verir. Fakat seçebileceği sayfalar, sitenin yapısı tarafından önceden sınırlandırılmıştır. İnsan da karar verir; ancak karar veren beynin biyolojisi, geçmiş deneyimleri, toplumsal koşulları ve o andaki fiziksel durumu kararın oluşumuna katılır. Determinizm, seçimin yaşantısal gerçekliğini inkâr etmek zorunda değildir; daha çok seçimin nedensiz, gökten düşen bir başlangıç olduğu fikrine itiraz eder.

Yine de evreni statik siteye tamamen indirgemek yanıltıcı olur. Bir site üreticisinin derleyicisi dışarıdan tasarlanmıştır; evrenin ise dışsal bir programcısı olduğuna dair bilimsel bir kanıtımız yoktur. Ayrıca kuantum fiziği, doğanın en temel düzeyde mutlak biçimde öngörülebilir olup olmadığı tartışmasını canlı tutar. Bazı yorumlarda rastlantısallık gerçek bir özellikken, bazılarında görünürdeki belirsizlik daha derin bir düzenin sonucu olabilir. Yani kozmik kaynak kodunu henüz elimize almış değiliz.

Statik modelin asıl felsefi değeri, zaman algımızı sarsmasındadır. Biz geleceği açık, geçmişi kapalı bir alan gibi deneyimleriz. Oysa blok evren yaklaşımı, geçmişin, şimdinin ve geleceğin dört boyutlu bir bütün içinde birlikte var olabileceğini ileri sürer. Bu görüşte yarının sayfası “henüz yayınlanmamış” değildir; yalnızca bizim bulunduğumuz zaman bağlantısından erişilebilir değildir. Zamanın akışı, sitenin dosya sistemindeki değişimden çok, okuyucunun sayfalar arasında ilerleyişine benzer.

Belki de en kışkırtıcı soru şudur: Eğer hayatımız önceden derlenmiş bir yapıysa, etik sorumluluk anlamsızlaşır mı? Hayır. Bir sayfanın önceden var olması, içeriğinin etkisiz olduğu anlamına gelmez. Kararlar, sonuçların nedenidir; pişmanlık, öğrenme ve hukuk da nedensel ağın parçalarıdır. Bir insanı ikna etmek, eğitmek ya da uyarmak, sistemin içine yeni bir neden yerleştirmektir. Determinizm bizi kuklaya çevirmekten çok, davranışlarımızın hangi koşullarda değiştiğini daha ciddi incelemeye çağırır.

Statik site üreticileri bize küçük bir teknik ders verir: Görünürde anlık olan şey, çoğu zaman daha önce kurulmuş bir yapının sonucudur. Ontoloji ise bu dersi evrene uygular ve sorar: Biz gerçekten yeni sayfalar mı yazıyoruz, yoksa büyük bir derlemenin içinde satır satır mı görünür oluyoruz? Kesin yanıt bilinmiyor. Fakat sorunun kendisi, ekrana baktığımızda yalnızca bir web sayfası değil, varoluşun çalışma biçimine dair bir metafor görmemizi sağlar.