Algoritma sözcüğünü günümüzde her zamankinden daha fazla duymaya başladık. Ancak algoritma dendiği zaman halen bir çoğumuzun aklına yapay zeka, bilgisayarlar ve bunun gibi şeyler geliyor. Oysa ki kek pişirmek istediğiniz zamanlarda da aslında algoritmaları kullanırsınız. Bu yazıda kısaca algoritmaların büyüleyici tarihini keşfedelim. Sonra da günlük hayatta karşımıza çıkan algoritmalar hakkında biraz bilgi öğrenelim. Hazırsanız başlayalım…
Algoritmaların Kökeni Nedir?
Algoritma kelimesi 9. yüzyılda yaşamış matematikçi el Harezmi’nin adından gelmektedir. El Harezmi, Abbasi Döneminin tanınmış matematik, coğrafya ve astronomi uzmanıdır. Onun sayesinde Avrupalı bilginler kullanılmakta oldukları Romen rakamları ile aritmetik yapmanın zorluğunu fark etmiştir. Harezmi onlara aritmetik hesaplamalar yapmanın daha kolay bir yolu olduğunu göstermiştir.
M.S. 825 yıllarında Harezmi “Kitab el cebr ve’l mukabele” başlıklı bir kitap yazmıştı. Bu kitap Latince’ye “Algoritmi de Numero Indorum” adıyla çevrildi. El-Harezmi adı, Avrupa’da “Algorizm” olarak bilindiği için “algoritma” terimi onun adından ortaya çıktı. Kelime ilk olarak 1230 yılında kullanıldı. Ancak “algoritma” bugünkü anlamını ancak 19. yüzyılın sonlarında aldı.
Aslında algoritmalar el Harezmi’nin kitabından çok önce de bilinmekteydiler. Tarihsel kayıtlara ve arkeolojik bulgulara göre, ilk algoritmalar Babiller tarafından MÖ 1600 civarında oluşturuldu. Kil tabletlere çivi yazısı biçiminde kaydedilen bu algoritmalar çarpanlara ayırma ve karekök bulma gibi amaçlarla kullanılmıştı.
Sonrasında Öklid, MÖ 300 civarında “Öklid algoritması” nı ortaya çıkardı. MÖ 200 yılında “Eratosthenes Eleği” ile Eratosthenes onu izledi. Doğrusal denklem sistemlerini çözmek için kullanılan Gauss eliminasyonu, MS 263’te Lui Hui tarafından tanımlandı. Brahmagupta, MS 628’de Chakravala metodunu geliştirdi.
Modern Zamanda Algoritmalar
Sonraki yüzyıllar boyunca, İslam dünyası bilgileri eski Yunan, Hint ve Çin eserleri üzerine inşa edildi. Modern algoritmanın ortaya çıkışı ise sanayi devrimi sırasında gerçekleşti. Öncelikle George Boole, modern bilgisayar kodunun temeli olan ikili sistemi ortaya attı.
Ada Lovelace, 1840’larda ilk “bilgisayar programını” üretti. Filozof ve mantıkçı Friedrich Ludwig Gottlob Frege nicel ifadelerin bir analizi için biçimsel bir sistem inşa etti. Alan Turing, algoritma konseptini ilk kez 1936’da meşhur Turing makinesiyle resmileştirdi. Bundan sonra da dünya bir daha asla eskisi gibi olmadı. ( Detaylar için: Turing Makinesi Nedir? Bu Makinenin Durma Sorunu Neden Çözülemez?)
Bir Algoritmanın Temel Özellikleri Nelerdir?
Günümüzde insanlar algoritma dediklerinde, neredeyse her zaman bir bilgisayarın çalıştıracağı bir şeyi kastederler. Aslında durumun böyle olması gerekmez. Bir algoritma, esasen, belirli bir görevi çözmek için kullanılan bir dizi adımdır.
Dışarı çıkmadan önce pencereden dışarı bakarsınız. Yağmur yağıyorsa şemsiyenizi alırsınız. Yağmıyorsa da almazsınız. Bu süreç de aslında bir algoritmadır. Bu nedenle algoritmaları bir sorunu çözmek için adım adım kılavuz olarak düşünmek gerekir.
Bir algoritmanın gerçekten geçerli sayılması için bazı özelliklere sahip olması gerekir. Bir algoritmanın tüm adımları açık ve net bir şekilde tanımlanmalıdır. Sorunu çözebilecek nitelikte olmalıdır ve belirli bir noktada sonlanmalıdır. Aşağıda bir algoritma örneği görebilirsiniz.
Algoritmalar Günlük Hayatta Nasıl Karşımıza Çıkar?
Gördüğünüz gibi, algoritmalar modern günlük yaşamın vazgeçilmez parçalarıdır. Ancak algoritma denilince aklınıza sadece bilgisayarlar gelmesin. Örneğin, okumakta olduğunuz bu satırlardaki verileri belirli bir sırayla birbiri ardına ekliyor olmamız da bir algoritma örneği.
“Sabah kalk, banyoya git, yüzünü yıka, saçını düzelt, kahveni iç ve evden çık” gibi günlük sabah rutinimiz de aslında bir algoritmadır. Bir sorunu çözmeye yöneliktir ( işe ya da okula gitmek), sorunu çözmek mümkündür ( uyku sersemliği, güne hazırlanmak) ve sonludur. (Kapıyı kapamak). Bu örnek yeterli gelmedi ise günlük hayatta kullanılan bazı algoritma örneklerini daha verelim.
Her Türlü Tarif Aslında Bir Algoritmadır
Aslında farkında olmasınız da yemek tarifleri, yol tarifleri kısacası adım adım bir şeyin nasıl yapıldığını detaylı anlattığımız her şey özünde birer algoritmadır. Eğer tarifler doğru yapılmışsa ve söylenen adımlar doğru biçimde uygulanırsa başarısızlık olasılığı düşüktür.
Diyelim ki kek pişirmek istiyorsunuz. Elinizdeki tarif, hangi malzemelere ihtiyaç duyacağınızı, bu malzemeleri hangi sırayla ve nasıl kullanacağınızı, fırını kaç derece sıcaklıkta sabitlemeniz gerektiğini, kaç dakika pişireceğinizi size söyler. Kek pişince de sona erer.
Arama Motorları
Eğer bir tarifi ezbere bilmiyorsanız, o zaman “Google” sizin için buna cevap verir. Ama bu nasıl yapar? Elbette tahmin ettiğiniz gibi algoritmalar aracılığıyla. Arama motoru indeksleme, sayfa sıralaması vb. gibi algoritmalar isteğinizi ayrıştırmak ve bir öneri listesi oluşturmak için çalışır. Bugün bu tür bir hizmeti normal kabul etmemize rağmen, perde arkasında gerçekleşen işlemler aslında oldukça karmaşıktır.
Paylaşma Zamanı
Diyelim ki ne pişirmek istediğinize karar verdiniz, tarifi buldunuz, uyguladınız. Şimdi sırada elbette yemeğinizi yemek var. Ancak kimileri yemek yerken kimileri de bir fotoğraf çekip bunu dünyayla paylaşmak ister.
Fotoğraf çekme, internete yükleme ve paylaşma eylemi, akıllı algoritmalar sayesinde mümkün olur. Görünüşte basit olan bu görevin her aşaması, her adımı her seferinde mükemmel bir şekilde tamamlamak için binlerce kod satırının olmasını gerektirir.
Günlük Hayatta Algoritmalar Biz Fark Etmeden Görev Başındadır
Aritmetik gibi temel matematik bile bir algoritma biçimidir. İki sayıyı bir araya getirdiğinizde, örneğin çarptığınızda sonuca ulaşmak için bazı temel prosedürleri de izlersiniz. Aynı şey, bir dükkanda nakit para ile bir şey satın alırken, bir pizza keserken, arkadaşlarınız arasında bir paket şeker paylaşırken veya restoranda faturanın kendi payınızı hesaplarken de geçerlidir. Tüm bu eylemler, onları mümkün kılmak için çok temel algoritmalar kullanır.
Bütün Bilgisayar Programları Belli Bir Algoritma Kullanır
Bir e-posta gönderdiğinizde, bir belge yazdığınızda, bir elektronik tabloya veri girdiğinizde arka planda algoritmalar çalışır. Algoritmalar bu programların temel işlem kodunu oluştururken, bazılarını kendiniz yazarsınız.
Örneğin elektronik tabloları ele alalım. SUM () işlevini düşünün. Verilerinizi toplamak için bunu her yaptığınızda, kelimenin tam anlamıyla bir algoritma kullanırsınız. Modern dünyada algoritmaların başka birçok kullanımı vardır ve bunların hepsinin üzerinden geçmek bir yazıda mümkün değildir. Ancak, muhtemelen her gün kullandığınız bazı kritik öneme sahip algoritmaları siz de düşünerek bulabilirsiniz.
Kaynaklar ve ileri okumalar:
- The Origin of Algorithms We Use Every Single Day; Yayınlanma tarihi: 5 Eylül 2020; Bağlantı: https://interestingengineering.com/
- What are algorithms, and why we’d best get used to them. Yayınlanma tarihi: 7 Nisan 2021; Bağlantı: https://www.zmescience.com/
Matematiksel
Emeğinize sağlık yazınız güzel. Fakat önyargıda bulunmadan bir noktaya değinmek istedim sadece. Çok sonraları bir algoritma modeli geliştirmiş olan Anatoly Karatsuba’nın dahi adı geçiyor fakat bugünkü algoritmanın kurucusu ve kelimeye adını veren değerli matematikçi Harezmi’nin adı yazınızda geçmiyor. Yazık… Bunun adı önyargı mıdır, eğitim sistemimizdeki manipülatif ve sansürcü motifler midir yoksa başka bir şey midir bilmiyorum. Fakat ben bunu sadece yazmayı unuttuğunuzu düşünerek hüsn-ü zanda bulunmayı tercih ediyorum. Tekrar elinize sağlık…
süpermiş bu site sevdim artık bir fanınız var