Bug: Böcek Mi Hata Mı?

Tugberk Karan - TR
Türkçe Yayın
Published in
6 min readMar 21, 2023

Dün (20.03.2023) model tabanlı tavsiye sistemleri üzerine çalışırken yaşadığım bir paket yükleme hatası ve üzerine uğraşılan 3 saat sonrasında bu yazıyı yazmaya karar verdim. Saç baş yoldurtan içerik konusu; Hata, Error, Bug.
Bir script üzerinde uğraştınız, kafanızda algoritmayı kurdunuz. Bunları kodlara ve bu kodları da IDE üzerine döktünüz. Çalıştırdık ve o da ne hata? Error. Sinir bozucu bir durum evet. Bu hatalarlar için yazılımcılar arasında kullanılan popüler bir terim var, “bug”. Nedir bu bug ve bu hatalara neden bug denmeye başlanmış, tarihteki popüler hatalar ya da diğer tanımı ile bug’lar neler, gelin birlikte bakalım…

Bug Nedir?

Yazılım geliştirmek zorlu ve karmaşık bir süreçtir. Yazılımcılar kod yazarken bazen gözden kaçan detaylar nedeniyle programların istenen şekilde çalışmamasına yol açan hatalarla karşılaşırlar. Bu hatalara bug adı verilir. Peki bu bug ne demek? “Bug” kelimesinin kökeni nedir?

Bug kelime olarak İngilizcede böcek anlamına gelir. Yazılımda ise tam tanımı şu şekildedir, bilgisayar programının veya yazılım sisteminin yanlış veya beklenmeyen bir sonuç üretmesine ve istenmeyen şekillerde davranmasına neden olan bir hata, kusur ya da arızadır. Örneğin, bir web sitesindeki bağlantının çalışmaması, bir oyunun donması veya çökmesi, bir uygulamanın güvenlik açığı olması gibi durumlar bug olarak nitelendirilebilir.

Buglar genellikle yazılımcının kodlama sırasında yaptığı hatalardan kaynaklanır. Unutulan bir noktalama işareti, yanlış girilen bir değişken adı, mantık hatası gibi sebepler buglara yol açabilir. Bazı durumlarda ise derleyicilerin (compiler) hatalı kod üretmesi veya işletim sistemlerindeki sorunlar da buglara neden olabilir.

Bugların bulunması ve düzeltilmesi sürecine debugging (hata ayıklama) denir. Debugging sırasında yazılımcılar çeşitli teknikler ve araçlar kullanarak programın çalışmasını izler, test eder ve sorunu tespit edip çözmeye çalışır. Bazen de tester adı verilen yardımcılardan destek alabilirler.

Bug Kelimesinin Tarihçesi

Bug kelimesinin kökeni tam olarak bilinmese de, ilk olarak 19. yüzyılın ünlü mucitlerinden Thomas Edison tarafından mekanik arızalar için kullanıldığı bilinmektedir. Edison, 1878 yılında Western Union şirketinin başkanı William Orton’a gönderdiği bir mektupta telefon tasarımındaki bir sorundan bahsederken “bug” terimini kullandı. Mektupta şöyle yazıyordu: “Kısmen haklıydınız, cihazımda bir ‘bug’ buldum ama telefonun kendisinde değil. ‘Callbellum’ cinsi bir böcekti. Bu böcek telefonların çağrı aparatlarında yaşam koşulları buluyor gibi görünüyor.” Edison’un bu mektubu bug teriminin teknolojik sorunları tanımlamak için kullanılmasının en eski örneklerinden biridir. Edison bu terimi daha önce de kendi laboratuvar defterlerinde ve dört kanallı telgraf tasarımında kullanmıştır.

İşte ilk defa burada ve bu şekilde kullanılan bug kelimesi gerçek anlamında yani böcek anlamında kullanıldı ve gerçekten de hatanın sebebi bir böcekti.

Bug terimi daha sonra elektronik bilgisayarların ortaya çıkması ile yaygınlaştı ve 1947 yılında Grace Hopper’ın Harvard Mark II bilgisayarının içinde gerçekten bir böcek bulmasıyla ünlü oldur. Peki o olay nasıl oldu?

Harvard Mark II’de Bir Bug

Harvard Mark II, Harvard Üniversitesi’nde bulunan devasa bir elektronik bilgisayardı. Bu bilgisayarın çalışması için binlerce röle adı verilen elektromanyetik anahtarlar kullanılıyordu. Rölelerin arasına bir şey girdiğinde ise bilgisayar hata vermeye başlıyordu.

