1940 yılında “Merhaba Dünya!” kodlar evrenine gönderilen ilk selamdı. Bu selam yazılımcılar tarafından farklı şekillerde devam ettirildi ve sonuç olarak adım attığımız her taşın altına bir kod saklandı. Artık yediğimiz ekmeğin pişirilme sürecinden, internet sitemizi oluşturduğumuz kaynağa kadar kodlar her yanımızda. Hatta bu yazıyı siz okurken sunucu tarafında, internet tarayıcısında ve kaynak dosyasında.
Kodlar gerçekten hayatımızı kolaylaştırdı ve onu hayal edemeyeceğimiz ufuk çizgisine taşıdı. Ne var ki işler her zaman beklendiği gibi gitmedi. Kodları icat eden insanoğlu bunun hatasını (bugunu) da icat etti ve fena şekilde çuvalladı. Şimdi kod yazarken hata yaptığınızda kendinize kızıyorsanız, bu alışkanlığınızı geride bırakın. Çünkü sizden önce birileri fena halde çuvalladı. Ne kadar mı çuvalladılar dersiniz? İşte bilgisayar tarihinin en kötü 10 programlama hatası;
10- Y2K Bug
2000 Yılı Hatası (The Yer 2000 bug), Y2K Bug veya Milenyum Hatası (Millennium Bug) olarak bilinen bu kodlama hatası, tüm bilgisayarların afallamasına neden olmuştu. 90’lı yıllarda bilgisayar programları genellikle 4 rakamlı yılların kısaltmasını kullanıyordu. 1990 yerine kısaca 90, 1991 yerine 91 yazılıyordu. O zaman için yazılımcıların bu kısaltmayı kullanması fındık kadar bellekli bilgisayarlarda ciddi veri tasarrufuna yardımcı oluyordu. Gözden kaçırılan şey ise 2000 yılının bu programlara nasıl tanımlanacağıydı.
Korkulan oldu ve kısaltma kullanılan bilgisayar yazılımları 2000 yılını 00 olarak tanımlayamadı. 2000 yılı yazılımlar için fetret yılı oldu ve bazı popüler yazılımlar dahi Y2K Bug’ından etkilenerek ekstra bir günü işlemeyi başaramadı. Neyse ki yaşanan kod hatası sadece bilgisayar dünyasının başını döndürmekle kaldı. Hayat durmadı ve olağan şeklinde devam etti ama bu hatanın faturasının evrensel olarak bilgisayar endüstrisine 300 milyar dolara mal olduğu düşünülüyor.
Neden en kötü programlama hatasıydı: YK2 hayatları etkilemese bile sektörü derinden etkileyerek 300 milyar dolarlık mali kayba neden oldu.
Fiyatıyla Ocak Batıran Apple Lisa’nın Kaynak Kodu Yayınlanacak
Apple’ın külliyatına kuş bakışı göz attığımızda sadece marjinal teknolojileri görmüyoruz. Elf gözlerimiz para görüyor! Çuval dolusu ve bir arabanın torpidosuna sığdıramayacağınız kadar çok para! Apple Lisa, bilgisayar end...
9- Hearthbleed Bug
“Kanayan kalp” olarak Türkçeye çevirebileceğimiz Hearthbleed açığı, OpenSSL kütüphanesinde ortaya çıkan tehlikeli bir kodlama hatasıydı. Normal şartlarda OpenSSL kütüphanesi kullanılan bağlantıların şifrelenerek güvenli aktarılması sağlanırdı. OpenSSL’de meydana gelen açık ile korsanlar 64 kb’a kadar sistem belleğini okuyabilmenin yolunu keşfettiler. Bir nevi OpenSSL kullanılan sistemler şifreleme özelliğinden faydalanamıyordu ancak bunu sadece açığın farkında olan internet korsanları biliyordu.
Hearthbleed açığının sistem yöneticileri tarafından keşfedilmesi 2014 yılında oldu fakat açığın 2012 yılında ortaya çıktığı ve çeşitli gruplar tarafından kullanıldığı öğrenildi. Bir rapora göre Hearthbleed açığından OpenSSL kullanan internet sitelerinin neredeyse tamamı etkilenmişti. Sorun, OpenSSL’in geliştirdiği yeni bir güvenlik yaması sürümü ile (1.0.1g) giderildi. Hearthbleed bug’ı unutulacak cinsten değildi. Ölümsüz olması ve meraklıları için bug’ın bir internet sitesi kuruldu.
Neden en kötü programlama hatasıydı: Heartbleed gerçekten ciddi bir güvenlik sorunu oluşturuyordu. 2012 yılında keşfedilmiş olmasına rağmen açığı herkesin (ve OpenSSL’in) öğrenmesi 2014 yılında gerçekleşti. Bu süre içinde korsanlar OpenSSL sertifikalı sitelerde gönüllerince at koşturdu.
8- Word of Warcraft Virüsü (Harbiden Virüs)
World of Warcraft (Wow)’un başı 2005 yılında farklı bir virüs türüyle belaya girmişti. Bilmeyenler için WoW; oyuncularına fantastik bir ortamda var olma ve rol yapma şansı sunuyordu. Oyuncular karakterleriyle zindanlar ve çeşitli oyun haritalarına dahil olup buradaki yaratıkları avlıyordu. Oyuna yeni bir harita ekleyen WoW geliştiricileri, Hakkar adında tanrının soyundan gelen bir yaratık ekledi. Bu karakterin hazırlanması aşamasında meydana gelen bir kod hatası Hakkar’ın ölümüyle dijital bir hastalığı açığa çıkardı.
Bir nevi virüs olarak yayılan ”hastalıklı kan” bulaştığı tüm güçsüz karakterlerin hastalanıp ölmesine neden oldu. Karakterlerden karakterlere dağılan virüse güçlü oyun karakterleri bile çok uzun dayanamadı. Oyun karakterlerinden sonra sanal petlere sıçrayan hastalık, oyunun içindeki NPC karakterlerinin ölmesine neden oldu. WoW hatayı giderip eski yedeğiyle sunucusunu yeniden başlatarak sorunu giderdi.
Neden en kötü programlama hatasıydı: WoW’un bu batırma senaryosu kimilerine göre bir kodlama hatası değil, şakaydı. Yine de oyuncular tarafından ciddiye alındığı gerçeğini değiştirmedi. Bu bir şakaysa saatler süren sunucuyu yeniden başlatma ve sıfırlama çalışmalarına neyin neden olduğunu hala bilinmiyor. Garavel’in dediği gibi nimetle şaka olmaz!
7- Therac-25
Oyun dünyasında meydana gelen kod hataları kimseyi öldürmez. En fazla gülüp geçersiniz ama buna benzer bir hata ya gerçekte olursa ne olur? Therac-25, Atomic Energy of Canada tarafından üretilen bir radyasyon terapisi makinesi. Makinenin yazılımsal tarafında meydana gelen bir hata sistemin yanlış tedavi uygulamasına oldu. En az 6 kişinin de yazılım yüzünden öldüğü doğrulandı.
Therac-25’in yazılımsal tarafında yapılan bir kodlama hatası hesaplamayı doğru yapamıyor ve hastaların aşırı dozda radyasyona maruz kalmasına neden oluyordu. Makinenin yazılımı tek bir yazılım geliştiricisi tarafından hazırlanmış ve kaynak kodunda makinenin yazılımlarının daha önceki sürümleri olan Therac-6 ve Therac-20’nin kaynak kodları kullanılmıştı. Gözden kaçan ufak sürümsel farklılık ne yazık ki hastaların hayatlarının sona ermesiyle sonuçlandı.
Neden en kötü programlama hatasıydı: Adamlar koddan gitti ötesi var mı? Altı üstü yazılım deyip geçmekle olmuyor. Therac-25 vakası kötü kodların insanların başına açabilecekleri konusunda önce yazılımcıların sonra tüm insanlığın ders çıkarması gereken bir örnek.
6- NASA’nın Mariner 1 Roketi
NASA teknolojiyi en aktif kullanan birimlerden biri. Yeni keşiflere öncülük yapmak isteyen NASA, “Mariner 1” adını verdiği roketi yörüngeye fırlatarak, Venüs gezegenine dair yeni keşifler yapmayı umuyordu. Roket fırlatılmasına fırlatıldı ama bir süre sonra rotasının dışına doğru yol aldı. Gerçek manada yoldan çıkan roket, görev rotasının yakınına bile ulaşmadan imha edildi.
Mariner 1’in tuhaf hareketi incelendiğinde sorunun yazılımsal bir hatadan kaynaklandığı ortaya çıktı. Koordinatların belirlenmesi sırasında yazılımcı eksik bir tire işareti kullanmış ve bu eksiklik roketin olması gereken rotasından çıkmasın neden olmuştu. Program hatası Arthur C. Clarke’in bir kitabında “Dünyanın en pahalı tire işaretinin öyküsü” olarak kaleme almıştır.
Neden en kötü programlama hatasıydı: Mariner 1’in rotasının dışına çıkmasının ve tüm projenin çöp haline gelmesinin tek nedeni yazılımcının dalgınlıkla koymayı unuttuğu bir tire işaretidir. Arthur’un kaleme aldığı gibi bu tire işareti tarihin en pahalı tire işaretidir.
5- AT&T’nin Sistem Çökerten Güncellemesi
Alo? Sesim şimdi geliyor mu? Hayır. 1990 yılında AT&T yazılımı üzerinde bir güncelleme yaptı ve güncellemeyi test etmeden yayına aldı. Güncelleme kodunda yanlış kullanılan bir if döngüsü, sistemin kilitlenmesine ve 9 saat boyunca servis sunamamasına neden oldu. 9 saatlik iletişim kopukluğunda 75 milyon çağrı gerçekleştirilemedi.
C diliyle yazılmış sistem ağında yapılan kodlama hatası ancak 9. saatin sonunda giderilebildi. 1990 yılı için bu ses getiren bir problem olmamıştı. Şimdi olsa çağrılarımızın yerine ulaşmaması, gitmeyen SMS mesajları, Instagram’a ve Twitter’a ve WM Aracı’na girememek eminim bizleri delirtirdi.
Neden en kötü programlama hatasıydı: Güncellemelerin sistem üzerinde ne şekilde tepki vereceğini bilmek şansa bırakılmamalıydı. Özellikle milyonlarca müşterisi olan bir sistemin işleyişini etkileyecek kadar kapsamlı bir güncelleme yapılacaksa… (Bu hatadan sonra Windows 10’un sorunlu güncellemelerine karşı daha ılımlı bir insana dönüşebilirsiniz.)
4- Yaşayan Ölüler Hastanesi: St.Marry Hastanesi
St.Marry hastanesinde hastaların durumunu kontrol eden yazılımda bir aksilik meydana geldi ve bir anda hastanedeki 8 bin 500 kişi öldü olarak kayıt altına alındı. Neyseki kısa süreli paniğe neden olan hatanın hasta yönetim sistemi yazılımındaki bir kod hatası nedeniyle açığa çıktı anlaşıldı. Therac-25 ile karşılaştırıldığında bu kod hatasını bir nebze masum olduğunu kabul edebiliriz. En azından insanların ölümüne neden olmadı.
Neden en kötü programlama hatasıydı: Neyseki hiç kimse gerçekten ölmedi fakat raporlarda açığa çıkan karışıklıklar, yazılımcılar ve hastaneyi uzun açıklamalar yapmak zorunda bıraktı. Bir de temizlenmesi gereken raporlar süresince kimlerin gerçekten ölüp ölmediğini tespit etmek zorunda kalındı.
3- Mahkum Salar v1.0
2003 ile 2005 yılları arasında Michigan veri işlemesine bağlı olarak açığa çıkan bir sorun yaşadı. Sorunun neticesinde 23 mahkum Michigan Eyalet Hapishanesinden cezaları dolmadan tahliye edildi. Neyseki sistemdeki kod hatası sadece hafif suçlar kategorisinde yer alan 39 ila 161 gün arasında ceza alan mahkumları salıvermişti. Bunlar genelde basit hırsızlıklar ve madde bağımlılarının aldığı suçlardı.
Yazılımların elle yapmamız gereken işleri otomatiğe bağlayarak hayatlarımızı kolaylaştırdığı kesin. Özellikle 2003 ile 2005 yılları arasında Michigan Eyalet Hapishanesinde mahkum olduğunuzda…
Neden en kötü programlama hatasıydı: Yapılan hata yanlışlıkla ağır suçlar işlemiş ve henüz ıslah edilmemiş mahkumların topluma tekrar salıverilmesine neden olabilirdi.
2- Hartford Kolezyumunun Çöküşü
Hartford Kolezyumu, içerdeki herkes dışarıyı çıktan sonra bir gece yarısı ansızın çöktü ve 90 milyon maddi hasar ortaya çıktı. Peki, Hartford Kolezyumu neden çökmüştü? Kolezyum, çok amaçlı bir tasarım programı olan CAD yazılımıyla tasarlanmıştı. Yazılımı hazırlayan programcılar bazı değerleri gözden kaçırmıştı. Yapıyı tasarlayan mühendisler ise demir desteklerin tavan yükü ve basıncını yalın olarak hesaplamıştı.
O gece yağan ıslak karın ağırlığı demirlerin ve desteklerin kaldırabileceği türden değildi. Minecraft hazırladığınızda yaptığınız bir hata basit bir yama ile geçiştirilebilir. Gerçek dünya için bir CAD yazılımı hazırlıyorsanız bazen yamadan fazlası lazım olabilir.
Neden en kötü programlama hatasıydı: Neyse ki hiç kimse ölmedi. 90 milyon dolarlık kaybın yanı sıra yapı tamamen kullanılmaz hale geldi.
1- Pentium’un Matematik İşlemcisi
İşlemci pazarında Intel’in AMD ve diğer üreticilere kıyasla daha başarılı ürünler ürettiği iddia edilir. Bunun nedeni belki Intel’in geçmişte bolca hata yapması olabilir. 1994 yılında Intel yeni bir mikroişlemci çıkardı. Bu işlemcide önceki ürünlerinden farklı olarak 486DX ve FPU (floating-point unit) kullanıldı. FPU bir matematik yardımcısı işlemciydi. Bu işlemciden önceki işlemcilerde matematiksel işlemler intiger’lar yardımıyla yapılırken, FPU yüksek hızla matematiksel işlemler yapmayı vaat ediyordu.
Radix 4 STR algoritmasıyla yapılandırılan FPU işlemcinin yazılımında yapılan bir hata tüm matematiksel işlemlerin hatalı yapılmasına neden oldu. Küçük bir hata gibi görünse bile bu işlemciler Therac-25 veya Hartford Kolezyumunun çöküşünden daha basit değildi. Intel sorunun çözümü için kötü kodu ayıklamaya yönelik yayınladığı yama paketi sayesinde sorundan kurtuldu ve ürünü pazarda satılmaya devam etti.
Neden en kötü programlama hatasıydı: Ufacık bir kodlama hatası ürünün tüm avantajının dezavantajına dönmesine neden oldu. Güncelleme yayınlanmasına rağmen kullanıcılar Intel işlemci satın alırken kendilerini tekrar tekrar düşünürken buldular.
En nihayetinde kod deyip geçmemek lazım. Kodlardaki hatalar bazen sadece SEO puanı kaybetmenize neden olurken, kimi milyonlarca dolara kimi ise insanların hayatlarına mal olabilir.