Akış diyagramları oluşturmak ne kadar önemli?

algoritma

#1

Program yazarken algoritmaları kafamda kuruyorum ve yazıyorum. Bilgisayar programcılığı okuduğum yıllar algoritma gösterilmedi, herşeyi kafamızda kurduk ve koda döktük. Aynı şekilde şuan Bilgisayar Mühendisliği okuyorum ve yazılım derslerinde hiçbir hocanın akış diyagramı çizdiğine şahit olmadım. 1. sınıf dersi olan algoritma ve programlama dersinden muaf olduğum için o derse girmedim, o derste gösterilmiş olabilir. Gerçi devlet üniversitelerindeki hocaları baz almak ne kadar doğrudur, tartışılır. İşin tuhaf yanı çevremde akış diyagramları kullanarak proje yapan birilerini de görmedim. Akış diyagramı oluşturmak bana fazladan yük gibi geliyor.
Fonksiyon, değişken, sınıf isimleri yeterince açıklayıcı oluyor. Karışık yerlerde de yorum satırları işi kurtarıyor.
Siz kullanıyor musunuz? Kullanmak ne kadar önemli, kullanmadan da büyük projeler yapılabilir mi?


#2

Açıkçası henüz büyük projelerde çalışmadım. Ancak, kapsamlı bir program yazacaksam önce oturur programın planını yapar, hangi aşamada neler yapacağımı hesaplar,sonra koda dökerim. Bunun bana en büyük katkısı, programı yazarken nerde neyi yapacağımı bilmemde yardımı olmasıdır. Yani programlarken bir aşamada tıkanırsam, tasarladığım algoritmaya bakar, sonra tekrar programı yazmaya koyulurum. Evet algoritması aklımda ama, öyle bir duruma girersiniz ki bazen, o anda ne yaptığınızı oturur bi düşünürsünüz :slight_smile: işte algoritma planınızı önceden tasarlamışsanız, açıp bakmanız yeterli

Akış diyagramları, Algoritma ve Programlama dilleri dersinde anlatılan bir konudur. Her ne kadar yorucu ve zaman kaybı olsa da, öğrenciye algoritma mantığını öğrenmesinde yardımcı olur. Öğrenciler genelde elle çizerler diyagramları, ancak bilgisayarda bu iş için kullanılan programlar var. Flowchart gibi.

Akış diyagramları çizilmeden büyük projeler yapılırmı bilmem ama, algoritma tasarlanmadan geliştirilen bir proje elbet bir yerde tıkanır.


#3

Bence akış diyagramı kodlamadan bir önceki adım. Ben akış diyagramıyla büyük bir proje yapılabileceğini sanmıyorum. Yapılsa bile gereksiz büyük bir uğraş olur. Mesela Blender 3D olsun, Unity 3D olsun, bu gibi programlar tasarlanırken akış diyagramı çizdiklerini düşünmüyorum. En ufak noktasına kadar algoritmasını yazmışlardır belki ama akış diyagramı dediğim gibi böyle programlar için bence zaman kaybından başka bir şey değil. Kullanıcının girdiği sayının negatif mi yoksa pozitif mi olduğunu kontrol etmek için bile en az 7 satırlık bir akış diyagramı çizmek gerekiyor.

Algoritma önemli bu arada. Kuralına uygun yazılmış bir algoritma olmasa da program yapılmadan önce kağıda bir taslağı dökülmeli bence.


#4

Akış diyagramı, algoritma, vb. her türlü olur. Küçük projelerde kafanızda, büyüklerde kağıtta, çevik (agile) takılıyorsanız zamana yayarak, diğer türlü baştan sona yazarak. Bunların hangisini seçeceğiniz, bahsettiğim gibi, yapacağınız projenin boyutuna ve hangi geliştirme sürecini seçtiğinize bağlı.

Aslında daha iyi bir yol önerebilirim. Algoritmanızı test olarak yazın. Daha sonra bu testleri gerçekleyen kodlar yazın. Böylece hem teste sahip olursunuz hem de algoritmanız olur. Son zamanların gözde geliştirme süreçlerinden TDD (Test Driven Development) tam olarak bunu önerir (Fazladan bir refactor adımı vardır.).