Bölüm 14: Ahmaklar için sahanda yumurta pişirme rehberi.

Algoritma, Akış diyagramı, yani bir problemin çözülmesi için takip edilmesi gereken yol. Bir konunun nasıl çözülmesi gerektiği ile ilgili adımları bir kağıda adım adım döktüğünüz zaman bir algoritma yazmış olursunuz.

Mesela sahanda yumurta yapmak için yandaki Algoritma yazılabilir.

Afiyet olsun. Algoritma yazdınız. Bilgisayar programcılarının yaptıkları da budur. Bir olayı doğru sırayla adım adım detaylandırıp bir program yazarlar. Programın taslağı da algoritmadır. Ancak işleri o kadar basit değil. İlk adımı ele alalım.

Ocağı yak; yakma işlemini yapacak olan çakmak çaktı mı? Tüpten gaz geldi mi? Sıcaklık tanımı yapılmamış yani kısık mı yoksa çok mu açık olacak?  Tüpte yumurtanın pişmesine yetecek kadar gaz var mı? Tüp, gaz kaçırıyor mu, ortamda gaz kokusu var mı? Öyle ya yumurta yiyeceğiz diye mutfağı havaya uçurmamak lazım.

Yandaki detaylandırma sadece birinci adım içindi… Bir bilgisayar programcısının bu ve bunun gibi yüzlerce binlerce olasılığı önceden düşünerek detaylandırması, adım adım her olasılık için bir çözüm bulması gerekiyor. O yüzden bir süre sonra şirazeleri kayıyor. Hesaplanamayan bir olasılıkta program hata veriyor. Yani bilgisayar hatası dediğimiz şey aslında bilgisayar programcısnın dikkate almadığı bir detay. Bilgisayarlar hata yapmıyor, sadece algoritmalar yeterli değil…

Şimdi aynı algoritmayı biraz daha detaylandıralım. Altını çiziyorum, sadece biraz detaylandırılmış hali…

Acemi bir programcı yukarıdaki basit versiyonu yazıyor. Uygulamaya geçince her zaman bir problem çıkıyor. Programcı sıkıntıyı anlıyor, gerekli sorgulamaları ekliyor. Ne kadar çok deneyim yaşanırsa algoritma o kadar sorunsuz çalışıyor.

Bisiklet sürmenin, araba kullanmanın, burun karıştırmanın, kafayı kaşımanın ya da yazı yazmanın da bir algoritması var. Yaptığımız her hareket topluluğunun algoritması yazılabilir. Sırasıyla yapılacak her hareket adım adım sıralanabilinir. Kimisi çok karışık kimisi çok basit…

Bahsettiğim prensibin sadece bisiklete binmek, yazı yazmak, araba kullanmak gibi motor hareketlerde değil hayatımızdaki bütün unsurlarda geçerli.

Yaşadığımız bütün deneyimler bilgisayarımızda yani beynimizde katman katman üstüne eklenerek, sabitler netleşip, aynı şekilde tekrarlanmayanların silinmediği ancak silikleştiği bir düzenekte kayıt ediliyor. Her yaşanan aksaklıkta, hatayı düzeltebilecek akışı bulduğumuz anda algoritmamız kendini geliştiriyor. Ancak bulana kadar bazen defalarca deneme yapmak zorunda kalıyoruz.  Tekrar bisiklete binme ihtiyacı duyduğumuzda algoritmayı çağırıp kullanıyoruz. Kullandıkça sabitler daha da netleşiyor, tekrar olmayanlar birbiri içine girip silikleşiyor.

Bir programda ne kadar çok sabit varsa yani Polaris’e bakarken ağaçta görüntüde ancak oraya daha sonra bir vazo da koyarsak bu sefer vazo sabitlerden biri haline geliyor. Programın işlevselliğine ne kadar değer katıyorsa sabitliği o kadar pekişiyor.

”Gereklilik, ağırlık ve değer birbirinden ayrılmaz biçimde örülmüş üç kavramdır; sadece gereklilik ağırdır ve sadece ağır olan şey değerlidir.” 

Milan Kundera

Basit bir detay “hafif” ya da Milan Kundera’nın tanımı ile değersiz olsa da detayın çok sayıda tekrar edilmesi onu ağırlaştırıyor. Ağırlaşan şey değerli, işlevsel ve gerekli hale geliyor. Varlığını algıladığımız değerli, ağır ve gerekli her şeyin özünde aslında dayanılmaz bir hafiflik var.