5 Mart 2007 Pazartesi

Bir Yazılımcının Gözünden Evrim Fikri

Evrim yaşandı mı, yaşanmadı mı? Ne kadar kritik bir soru değil mi? Cevabı evetse yaratılış inancı sarsılacak, hayırsa ateizm çok ciddi darbe alacak. Cevabını bilemiyoruz. Bilememek bizi inanmaya sevk ediyor. İnanmak cehaletin bir sonucuymuş. İspat edemediğin şeylere inanırmışsın. Öyle derler. Bizler cehaletimizin sonucu olarak Allah’ın varlığına ya da yokluğuna inanıp inanmama çizgisinde gider geliriz. Belki de gidip geldiğimizi zannederiz. Belki Allah'ın varlığına inanıp inanma diye bir sınanma aslında hiç yoktur. Aslında herkes Allah'ın varlığını kabul ediyordur. Biz bilgisizliğimiz ve yanlış çıkarımlarımızın sonucu olarak bu konudan sınandığımızı zannediyoruzdur. Belki de sınanma başka bir alandadır. Ne olursa olsun sorular, şüpheler, cevaplar, tuzaklar hep karşımızdadır. Kalbimiz meydana bırakılmış bir tüy tanesi gibi bir oraya bir buraya savrulmaktadır.

Bu savruluş sırasında iki kavram ile karşılaşıyoruz: Evrim ve Yaratılış. Bunlar insanın varoluş nedenini anlamlandırma çabasıdır. Ben bu çabanın bilimsel bilgi olarak değerlendirilmesini doğru bulmuyorum. Çünkü bilimsel bilgi nedenden ziyade mekanizmanın kendisi ile ilgilenir ve onu açıklar. Sen doğadaki mekanizmaları açıklayan bu bilgiler topluluğuna bakar, kendince yorum yaparsın. Yorum yapanın sıfatı ne olursa olsun, bu yapılan yorumlar bilimsel bilgi değildir. Yani senin bir fosile bakıp "Bunlar tesadüfen bu hale gelmiştir" ya da "Yaratılışımızın bir sonucudur" demen bilimin sınırları içinde değildir. Bilimsel bilginin şahsi olarak yorumudur. Dolayısıyla ne tesadüf ne de yaratılış bilimsel bilgi olarak sunulamaz. Hatta yaratılışın bilimsel bilgi gibi sunulması dini açıdan da doğru olamaz. Yaratılış bilimsel bilgi olarak sunulamaz çünkü doğası gereği yalnızca bir sefer ve doğaüstü bir şekilde olmuştur. Olağanüstü olmuş bir şeyi bir bilimsel disipline sokamazsın. Aynı evrimin dayanağı olan tesadüf iddiasını sokamayışın gibi... Çünkü tesadüf demen bir kabuldür, bir yorumdur. 

Bilimsel bilginin "Neden böyle?" sorusuna cevap veremeyeceği bir nokta her zaman olacaktır. İşte orada senin inanışın, yorumun devreye girer. O noktada Allah böyle yaratmış da diyebilirsin, tesadüf de diyebilirsin. Karşılaştığın şeylerin nedenine Allah yarattı demenle tesadüf demen bu açıdan aynı şeydir. İnanışını, yorumunu söylemendir. 

Bilimsel bilgi evrenin çalışma mekanizmasındaki döngüyü açıklayan bilgiler topluluğudur. Zaten bu döngülerin oransal ifadesine de matematik diyoruz. Örneğin dünyanın kendi ekseni etrafındaki hareketi ve bu hareketin periyodunun 24 saat olması gibi...

