Günlük Hayatta Problem Çözme
Günlük hayatımızda problemlerimizi çözmek için yaşantımızı etkileyen pek çok karar veririz. Bu kararlar yalnızca yaşantımızı etkilemekle kalmaz, bazen yaşam kalitemizi ve geleceğimizi bile etkileyebilir.
Örneğin karşılaştığımız problemler, televizyonda hangi kanalı seyretsem gibi basit de olabilir, hangi mesleği seçmeliyim gibi çok önemli de olabilir.
Yanlış bir karar verilirse zaman ve kaynaklar boşa gidebilir, bu nedenle nasıl doğru karar verildiğini öğrenmek önemlidir. En iyi kararı vermek aslında problem çözmektir. İnsan hayatı aslında bir problem çözme sürecidir. Genellikle bir problemin birden fazla çözümü vardır, her bir çözüm bir alternatif olarak düşünülebilir.
Programlama ile Problem Çözme
Problem çözme, amaca ulaşabilmek için alternatifler arasından en uygun yolu belirlemektir. Alternatifler, farklı koşul ve beklentilere göre şekillenir. En uygun çözüm ise farklı koşul ve durumlar için değişiklik gösterebilir. Bu nedenle farklı kişiler ve problemler için çözüm önerileri de farklılık gösterebilir.
Problemler çözülmeye çalışılırken dikkate alınması gereken sınırlılıklar ve koşullar ile uyulması gereken kurallar vardır. Tüm bu veriler dikkate alınmaz ise doğru çözüme ulaşılamaz ya da problem geçici olarak göz ardı edilmiş olabilir.
Bir problemi yazılım geliştirerek çözerken de çeşitli sınırlılıklar vardır: kullandığınız programlama dili, çalıştığınız ortam (kişisel bilgisayar, tablet vb.) ve performans (kullandığınız işlemci, hafıza, disk vb.). Bu nedenle programcılar için problem çözme, “bir dizi işlemi, belirtilen sınırlılıklara uygun biçimde gerçekleştirebilen programın yazılması” anlamına gelir.
Programlamaya yeni başlayanlar işlemleri gerçekleştirip hedefe ulaşma konusunda daha fazla istekli olduklarından genellikle belirtilen sınırlılıklara uyma konusunda zorluk yaşayabilirler. Bu nedenle böyle programlar, istenilen işlemleri yalnızca “belli şartlarda (sadece 2 basamaklı sayılar için, tek bir döngü için vb.)” yerine getirebilen programlara dönüşebilir. Bu nedenle bu tür uygulama hatalarından kaçınarak tüm detayları dikkatli bir şekilde işe koşarak programlama yapmamız son derece önemlidir.
Bilgisayarlar ile Problem Çözme
Burada “çözüm” demek problem çözme sürecinin 5. adımında yer alan işlem adımları ya da yönergeler anlamına gelmektedir. “Sonuç” demek, çıktı ya da tamamlanmış bilgisayar destekli yanıt demektir. “Program” ise herhangi bir bilgisayar dilinde kodlanmış, çözümü oluşturan işlem adımlarının tamamını ifade etmektedir.
Bilgisayarlar, zor ve zaman alıcı olabilen algoritmik çözümler ile ilgilenmek üzere tasarlanmıştır. İnsanlar, keşifsel çözümleri bulma konusunda daha iyidirler ancak bilgisayarların çözebildiği ileri düzey hesaplama ve karmaşık problemleri çözme konusunda bilgisayarların hızlarına ulaşamazlar.
Bilgisayarlar, üst düzey matematik problemlerini kolayca çözebilir ancak konuşmak ya da top atmak gibi davranışları yapamaz. Bu işlemlerin zorluğu programlama sürecindedir. Bu tür işlemleri bilgisayarların anlayacağı bir dizi adım şekline nasıl dönüştürebiliriz?
Keşifsel problem türleri ile ilgilenen bilgisayar dalına “yapay zekâ” adı verilmektedir. Yapay zekâ uygulamaları, bilgisayarlara mevcut bilgileri kullanarak yeni bilgiler inşa etmesini sağlamaktadır. Böylece bilgisayarın problem çözme becerileri insanların yeteneklerine daha çok benzemektedir.
Yapay zekâ özellikle robotik uygulamaları ile son yıllarda popüler bir çalışma alanı olmuştur. Bilgisayarlar insanlar gibi düşünmeye başlayana kadar daha çok algoritmik problemlerin çözüm süreçlerinde kullanılacaktır.