Bazı Temel Kavramlar
Linux dünyasına adım atmadan önce, bazı temel kavramları öğrenmekte/hatırlamakta fayda olduğunu düşünüyorum. Bu sayede, aslında ne ile uğraşacağımızı zihnimizde daha iyi şekillendirebiliriz. Sağlıklı bir temel oluşturmak ve neden - sonuç ilişkilerini doğru kurabilmek için, bu kavramların elzem olduğunu düşünüyorum.
Bilgisayar (Computer)
Şaka yaptığımı düşünmüş olabilirsiniz ama, gerçekten bilgisayar kavramının ne olduğuna bir bakmamız lazım. Bilgisayarların tarihçesi, özel olarak incelenmesi ve çalışılması gereken bir konu bence. Fakat bu kitabın temel konusu Linux olduğu için, tarihçeye değinmeyeceğiz. Daha çok tanımlar üzerine konuşacağız.
İnsan Bilgisayar (Human Computer)
Bilgisayar Bilimi'nin kurucusu Alan Mathison TURING, 1 Ekim 1950 tarihinde yayımlanan "Computing Machinery and Intelligence" (Hesaplama Makineleri ve Zeka) makalesinde, "Makineler düşünebilir mi? Bu konu, 'makine' ve 'düşünme' kavramlarının tanımıyla başlamalı." ifadesini kullanıyor. Makalesinde "The Imitation Game"e (Taklit Oyunu) yer veren Turing, bizlere "Turing Testi"ni anlatıyor.
Computing Machinery and Intelligence
İlgili makaleyi okumak için şu bağlantıyı ziyaret edebilirsiniz.
Turing bu makalesinde, dijital bilgisayarların çıkış noktası olarak insan bilgisayarların görevlerini yerini getirme amacına işaret ediyor. İnsan bilgisayarı ise; "belirli kuralları takip eden, hiçbir ayrıntıdan sapma yetkisi olmayan kişiler" olarak tanımlıyor.
"Computer" kelimesi, tam olarak buydu. "Hesaplama (compute) yapan kişi." Uzun soluklu hesaplama işlerinde kullanılan bir insan grubu düşünün. "Apollo" filmlerinde görmüştük benzer sahneleri. Hata yapma ihtimalleri olduğu için, aynı hesabı yapan birden fazla grup var. Hatta hesaplamalar, aynı grup içerisindeki kişiler arasında paylaştırılıyor ve sonuçlar bir araya getirilerek nihai sonuca ulaşılıyor.
Compute vs. Calculate
Cambridge Sözlüğü'nde calculate için şu tanım yer alıyor: "To count or estimate, using numbers". Sayıları kullanarak saymak veya tahmin etmek. Compute için ise, "to calculate or estimate" tanımı yer alıyor. Hesaplamak veya tahmin etmek. Aslında bu iki tanıma bakarak, "compute" kelimesinin daha geniş ve kapsamlı hesaplamaları tanımladığını, "calculate" kelimesinin ise daha basit ve manuel matematiksel işlemleri ifade ettiğini söyleyebiliriz.
Dijital Bilgisayarlar
Günümüzde ise hesaplama işleri bazı aygıtlara devredilmiş durumda. Bugünkü karşılığıyla bilgisayar için şöyle bir tanım yapabiliriz: "Birtakım aritmetiksel ve mantıksal işlemi yürüterek veriyi işleyen, saklayan, gösteren aygıt."
"Bilgisayar" kelimesini dilimize kim kazandırmıştır?
"Compute" kökünden gelen "computer" için muazzam bir öneri getiren ve "bilgisayar" kelimesini dilimize kazandıran kıymetli hocamız Prof. Dr. Aydın KÖKSAL'dır. Aydın Köksal, günümüzde kullandığımız pek çok Türkçe bilişim ifadesini dilimize kazandıran kişidir. Bilgisayarın Türkiye'deki serüvenini anlamak için Aydın Hoca'yı mutlaka okumalısınız.
Peki bu tanıma göre düşünecek olursak, "Evinizde kaç tane bilgisayar var?". 1? 3? 24? Sandığınızdan çok daha fazla olabilir. Örnekleyelim:
- Masaüstü bilgisayar, dizüstü bilgisayar, tablet bilgisayar dediğimiz şeyler zaten bilgisayar.
- Akıllı telefonunuz bir bilgisayar. Düşünsenize, ona da uygulamalar kuruyorsunuz. Birtakım verileri saklıyor, size bunları sunabiliyor.
- Peki akıllı olmayan telefonlar? En azından bir hesap makinesi, bir takvimi var. Hatırlatıcıları, alarmları var. Sesinizi alıp, dijitalleştirip, başka bir noktaya gönderebiliyor.
- SIM kartlarınızın her biri kendi başına bir bilgisayar.
- "Bilgisayar" olarak nitelendirdiğimiz makinelerin içinde birden fazla bilgisayar var. Grafik işlemciniz (GPU), merkezi işlemciniz (CPU), bunların çekirdekleri, Wi-Fi kartınız... Bu parçaların her biri de hesaplama yeteneğine sahip, veri işleyen cihazlar. Her birini ayrı bir bilgisayar olarak kabul edebiliriz/etmeliyiz.
- Çamaşır makinesi, bulaşık makinesi, buzdolabı gibi eşyalar? Belirli durumları takip edip ona göre karar vermiyorlar mı? Ne zaman ısıtacak, ne zaman soğutacak, kaç dereceye kadar ısıtıp soğutacak, ne kadar süre iş yapacak, hangi temizlik maddesini sürece ne zaman dâhil edecek? Bunlar önemli sorular ve bunların hepsine yanıt verebiliyorlar. Çoğunun üzerinde hazır programlar da geliyor. Hatta bu programları isteğinize göre düzenleme şansına da sahipsiniz.
Özetle, çok bilgisayar var.
Donanım ve Yazılım Kavramları
Bilgisayarlarımızı işlevsel hâle getiren iki temel bileşen: Donanımlar ve yazılımlar.
En kaba tabiriyle donanım; bilgisayarların elle tutulan, gözle görülen, somut, vurunca ses çıkaran, duvara fırlatınca kırılan parçalarıdır. CPU, GPU, RAM, HDD, monitör, klavye, hoparlör, fare... Bunların her biri, donanıma birer örnektir.
Yazılım ise, belirli kurallara göre yazılmış komutlar bütünüdür diyebiliriz. Önceden tanımlanmış bazı komutlar, yine önceden tanımlanmış bazı durumlara göre çalışır. Ofis yazılımları, takvim, hesap makinesi, e-posta istemcisi, web tarayıcısı, telefonunuzdaki herhangi bir uygulama, oyunlar... Bunların hepsi, yazılıma örnektir.
Neyi, Nasıl Programlayalım?
Düşünün. İnsanların yaptığı birtakım hesaplama işlerini, aygıtlara devredeceksiniz. Onlara yeni bir dünyayı öğretmelisiniz. Sayı sistemlerini, veriyi saklamayı, verileri ilişkilendirmeyi, girdi almayı, çıktı vermeyi... Hayli uğraştırıcı bir süreç. Velev ki öğrettik. Süper. Şimdi ne olacak?
"Yoda mimarisine sahip, Death Star anakartlarla uyumlu, Jedi RAM'lere sahip bir bilgisayarı" programladık. Ancak günümüzde, tek tip bilgisayarlar yok. Yüzlerce farklı model parçanın bir araya gelmesiyle oluşabilecek, oldukça geniş bir ihtimaller kümesi, kullandığımız bilgisayarları oluşturuyor.
Daha bariz bir örnek verelim. Mobil uygulamalar. Gerçekten piyasadaki tüm telefonlar için oturup tek tek bir uygulama yazmamız gerekirdi. Yoksa nasıl çalışabilirler ki? Neyse ki böyle bir derdimiz yok. Peki nasıl? Bu konuyu nasıl aşabildik?

