Bilgisayar Bilimleri -3- Bilgisayar Biliminin Tanımı, Algoritmalar, Donanım ve Yazılım

Bilgisayar bilimlerini tanımlamak istediğimizde programlar tarafından veri olarak temsil edilen veri ile etkileşimde bulunan işlemlerin bilimidir diye ifade edebiliriz. Bu bilimin temelinde sayısal bilgiyi değiştirecek, birbiri ile iletiştirecek ve saklayacak algoritmalar yer almaktadır. Bilgisayar bilimlerinin iki üst kısımda iki ana dala ayrıldığını söyleyebiliriz. Teorik ve pratik disiplinler olarak ayırdığımız bu iki dalın bütün noktalarda birbiriyle tamamen ayrı olduğu da söylenemez.

Fark ettiyseniz baştaki tanımda konuya veriden girdik ve henüz bilgisayardan bahsetmedik. Bilgisayar bilimlerinde merkezde bilgisayar değil veri vardır ve bunun çalışmalar ve uygulamalar veri üzerinde çalışmaktadır. Bilgisayar terimlerinin elbette pek çok farklı tanımı da bulunmaktadır. Pek çok tanımı okumak ve hepsini beraber değerlendirmek en isabetlisidir.

Norman Gibbs ve Allen Tucker’e göre bilgisayar bilimlerinin merkezi algoritmalardır. Gibbs ve Tucker’e göre bilgisayar bilimcisinin görevi önemli problemleri çözmek için algoritma tasarlamak ve geliştirmektir. Tasarım süreci aşağıdaki işleri içermektedir:

  • Algoritmaların davranışlarını öğrenmek, doğru ve etkili algoritmayı belirlemek. (Matematiksel ve biçimsel özellikleri yönünden)
  • Algoritmaları yürütecek bilgisayar sistemlerini tasarlamak ve üretmek.
  • Algoritmaları dillere çevirecek ve donanım tarafından yürütebilecek programlama dillerini tasarlamak.
  • Önemli problemleri tanımlayıp bunlar için doğru ve etkili yazılım paketleri tasarlamak.

Görüldüğü gibi buradaki bütün işlerin tek hedefi tasarlanan algoritmayı doğru şekilde yürütecek araçlardır. Bu tanımlamaya baktığımızda algoritmaları bilmeden hiçbir şekilde anlamanın mümkün olmadığını görürüz. Algoritma bilgisi her ne kadar programcılıkta bize lazım olsa da aynı zamanda bilgisayar bilimlerini anlamak için de gerekli görülmektedir.

Algoritmalar bilgisayarlardan önce bulunmuş ve tamamen teorik halde olan yapılardır. Bilgisayar programları algoritmaların kendisi değil uygulanışıdır. Algoritmaları bir işin yapılacağı adımların doğru olarak sıralanması diye tarif edebiliriz. Algoritmalar sadece bilgisayar bilimleri ile de sınırlı değildir. Bir yemek tarifi veya bir çamaşır makinesinin kullanma talimatı da birer algoritmadır. Yalnız burada yazılı olan algoritmalar “tamamen aptal” olan bir makineye yönelik değil akıllı bir insana yöneliktir. Örneğin bir yemek tarifinde talimatların şu şekilde sıralandığını görebilirsiniz:

  • Sebzeleri doğra.
  • Ocağı orta ateşte yak.
  • Sebzeleri orta derecede kavur.
  • Üzerinde iki yumurta kır.
  • Pişinceye kadar karıştır.

Buradaki talimatların yemek yapma tecrübesi olan ve belli bir zihinsel yeterliliğe sahip insana yönelik olduğunu görebilirsiniz. Eğer sebzeleri doğrama konusunda bir fikri olmayan birine anlatsaydı o zaman bıçağı tut, bıçağı sebzenin üzerine getir, bastırarak ileri geri götür gibi çok ayrıntılı işleri de belirtmesi gerekecekti. İşte bilgisayar bu bahsettiğimiz konuda olduğu gibi tamamen aptal ve hiç tecrübesi olmayan birine verdiğimiz talimatlara benzer komutları anlayabilmektedir. Algoritma kurarken biz yine “yüksek seviyede” talimatları yazsak da bunu bilgisayarın anlayabilmesi mümkün olmaz. O halde algoritmaları bilgisayarın anlayabilmesi için bir araca ihtiyaç vardır. Bu araca da programlama ve programlama dilleri adını veririz.