Bana göre varoluşun nedeni yaratılıştır. Ama yaratılış fikri doğası gereği zaten olağanüstü olanı ve döngüsel olmayanı savunmaktır. Yani bilimsel bilgi ile ifade edilemeyecek olanı... Bu noktada, çok yapılan bir hatayı bir kısa not olarak düşmek isterim. "Din bilime aykırıdır" iddiasına cevap verme adına yaratılışın bilimsel bilgi olarak ifade edilebileceği söyleyen insanlar olabiliyor. Bunu yapanlar iyi niyetli olsalar da bu yapılan yanlış bir iddiaya yanlış bir cevap vermekten başka bir şey olmamaktadır ne yazık ki. Bilimsel bilgi mekanizmayı açıklar, yaratılış veya tesadüf demen senin inanışını. Dolayısıyla varoluşun nedenine hep şüphe ile yaklaşacağız. Zaten hayatın sırrı şüphe etmektir. Sonucunda tercih edebilme yetisine kavuşabilmektir. Şüpheler imtihanımızın gereğidir. Şüpheler ve sorular ile bilgimizi artırırız. Onlar olmazsa olmaz.

Her şey bir denge içindedir. Evrende, vücudumuzda, ruhani tabiatımızda hep bir denge vardır. Evrimi de buradan konuşmaya başlamalıyız. Evrendeki dengeden, düzenden başlayarak… O zaman bu noktada sormamız gereken soru şudur: Evren değişime açık mı? Evrende değişim var mı?

Hayır, yoktur desem... "Ama doğduğunuzdan beri her şeyin değiştiğini görüyoruz ve insanlar her şeyin bir değişim içinde olduğu söylenmektedir" diye düşünerek itiraz eder misiniz bu dediğime. İtiraz ederseniz hata yaparsınız. Çünkü canlılık değişime açık bir yapıya sahip değildir.

Madem başlıkta yazılımcı gözü ile anlatacağız dedik öyle yapalım.

İlk kodlamaya başladıklarında mühendisler her şeyi tek bir Çalıştırılabilir Dosyanın (exe’nin) içine koymuşlar. Her defasından kodu tekrardan yazmak… Of, ne can sıkıcı… Kodun yeniden kullanılabilirliği (reusable) yalnızca kopyala-yapıştır işleminden ibaretmiş.

Bakmışlar böyle olmayacak, "Biz en iyisi kodumuzu dinamik olarak bağlayabileceğimiz kod dosyaları oluşturalım sınıflarımız oraya koyalım oradan istediğimiz sınıfın istediğimiz fonksiyonuna ulaşırız" demişler. Böylelikle komponentler (DLL dosyaları) haline getirdiğimiz yazdığımız bir kodu her defasında tekrar tekrar yazmak zorunda kalmayız. Üstelik DLL'lere koyacağımız sınıflarda yapacağımız herhangi bir değişiklikten de exe’miz yani çalışan kodumuzu etkilenmez, diye düşünmüşler. Hmm… 2 tane farklı yerdeki kod birbiri ile etkileşim halinde bir tarafı değiştireceksin ve öteki taraf etkilenmeyecek ha? Öyle kolay değil o işler.

Bu durumun çöküşü çok da uzun sürmemiş. Çünkü öncelikle DLL'deki kodlarda kullanılan Function Overloading için kullanılan isim türetme (name mangling) mekanizması farklı marka derleyicilerde farklı olması, ikincisi ve en önemlisi sınıfta yaptığın değişiklik ile oluşan nesnelerin boyutunun artması -örneğin exe 8 byte veri beklerken ve o kadar geleceğini tahmin ederek ona göre yer ayırırken 16 byte gelmesi- işleri bozmuş. Bakmışlar bu işler böyle olmuyor 2 farklı kodu birbiri ile uyum içinde çalıştırmak öyle kolay bir şey değil. Önce COM teknolojisini tasarlamışlar sonra aslında onun bir ileri basamağı olarak düşünülen  Java\.NET teknolojilerini üretmişler. Bu teknolojilerin detayları her ne kadar konumuz olmasa da aklımızda tutmamız gereken şey çalışan 2 kodu birbiri ile uyum içinde çalıştırmanın zorluğu. Hele ki yalnızca tek taraflı bir değişimin diğer taraftaki kodu nasıl etkilediği ve sistemi çökerttiği... Buffer overflow atakları da stackteki IP(Instruction Pointer) üzerine ekstra veri yazılmasından kaynaklanmaz mı... Her şey birbiriyle uyumlu olmak zorunda ne kadar veri geleceğini sistem bilmek zorunda ki ona göre yer ayırsın. Bunu tek taraflı değiştiremezsin. Değiştirirsen bedelini ödersin. Ki bu güne kadar defalarca ödemişler…

