Monday 21 May 2007

Algoritma nedir ?

Bir kavramı incelerken algoritma gereği ilk önce kavramın anlamından, isminin nereden geldiğinden bahsetmek gerek diye düşünüyorum.Algoritma kelimesini incelerken de aynı yolu izleyeceğim.
Algoritma kelimesi , Ebu Abdullah Muhammed İbn Musa el Harezmi isimli Özbekistan'ın Horasan kentinde doğmuş ünlü Türk matematikçinin adından gelir. Bu alim 9. yüzyılda cebir alanindaki algoritmik çalışmalarını kitaba dökerek matematiğe çok büyük bir katkı sağlamıştır. "Hisab el-cebir ve el-mukabala (حساب الجبر و المقابلة)" kitabı dünyanın ilk cebir kitabı ve aynı zamanda ilk algoritma koleksiyonunu oluşturur. Batılılar, el Harezmi (Al-Khwārizmī) sözcüğünü telaffuz edemedikleri için terim bu şekilde kalmıştır.Bir Türk adının yaygın bir kavramın kökünü oluşturması da gerçekten gurur verici .

Algoritma deyince bizim zihnimizde asıl canlanması gereken şey ise algoritmanın her işin öncesinde yapılan muhasebe işi olduğudur.Matematik hesaplamalarından ayran yapmaya ,blog yazısı yazmadan tarla sürmeye kadar her alanda ve en önemlisi programlamada algoritmayı bazı zaman fark etmesekte kullanırız.Algoritma hayatımıza yerleşmiş durumda.
Her iş için alogritma kullanılır ama algoritma geneldir.Bir iş için de farklı algoritmalar olabilir.Bu algoritmaların karmaşıklığı birbirine eşit olabileceği gibi birisi daha verimli de olabilir.Mesela iş yerine yürüyerek de gidilebilir otobüslede.Fakat otobüsle gitmek daha az vakit alacağından daha verimli olur.Bu duruma bir çok örnek verilebilir.
Algoritmalar özel durumlar için çözüm sunamazlar.Genel durumlara yönelik algoritmalardan söz edilebilir.

Algoritma kullanacağımızı farkettikten sonra en önemli kısma gelinir : Hangi algoritmayı kullanabilirim?Ram i etkili kullanmak,kodun kısa ve anlaşılır olması gibi üzerinde durulması gereken noktaları düşünerek bir seçim yapma zamanı gelmiştir.Her algoritmanın bir karmaşıklığı(complexity) vardır.Ve bu karmaşıklıklar algoritmaların en kötü ihtimalleri(worst case) göz önünde bulundurularak hesaplanır.(Bir de en iyi ihtimal dediğimiz best case vardırki bunun complexity si en iyi ihtimaller göz önüne alınarak hesaplanır.)
Mesela search algoritmalarını ele alalım.Binary search algoritmasının karmaşıklığı log n, linear search algoritmasınınki ise n dir.Eğer bizim arama yapacağımız dizi sıralı ise binary search kullanmamız daha verimli olur(log n '<' n).Bunun gibi diğer problemlerde de çeşitli algoritmalar kullanılabilir(Bfs, A* (star)). Programımızın uzunluğu-kısalığı,verimliliği algoritmaya bağlıdırAlgoritmayı (düzgün) oluşturarak kodun uzunluğunu dörtte birine indirebiliriz.Programı yazmadan önce çözümü kafamızda oluşturup ön algoritmayı oluştururuz.Bu oluşumun kağıda dökülmesi ile algoritma tamamlanmış olur.Artık hangi dili biliyorsanız yada hangi dille yazmanız isteniyorsa o dille kodunuzu da yazarsınız.Ve artık program bitmiştir. Algoritma oluştururken kolaylık için Akış Diyagramı ile işlem basamaklarını şekillerle gösterebilirsiniz.Akış Diyagramı ile ilgili ayrıntılı bilgiye de buradan ulaşabilirsiniz.

Program yazarken meselenin “ yazmak” olmayıp “etkili/verimli yazmak” olduğunu program yazmadan önce hatırlayıp, düzgün, anlaşılır algoritma ile görenlerin ağzı açık kalacak şekilde ürünü ortaya koyabilmek iyi bir yazılımcı olabilmek için ödenmesi gereken bedeldir.

Kaynakça
http://www.godoro.com
http://tr.wikipedia.org/
http://www.eksisozluk.com/
http://www.yazilimgrubu.com
http://akademik.bahcesehir.edu.tr/cse2106/lecture_notes/week9.pdf

Tuesday 1 May 2007

Microsoft’tan Silverlight Atağı

Microsoft Nisan ayının ortalarında WPF/E teknolojisinin adını Silverlight olarak değiştirdiğini duyurdu.Peki Silverlight nedir ?Efendim Silverlight Microsoft’un bu zamana kadar WPF(Windows Presentation Foundation) olarak duyurduğu tasarım programının yeni versiyonudur.WPF nedir diye soracak olursanız da şu video bu sorunuzun cevabı olur diye düşünüyorum.

Gelişmiş ASP .NET uygulamaları olarak da adlandırılan Silverlight, 2 MB civarında dosya büyüklüğüne sahip bir eklenti olarak Internet Explorer, Firefox ve Mac'in Safari'sinde kullanılabilecek.Linux için ise herhalde “Otursunlar yazsınlar arkadaş!” diyerek herhangibir eklenti duyurulmadı.Önceleri açık kaynak kodu desteklediğini belirten Microsoft görünen o ki desteğini azaltmış.

Microsoft ‘un .NET Framework 3.0 ile yayınladığı bu yeni kütüphane sayesinde görselliği iyice artırılmış uygulamalar geliştirmek artık mümkün.Görsellikte WPF , .NET Framework 3.0 gerektirirken light versiyonu olan Silverlight (WPF/E)gerektirmiyor bu sayede tüm platformlarda (cross- platform) çalışabildiği iddia ediliyor.Şuradan Silverlight ile ilgili çeşitli videolara;röportajlara ulaşabilirsiniz.

Microsoft’un bu alanda ilerleme kaydetmesi Macromedia’yı renklerine bağlayan Adobe’yi de kızdırmış olsa gerek.Adobe en son CS3 serisini duyurmuştu.Ve cross platformda da bildiğim kadarıyla APOLLO yu duyurdu.

Microsoft’un el atmayı geciktirdiği görsellikte Silverlight ile rekabetin artacağını düşünüyorum.Öte yandan Google’ın saltanat sürdüğü,Ms’in ise yine etkili olamadığı webde, 2007 yılı içerisinde Ms’den bir atak sözkonusu olabilir.