Giriş: Mühendislik Olmasa Bilgisayar Bilimi Felsefe Olur Muydu?
Muhtemelen… Çünkü neden olmasın? Algoritma kavramı bilgisayar adını verdiğimiz makinenin icadından yaklaşık bin sene öncesine dayanıyor ve hesaplama problemleri yüzlerce yıldır matematikçilerin kafasını kurcalıyor. Burada biraz tanım ve etimolojiye girmeliyiz. Dilimize bilgisayar olarak çevrilen kelimenin orijinali “computer” hesaplayıcı anlamına geliyor. Computer science (CS) yani bilgisayar bilimi dediğimiz alan da aslında hesaplama bilimi… Bu dal hesaplama problemlerini minimum işlemde çözme arayışı üzerine kurulu. Bu yüzden (ülkemizde bürokratik sebeplerle pek dikkat edilmese de) bilgisayar ve yazılım mühendisliklerinden ayrı değerlendirilmesi gerekiyor.
Bilgisayar bilimi için matematiğin uygulamaya dökülmüş hali demek yanlış olmaz. Kısaca CS bilgisayar dediğimiz araca bağımlı olmadığı gibi zaten bu araç da CS’nin arayışının bir sonucu olarak ortaya çıkmıştır. Peki fizik matematikle buluşmasaydı, belki de Alan Turing gibi dehalar yeryüzüne gelmeseydi ve bilgisayarlar icat edilmeseydi yine de CS olur muydu? Evet olurdu, hatta çok daha eğlenceli olabilirdi. Felsefe gibi uygulama alanı olmayan bir disiplin olabilirdi, belki beyaz togamız ve şıpıdık terliklerimizle zeytin ağaçlarının altında yürürken algoritma tartışırdık ama bilgisayar bilimi yaşardı.
Bahsettiğim şeyi kafanızda canlandırmakta zorlanıyorsanız güncel bilimkurgu romanlarından Üç Cisim Problemi’ni okumanızı öneririm. Sizi bilimin pek çok dalından pek çok soruyla tanıştıracak bu eser bir bölümde üzerinde kafa yorduğumuz konuya da değiniyor ve bilgisayarsız bilgisayar bilimi geliştiren bir Çin uygarlığı tasviri sunuyor. Artık bu makineyle CS’yi birbirinden ayırdığımıza göre girizgahı daha fazla uzatmayalım ve abaküslere uzanacak yolculuğumuzda geriye doğru ilk adımımızı atalım.
Gelişme: Algoritma + Graf = Automata
Algoritma, bir işin nasıl yapılacağıdır. Belirli adımlara bölebileceğiniz her eylemin bir algoritması vardır. Örneğin muayenehanelerde şema halinde acil durum algoritması asılıdır. Mantıksal yönlendirmeler ve döngülerle en az işlemde hastanın problemini belirlemeye yarar. Yazılımcılığın temeli algoritmadır. Algoritmayı bilgisayarın anlayacağı dile çevirmek ikinci plandadır.
Graf için bilgisayar biliminin matematikteki yansıması diyebiliriz. “Node” denilen birimler ve nodeları bağlayan “kenar” denilen çizgilerden oluşan graflar çok önemlidir. Kendi içlerinde pek çok matematiksel problemi barındırırlar. Bunlara en güzel örnek matematikçilerin yüzlerce yıl kafa yorduğu nodelar arasındaki en kısa yolu bulma problemidir. Son yüzyılda bu problemin en basit versiyonu olan iki node arasındaki yolu bulma sorusu için o kadar güzel algoritmalar geliştirilmiştir ki bir çocuk bile bunları kodlayabilir. Problemin daha kompleks versiyonları ise hala bilgisayarcıların aklını kurcalamaktadır. Nodelara isim veya değer vererek, kenarlara uzunluk (ağırlık) atayarak oldukça karışık yapılar graf ile gösterilebilir. İşlerin konudan uzak birisi için karışmış olabileceğini farkındayım. Koptuysanız çok önemli değil, hikayemizin devamı için graf ve algoritmanın ne olduğunu kabaca anlamanız yeterli. Örnek resimlere bir göz atın ve okumaya devam edin.
Automata mantıksal koşul ifadeleri ve döngülerle oluşturulmuş bir algoritmanın, nodelara adımlar kenarlara da koşullar yazılarak grafa uyarlanmasıyla elde edilen düşünsel bir makinedir. Automata için hayali bir bilgisayar diyebiliriz. Teorik olarak bir bilgisayarın yaptığı her şeyi yapabilir ama algoritmayı takip eden kişinin hızına bağlı olarak karmaşık işlemleri yapması çok uzun sürebilir. Automata bilgisayarın icadından yüzlerce yıl önce ortaya atılmıştır. O evrimin abaküs ve elektronik bilgisayar arasındaki halkasıdır.
Sonuç: Taşlar, Kuyular ve Bilgisayarlar…
Hesaplama problemi çok eskiye dayanır. Bilgisayarın yolculuğunu insanlığın başlangıcına kadar götürebiliriz. Vahşi doğadaki atalarımızın en öncelikli sorunu olmasa da önemli problemlerinden biridir hesaplama. İlkel adamın av etini paylaşmasından ticarete uzanmış her defasında yeni çözümlerle geçiştirilmiştir. İnsan önce çetele tutmuş, sayı çubuklarından faydalanmıştır. Abaküsü icat etmesiyle çarpma, bölme gibi daha karışık operatörleri kullanabilir olmuştur. Küçük kuyulara taş atmaya dayanan yöntem daha algoritmik hesaplamalara olanak sağlamış ve tüm dünya kültürlerinde farklı şekilde ortaya çıkan nim oyununa köken olmuştur. Zaten teoriye göre tüm sıfır toplamlı oyun problemleri nim oyununa çevrilebilir. Bu oyunun kültürümüzdeki versiyonu olan mangala zekaya dayalı çok eğlenceli bir oyundur. Ayrıca algoritmik düşünme becerisinin gelişmesine müthiş katkı sağlar. Oynamanızı tavsiye ederim.
Matematikçilerin konuya eğilmesi automatayı ve “gezgin satıcı problemi” gibi ilk hesaplama problemlerini doğurur. Matematik ve fizik bilgisinin gelişimiyle İkinci Dünya Savaşı sırasında elektronik abaküs ve şifre kırıcıları (bombe) olarak görülen bilgisayarlar doğar. Modern bilgisayar biliminin kurucusu Alan Turing, Turing makinesini tanımlayarak söz konusu aletlerin elektronik automata haline gelmesini sağlar. Bilgisayar, her türlü algoritmayı derleyebilecek düzeye ve herkesin program yazabileceği kullanışlılığa ulaşır. Böylece herkesin kodlama öğrenmek zorunda olduğu çağımız başlar. Geleceğin ne getireceğini, abaküsün evrimindeki sonraki basamağın ne olduğunu kim bilebilir?