"Eee, bunun evrimle ne alakası var?"

Evren bir koddan ibarettir, daha doğrusu milyarlarca, trilyonlarca... kodun birleşmesinden. Canlı, cansız var olan bütün mekanizmalar hem kendi içinde hem de birbiri ile uyum içindedir. İşte problem burada, sen uyum içindeki bir kodu tek taraflı değiştiremezsin. Hemen bir örnek verelim: Hava bir koddur havadaki oksijen oranı da bir koddur bunu alıp kullanacak vücudumuz da bir koddur. Vücudumuz belirlenmiş bir oranda oksijenin varlığına kullanabilecek şekilde tasarlanmıştır. Bundan azını fazlasını göndermenin bedeli sistemin çökmesidir.

Yani canlılık değişime açık değildir. Doğada ise değişim yoktur. Daha doğrusu olmamalıdır. Zaten devamlı olarak değişime engel olmaya çalışmaz mıyız? Ozonu yeniden dikmeye çalışmamız, buzulları eritmeme çabamız…

Ama yapraklar düşüyor vs. her şey değişim içinde?

Hayır, hiçbir şey değişim içinde değil her şey bir döngü içinde. Buna değişim demek yanlıştır. Bu periyodik değişimdir yani döngüdür.

Aslında bilimsel bilgi de içinde periyodikliği barındırdığı zaman anlamlıdır. Çünkü o zaman matematiksel olarak ifade edilebilir hale gelmiş olmaktadır. Her şey döner ama her şey. Sinüs döner, elektronlar döner, gezegenler döner.

Matematikte, Karmaşık Analizin en önemli konusu: Fourier Dönüşümü. Fourier serisine açma yalnızca periyodik fonksiyonlar için geçerlidir periyodik olmayan fonksiyonları ne yaparız? Onları da sonsuzda periyodikmiş gibi düşünür, tabi bazı özel şartlar altında, ondan sonra Fourier dönüşümünü alırız. Yani fonksiyonlar mühendislik matematiği için periyodik olmak zorundadır. Periyodik değilse onu sonsuzda periyodik olarak düşünmelisin.

Bir şey periyodik olduğu zaman matematiksel anlamda değerlidir. Değişe değişe bu hale geldiğimizi iddia eden evrimi bu hali ile bilimsel ve matematiksel bir zemine oturtmak oldukça zordur. Bilimsel zemine oturtamazsın çünkü gözlem, deney yapamazsın. Çünkü tesadüfen olmuş demektesin. Matematiksel zemine oturtamazsın çünkü ortada bir döngü yok. Aynı yaratılışı bilimsel ve matematiksel zemine oturtmadığımız gibi. Çünkü yaratılış da tek seferde olağanüstü bir şekilde olmuştur ve döngüsel değildir. Ne gözlem yapabilirisin ne de matematiksel denklemini çıkarabilirsin. Buna yaratan da izin vermez. Vermemiştir de zaten. Çünkü sadece bu şartlar altında bizler tercih edebiliriz. Tercih etme hakkımızı kullanabiliriz.

Yaratılışın, evrimin tesadüfünden farkı olağanüstü olmasıdır. Daha doğrusu olağanüstü olduğu kabul edilmesidir. Hatta evrim ve yaratılış birbirine zıt olmak zorunda da değildir. Çünkü eğer tesadüflerin hepsine yaratılış dersen, evrim ile yaratıldığımızı da iddia edebilirsin. Evrim fikri buna da izin verir. Buradan evrimi neden bilimsel bilgi değil de insanların yorumu olarak değerlendirmemiz gerektiğini bir kez daha görebiliriz. Evrim her şeyiyle bilimsel bir disipline oturmuş olsaydı buna izin vermemesi gerekirdi. Ama maalesef öyle olmamaktadır.

0 comments :