Algoritmik düşünme, yazılım öğrenen herkesin mutlaka geliştirmesi gereken temel bir beceridir. Birçok kişi programlamaya başlarken doğrudan kod yazmaya odaklanır. Oysa gerçek yazılım mantığı kod yazmaktan çok problemi doğru şekilde çözebilmekle ilgilidir.
Bu nedenle şu noktayı net şekilde anlamak gerekir:
Algoritma kod değildir.
Kod yalnızca algoritmanın bilgisayar diline çevrilmiş hâlidir.
Yani önce problemi çözme yöntemi ortaya çıkar, ardından bu çözüm bir programlama dili kullanılarak yazılır. Bu yüzden birçok yazılım geliştirici programlama öğrenmeye çalışanlara şu tavsiyeyi verir:
“Bilgisayara ne yazacağınızı değil, bilgisayara ne yaptıracağınızı düşünün.”
Algoritmik düşünme tam olarak bu bakış açısını ifade eder.
Algoritmik Düşünme Ne Demek?
Algoritmik düşünme, bir problemi belirli kurallar ve adımlar kullanarak çözme yöntemidir. Bu yaklaşımda amaç, karmaşık bir problemi küçük ve yönetilebilir parçalara ayırmaktır.
Algoritmik düşünme şu özelliklere sahiptir:
-
problemi adım adım çözmek
-
başlangıç ve bitiş noktalarını belirlemek
-
her adımı net kurallarla tanımlamak
-
hata durumlarını hesaba katmak
Bilgisayarlar karmaşık düşünemez. Onlar yalnızca verilen komutları uygular. Bu nedenle yazılım geliştirirken yapılması gereken şey problemi mümkün olduğunca açık ve düzenli şekilde tanımlamaktır.
Günlük Hayatta Algoritma Örnekleri
Algoritmik düşünme yalnızca bilgisayar biliminde kullanılmaz. Aslında günlük hayatımızda fark etmeden birçok algoritma kullanırız.
Örneğin çay demlemek basit bir algoritmadır.
-
Su koy
-
Ocağı aç
-
Su kaynasın
-
Çayı ekle
-
Bir süre bekle
-
Servis et
Bu adımlardan biri eksik olursa sonuç değişir. Örneğin su kaynamadan çay eklenirse doğru sonuç elde edilemez.
Bilgisayar programları da tam olarak bu mantıkla çalışır. Eksik ya da yanlış bir adım programın çalışmamasına neden olabilir.
Kod Yazmadan Önce Algoritma Kurmak
Algoritmik düşünme yazılım geliştirme sürecinin en önemli aşamalarından biridir. Deneyimli yazılımcılar genellikle doğrudan kod yazmaya başlamaz. Önce problemi analiz eder ve çözüm adımlarını planlar.
Kod yazmadan önce şu soruların cevaplanması gerekir:
-
Programın başlangıç noktası nedir?
-
Program hangi işlemleri yapacak?
-
Programın bitiş noktası nedir?
-
Hata oluşursa ne yapılacak?
Bu soruların cevapları belirlenmeden yazılan kodlar genellikle karmaşık ve hataya açık olur.
Yeni Başlayanların En Büyük Hatası
Yazılım öğrenmeye yeni başlayan kişilerin en sık yaptığı hata, doğrudan kod yazmaya çalışmaktır. Çoğu kişi “Bir şeyler yazayım, belki çalışır” yaklaşımıyla ilerler.
Bu yaklaşım genellikle şu sonuçları doğurur:
-
karmaşık ve okunması zor kod
-
sürekli ortaya çıkan hatalar
-
programın nasıl çalıştığını anlamama
Oysa problem programlama dili değildir. Asıl eksik olan şey algoritmik düşünmedir.
Algoritmik düşünme geliştiğinde kişi farklı programlama dillerine çok daha kolay uyum sağlayabilir.
Algoritmik Düşünmenin Sağladığı Avantajlar
Algoritmik düşünme becerisi geliştirildiğinde yazılım geliştirme süreci çok daha verimli hale gelir.
Bu yaklaşımın sağladığı başlıca avantajlar şunlardır:
-
daha az kod yazmak
-
daha düzenli bir program yapısı kurmak
-
hataları daha hızlı bulmak
-
yazılımı daha kolay geliştirmek
Programlama dilleri ve teknolojiler zamanla değişebilir. Ancak algoritma mantığı değişmez.
Yapay Zeka Çağında Algoritmik Düşünme
Günümüzde yapay zekâ araçlarının yaygınlaşmasıyla birlikte bazı kişiler algoritma öğrenmenin gereksiz olduğunu düşünmektedir. Ancak bu doğru değildir.
Yapay zekâ araçları bile aslında belirli algoritmaların üzerinde çalışır. Yapay zekâya hangi verinin verileceği, hangi işlemin yapılacağı ve sonucun nasıl değerlendirileceği yine insanlar tarafından belirlenir.
Bu nedenle algoritmik düşünme, yapay zekâ çağında bile yazılım geliştirmenin temel taşlarından biri olmaya devam etmektedir.
Yapay zekâ sistemlerinin nasıl çalıştığı hakkında daha fazla bilgiye MIT’nin bilgisayar bilimi kaynaklarından ulaşabilirsiniz:
https://ocw.mit.edu
Algoritma Çizmek Gerekli mi?
Algoritmik düşünme geliştirmek için mutlaka karmaşık araçlar kullanmak gerekmez. Basit yöntemler çoğu zaman yeterlidir.
Bir problemi çözmeden önce şu yöntemler oldukça faydalıdır:
-
kağıda adım adım yazmak
-
akış diyagramı çizmek
-
problemi küçük parçalara bölmek
Bu yöntemler zihni organize eder ve çözüm sürecini hızlandırır.
Bu yazıya tepkin nedir?
10 yıldır yazılım geliştirme ve teknolojiye tutkuyla bağlı biriyim. C, C# ve Python gibi programlama dilleriyle projeler geliştiriyor, yeni teknolojileri öğrenmeye devam ediyorum. MayKairos Dijital Mimari olarak web projelerinin tasarım ve geliştirme süreçlerini yönetiyor, aynı zamanda bir şirkette veri tabanı uzmanı olarak veri yönetimi ve analiz konularında profesyonel deneyimimi sürdürüyorum.
YAZAR PROFİLİNİ GÖR