9 Eylül 1947 tarihinde, Grace Hopper ve ekibi Harvard Mark II’nin neden sürekli hata verdiğini araştırırken, rölelerden birinin arasında sıkışmış bir güve buldular. Güvenin röleyi bozduğunu fark eden ekip, güveyi çıkarttı ve laboratuvar defterine yapıştırdı. Defterde “Bug bulundu” diye yazdılar.

Bu olay bug teriminin ilk kez gerçekten bir böcek anlamında kullanılması olarak tarihe geçti. Ancak bug terimi daha önce de Thomas Edison gibi mühendisler tarafından mekanik sorunları tanımlamak için kullanılıyordu. Grace Hopper ise bu olayı daha sonra anlatarak bug teriminin yaygınlaşmasına katkıda bulundu. Buradaki ilk kez ifadesini bilgisayarlar için ya da yazılım dünyası için ilk kez kullanıldı olarak değiştirebiliriz belki.

Bug kelimesinin anlamını ya da hatalara neden bug denmesinin nedenini anladık. Gelin insanlık tarihinde yer kaplayan önemli buglardan bazılarına bir göz atalım.

Ünlü Buglar (Hatalar)

  • Ariane 5 roketinin havaya uçması: 1996 yılında NASA’nın fırlatmak istediği Ariane 5 roketi, kalkıştan 37 saniye sonra yanlış yöne dönerek kendini imha etti. Bu kaza, NASA’ya yaklaşık 370 milyon dolara mal oldu. Sebep ise yazılımda oluşan bir bugdı. Bu bug, 64 bit değişkeni 16 bit değişkene sığdırmaya çalışarak hata vermesine neden oldu.
  • Aşırı dozda radyasyon yayan Therac-25: Therac-25 adlı makine, kanser hastalarının tedavisinde kullanılan bir radyoterapi cihazıydı. Ancak bu cihazda bulunan bir bug nedeniyle bazı hastalara aşırı dozda radyasyon verildi ve altı kişi hayatını kaybetti veya ciddi şekilde yaralandı. Bugın sebebi ise yazılımcının güvenlik önlemlerini yazılımsal olarak değiştirmesi ve böylece elektron tabancasının kontrolünü kaybetmesiydi.
  • Dakikalar içinde kaybedilen 460 milyon dolar: Knight Capital Group adlı bir yatırım şirketi, 2012 yılında yeni bir algoritmik ticaret yazılımını devreye soktu. Ancak bu yazılımda bulunan bir bug nedeniyle şirketin hisse senetleri dakikalar içinde çöktü ve şirket yaklaşık 460 milyon dolar zarar etti. Bugın sebebi ise eski kodların silinmemesi ve yeni kodlarla çakışmasıydı.
  • Amerikan üssünde patlayan füze: Titan II adlı bir balistik füze, 1980 yılında Arkansas’taki Amerikan üssünde patladı ve büyük bir felaketin eşiğinden dönüldü. Patlamanın sebebi ise basit bir insan hatasıydı. Bir teknisyen yanlışlıkla füzeye düşen bir anahtar nedeniyle füzeyi ateşleyen kodu girdi ve böylece füzeyi patlattı.
  • Mars Climate Orbiter kazası: Mars Climate Orbiter adlı uzay aracı, Mars’ın atmosferine girmek için manevra yaparken yanılıp yok oldu. Bu olayın sebebi ise metrik sistem ile emperyal sistem arasındaki uyumsuzluktu. Uzay aracının tasarımcısı Lockheed Martin emperyal sistemi kullanırken NASA metrik sistemi kullanmıştı ve bu da itme gücünün hesaplanmasında büyük bir hata oluşturmuştu.

Telefon hatlarındaki böceklerden roketlere, transistördeki güveden Lockheed Martin emperyal sisteme uzanan bir hatalar silsilesini ele aldık. Bilgim ve dilim döndüğünce hayatımızda yer etmiş bug teriminin ne anlama geldiğini ve tarihçesini paylaşmaya çalıştım. Umarım okurken keyifli zaman geçirmişsinizdir. Bir sonraki yazıda görüşmek üzere :)

Patreon üzerinden destek olmak isterseniz, buradan destekte bulunabilirsiniz. Şimdiden desteğiniz için çok teşekkür ederim 😊

Kaynakça:

--

--