1 Haziran 2009 Pazartesi

Algoritmanın Önemi

Geçen yazıda algoritmanın bir programcı için ne kadar önemli olduğunu anlatmaya çalıştım. Hatta şöyle bir örnek vermiştim “Elindeki dünyanın en iyi silahı bile olsa nasıl kullanman gerektiğini bilmezsen düşman karşısında pek bir şansın yoktur.” Fakat şimdi görüyorum ki aslında bu benzetme algoritmanın tam karşılığını vermiyor. Şöyleki ; düşmanı alt etmek için uygulanması gereken taktiğe (izlenecek yola) algoritma dedik fakat düşmanı alt etmenin birden fazla yolu olabilir. Önemli olan bu yollardan en az araç gerektiren, en hızlı kısacası her bakımdan en iyisini bulmaktır. Bunu bir programcıya yorumlarsak ; Araç yani Donanım İhtiyacı, Hızlı yani İşlem süresi, Her Bakımdan en iyisi yani Minimum Araç Gereksinimi,Minimum İşlem süresi, Minimum MALİYET ve İŞ GÜCÜ(Şimdi biraz daha iyi oldu sanırım :)) Şimdilik bu son iki etken o kadar önem arz etmesede ilerde bunun önemini daha iyi anlaşılacaktır ancak dediğimiz gibi önemli olan sadece çözüme gidecek yolu bulmak değildir,önemli olan çözüme gidecek en etkin yolu bulmaktır.

Peki genel olarak iyi bir algoritmanın özellikleri nelerdir?

•Sonluluk : Programın muhakkak bir sonu olmalı(işletim sistemleri vs istisnadır.)
•Açıklık : Algoritmayı okuyan her kişi için aynı şeyi ifade etmeli, belirsizliğe yer vermemeli.
•Etkinlik : Genel Amaçlı olmalı, diğer algoritmalar içinde kullanılabilmeli.
•Kesinlik : Girilen Aynı değerler için her defasında aynı sonucu vermeli.

Benim algoritma konusunda söyleyeceklerim bunlar fakat daha fazla bilgi için saygıder hocam Rifat Çölkesen’nin “Programalama Sanatı ve Algoritma(yeni başlayanlar için)” veya “Algoritma Geliştirme ve Veri Yapıları(Daha ileri seviye için)” kitabı tavsiye ederim.

Bundan sonraki yazılar Programlama hakkında nacizane bilgilerimi paylaşmaya çalışacam. Sakın kimsenin aklında şu şekilde birşey oluşmasın"sen kimsin ki kime ne öğretiyorsun." Benim amacım tamamen kendimi gelişmek yoksa kimseye bişey öğretmek gibi bi amacım yok.

Bir sonraki yazıda Görüşmek üzere...