C de neden "goto komutunu kullanmayın" diyorlar ? Ve yazılımcılık tavsiyeleriniz

Başlatan RaMu, 17 Mayıs 2013, 23:33:16

Tesla.25

En büyük sebebi programın okunmasını ve yazmasını zorlaştırmasıdır. Diğer sebepler sonra gelir. (Çünkü bir kaç yerde kullanılması daha verimli)
Bunu iyi bir şekilde anlamak için klasik Basic dili ile o satırdan bu satıra atlayan programlar yazın anlarsınız. Hatta internetten klasik Basic programları bulun kodu okumaya çalışın.

RaMu

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html


RaMu

Evet ama dün hortlatan arkadaşın ilk mesajıymış,
çok istemiş demek ki,
onun şerefine konunun ruhunu çağırdık :)
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

CoşkuN

Şu konuya "yazılım kalitesi" diye bir başlık açıp oradan devam etsek. Sanki tek önemli şey goto kullanmak ya da kullanmamak gibi bir hava oluşuyor.

peko

Alıntı Yap"yazılım kalitesi"

En iyi Algoritma +
En çok iş +
En az satır +
En yüksek paralel çalışma güvenliği +

=Kalite.
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

vsalma

Alıntı yapılan: peko - 19 Ekim 2015, 14:03:25
En iyi Algoritma +
En çok iş +
En az satır +
En yüksek paralel çalışma güvenliği +

=Kalite.


En cok is ve en az satir, okunabilirlik dolayisiylada bakim kolayligi(surdurulebilirlik, maintainability), dusuk karmasiklik gibi kalite faktorleriyle celisebilir.   

peko

" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

sinus


mekanik sistemler, çok az bir hata payı ile üretilmek zorundadır.
fazladan bir dişli, mil, vida koymak mümkün değildir. profesyonel yazılımlarda böyle midir?

her profesyonel yazılım tıkır tıkır işler mi? bir yerde fazladan kontrol, karşılaştırma, gecikme vs. kullanılmıştır sanırım.


muhittin_kaplan

basla:
  print "profesyonel != çok iyi program"
  print "profesyonel = para kazanılan program."
goto Basla

z

İçinde tek bir Goto komutu geçmeyen C programınızı verin Goto'lu hale getireyim.

Sonra derleyip exesini vereyim. Hangisi Goto'lu hangisi Gotosuz anlayın.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

GOTO komutunu kullanmak yasak değil 4 satır kod yazdınız 2. satırdan 4. satıda goto ile atlamanız bişey değişitirmez. ANCAK bu komut fonksiyon geçişlerini ve özellikle C++ da çok kullanılan class yapısını baltalar. Bir fonksiyon çağırdığınızda çağırmış mı olursunuz çağırmamış mı? pointer void tanımlaması gerçek mi sanal mı? bu soruları sormadan goto kullanırsanız yazılım goto yaptığı adreste hiç hesapta olmayan stack bozulmaları yaşayabilirsiniz.

Akıcılığı bozmamak adına goto kullanmıyoruz compiler bizim için bu düzeni sağlıyor işini yaparken ona karışırsak kodumuzun taşınılırlığı kalmaz. Başka bir complier farklı yorumlayabilir. Asıl sebep bu.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

peko

@z

Algoritma değişikliği zaman farkı yaratır ve dolayısıyla anlaşılır hocam..
Ancak şuana kadar burada konuşulan bir çok yazılım için bu zaman farkı veya goto kullanıp kullanılmamasının hassasiyetine haiz bir duruma ben rastlamadım.
Bundan dolayı hissetmezsiniz diyorsanız evet, kimse kolay kolay farkedemez içerde nelerin değiştiğini..
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

trgtylcnky

Alıntı yapılan: mustafayilmaz - 19 Ekim 2015, 20:29:45
mekanik sistemler, çok az bir hata payı ile üretilmek zorundadır.
fazladan bir dişli, mil, vida koymak mümkün değildir. profesyonel yazılımlarda böyle midir?

her profesyonel yazılım tıkır tıkır işler mi? bir yerde fazladan kontrol, karşılaştırma, gecikme vs. kullanılmıştır sanırım.



Profesyonel yazılımlardan ne anladığımıza bağlı. Kullanıcı yazılımlarında birçok hata oluyor. Bunu, programı konsoldan çalıştırınca verdiği mesajları görünce anlamıştım. Ama askeri ya da sağlık alanında kullanılan bir yazılımsa olmamasını beklerim.
Makinelerdeki biraz daha garip. Makinede kalite ayrıntılarda. Portakal sıkacağı alıyorsun, ikisinin de sistemi aynı olan makinalardan biri çok kötü diğeri mükemmel.

z

Alıntı yapılan: X-Fi - 19 Ekim 2015, 21:37:45
GOTO komutunu kullanmak yasak değil 4 satır kod yazdınız 2. satırdan 4. satıda goto ile atlamanız bişey değişitirmez. ANCAK bu komut fonksiyon geçişlerini ve özellikle C++ da çok kullanılan class yapısını baltalar. Bir fonksiyon çağırdığınızda çağırmış mı olursunuz çağırmamış mı? pointer void tanımlaması gerçek mi sanal mı? bu soruları sormadan goto kullanırsanız yazılım goto yaptığı adreste hiç hesapta olmayan stack bozulmaları yaşayabilirsiniz.

Akıcılığı bozmamak adına goto kullanmıyoruz compiler bizim için bu düzeni sağlıyor işini yaparken ona karışırsak kodumuzun taşınılırlığı kalmaz. Başka bir complier farklı yorumlayabilir. Asıl sebep bu.

Bu durumda  kurulu plak gibi goto kullanmayın-goto kullanmayın-goto kullanmayın demeye gerek  yok.

Neden?  Fonksiyonları Goto ile çağırmaktan hatta c++ dan bahsediyorsunuz. Yani artık 3 kağıt çekme aşamalarına gelindiğinden bahsediyorsunuz.

Taşınabilirliğin, belli standartlara uyulması gereken işlerde tamam patronların istediği disiplinde kod yazmak lazım.

Ama Ahmet ağa evinde kendine ya da müşterisine bir uygulama yazarken bırakın nasıl yazıyorsa yazsın.

Forumda C dilinde verilen kod örneklerini görüyoruz.

goto'ya gelinceye kadar ooooooo....

Bana e^st de diyebilirsiniz.   www.cncdesigner.com