Bizim yazdığımız programın özünün algoritma olduğunu biliyoruz. Bu algoritmanın programlama diline aktarılması ise programcının görevidir. Programlama algoritmanın temsil edilmesidir. Programlama dillerinin seviyesi yükseldikçe donanım soyutlaması ve insan diline yakınlığı da artmaktadır. Bu durumda tasarladığımız algoritmaları tamamen aptal bir makineye yönelik yazılan talimatlar haline getirmek zorunda kalmak yerine insan diline ve matematik ile mantık işlemlerine benzer hale getiririz. Algoritmaların temsil edildiği programlar ya da bilgiye dair ne varsa bütün bunlara yazılım adı verilir. Yazılım her ne kadar kalıcı olmayan belleklerde elektriksel bir değer, kalıcı belleklerde ise fiziksel veya manyetik bir değişiklik olup gözle veya başka ölçü aletleri ile gözlemlenebilse de bu gözlemlenen şeyin bizim için bir anlamı yoktur. Yazılıma elle tutulmaz, gözle görülmez soyut bir şey demek o yüzden doğru değildir. Fakat bu yazılımın soyutluğu bilgi değeri bakımından geçerlidir. Yazılım bilgisayarların çalışması ve bizim bunu değerlendirmemiz konusunda bir bilgi değeri taşır ve donanımdan soyutlanmış haldedir.  Eğer yazılımın bulunduğu bellek birimlerini gözlemlersek “065” değerini okuyabiliriz. Fakat bu “065” değerinin “A” harfine karşılık gelmesi tamamen donanımdan bağımsız ve temsili bir konumdadır. Yazılımın soyut boyutu insan faktörü ele alınmadan anlaşılamaz.

Yazılım bahsettiğimiz gibi donanım üzerinde yer alan bir durum bilgisiydi. Bu durum bilgisi elektriksel durum olabildiği gibi teknolojiye göre manyetik, kimyasal veya fiziksel durum da olabilir. Bu durumun mevcut olabilmesi için bir iskelete bir yapıya sahip olması lazımdır. Sıvıların bir yerde kalabilmesi için bir kabın gerekli olması gibi yazılımın bir yerde bulunması ve çalışması için gereken fiziksel ortama donanım adı verilir. Bilgisayar donanımı günümüz teknolojisinde tamamen elektriğe ve elektronik teknolojisine bağlı konumdadır. Elbette bu “otomatları” yapmak için elektroniğe ihtiyaç duyulmasa da bunları etkili olarak kullanmak ve işlevsel hale getirmek için günümüz teknolojisi için elektronik tek seçenek durumundadır. Elektronik teknolojisinde ise günümüz teknolojisine yarı iletken devre elemanları ve özellikle de transistörler sayesinde gelinebilmiştir. Transistörlerden bahsedip geçersek bazılarınız 3 ayaklı plastik kılıfta olan bir eleman ile tırnak ucu kadar bir çipin aynı teknolojide olmadığının ve bunu yapabilmek için ayrı bir teknoloji olması gerektiğinin farkına varacaktır. Bu teknoloji ise entegre devre teknolojisidir. Bilgisayarları anlatan pek çok kişi transistörlerin önemini vurgulayıp bunu görmezden gelse de entegre devre teknolojisi bilgisayarları bir oda kadar olmaktan kurtarıp avcumuzun içine sığar hale getirmiştir. Entegre devreler olmasaydı yine bilgisayarların işlem gücü sınırlı, güç tüketimi fazla ve boyutu da basit olmadığı sürece en azından bir oda kadar olacaktı. Entegre devre teknolojisi ile milyonlarca transistör tırnak ucu kadar olan silikon çekirdeğe yerleştirilebilmektedir.

Algoritmaları ilerleyen başlıklarda size daha ayrıntılı olarak anlatacağız. Şimdi bilgisayar bilimlerinin tarihini anlatmakla konumuza devam edelim.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

3 Responses

  1. Anonim dedi ki:

    Araba?

    • “Araca” olacak. Ben yazıları yazdığım gibi yayınlıyorum. O yüzden böyle hatalar çıkıyor.

      • Murat dedi ki:

        Bende bu yeni yazı haberleri geldikçe vakit bulup okumak istiyorum. Bazen aradan zaman geçiyor. Okurken gördüğüm yanlışları bildirerek bir nebze katkıda bulunmak istedim.
        Emeğinize ve cevabınıza teşekkür ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.