🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #246979

Re: ile czasu trzeba aby sie nauczyc c++?

#246979
From: (fir)
Date: Fri, 07 Apr 2017 14:36
121 lines
8229 bytes
W dniu piątek, 7 kwietnia 2017 16:24:13 UTC+2 użytkownik (fir) napisał:
> W dniu piątek, 7 kwietnia 2017 16:02:27 UTC+2 użytkownik (fir) napisał:
> > W dniu piątek, 7 kwietnia 2017 15:31:12 UTC+2 użytkownik (fir) napisał:
> > > W dniu piątek, 7 kwietnia 2017 12:15:43 UTC+2 użytkownik godek....@gmail.com napisał:
> > > > W dniu piątek, 7 kwietnia 2017 11:52:09 UTC+2 użytkownik slawek napisał:
> > > > 
> > > > > > Napisałeś, że uważasz, że na 40 linii kodu powinno=
> > > > > >  przypadać
> > > > > > 50 linii komentarza, ale nie napisałeś, dlaczego
> > > > > 
> > > > > Bo jeżeli piszę wysokopoziomowo, np. wywołując jakieś 100 różnych 
> > > > > funkcji/metod w 40 linijkach, to robi się coś konkretnego. Te coś 
> > > > > konkretnego wymaga opisania: co się robi, jakie parametry, jakie 
> > > > > skutki, co powinno być a co nie,
> > > > 
> > > > Według mnie:
> > > > 
> > > > To, co się robi, powinno wynikać z nazwy funkcji.
> > > > To, jakie parametry, powinno wynikać z nazw tych parametrów,
> > > > albo czegoś w tym rodzaju -- ja jak piszę w Schemie, to daję
> > > > jednosłowowe komentarze "przyimkowe", wyjaśniające role
> > > > poszczególnych argumentów, np. w kodzie rozwiązującym
> > > > problem komiwojażera miałem coś w stylu
> > > > 
> > > > (shortest-path+cost #;from start #;to end #;through others)
> > > > 
> > > > To, jakie skutki, powinno wynikać z asercji/kontraktów.
> > > 
> > > 
> > > no asercje bylyby lepsze niz komentarze, ale nawet ich tez nie chce mi sie pisac - moze musze nad sobą popracowac w tym etemacie
> > >  
> > > (tj przetrenowac jak to jest kompatybilne z moim 
> > > stylem klepanie i patrzenia na zrodlo)
> > > 
> > 
> > 
> > by wspomniec oczywista rownowage kosztow do zyskow
> > 
> > koszty:
> > 1) trzeba je wpisywac, jesli bym tego wpisywal setki -
> > a raczej bylyby setki - to jakis koszt jest
> > 
> > 2) wydluzaja zrodlo a dluzsze zrodlo jest troche 
> > gorsze i byc moze wolniejsze w czytaniu
> > 
> > zyski:
> > 1) jesli juz cos wylapią to b dobrze, od czasu do czasu
> > zaoszczedzą troche z nieprzyjemnej sesji lokalizowania
> > bledu
> > 2) nie uzywam assertow ale od czasu do czasu uzywam 
> > if(..) ERROR(..), gdyby to byl assert to mozliwosc wylaczenie tego przez NDEBUG jest dobra do optymalizacji
> > 
> > mixed:
> > 
> > 1) - z drugiej strony jest maly problem bo niektore a tych assercji byc moze chcialbym zostawic w release, a 
> > rozkminianie teraz za kazdym razem co robic ifem a co assertem moze byc deczko spowoalniajace
> > 
> > 2) assert w windzie wywala okno i fatalny dzwiek ("d-dum-b!"), ktorego nie lubie i nie chcialbym tego sluchac,
> > moje wlasne okno od erroru daje nieco lepszy "t-trrik!")
> > do tego u mnie w dialogu przycisk "ignore error" (czasem przydatny)  dziala  a ten od assertu nie wydaje sie dzialac leci po nim u mnie sigsegv nie wiedomo czemu
> > 
> > 3) pozatym chyba wolalbym to pisac duzymi literami ASSERT
> > czyli musialbym napisac swoj 
> > 
> > tak ze nie wiem, w sumie na razie by nie komplikowac chyba nie bede uzywac
> > 
> 
> problemem przekonujacym mnie do tego jest chyba wlasnie to ze jesli napisze swoj wlasny ASSERT_() 
> (kiedys pisalem i to bylo cos w stylu
> 
> #ifdef NO_ASSERTS
> #define ASSERT_(p)          ;;;
> #else
> #define ASSERT_(p)     if(!(p)) (show_assert_failed_dialog( #p, __FILE__, __LINE__))
> #endif
> 
>  void show_assert_failed_dialog(char* condition,
>                                 char* file,
>                                  int line)
>  {
>    ERROR_("\nAssertion  (%s) failed \n\n %s %d  " , condition, file, line);
>  }
> 

z drugiej strony samo dodatkowe makro moze i by uszlo  kiedys z jakichs dziwnych powodowd wydzialalem na dwie funkcje)

#define ASSERT_(p) if(!(p)) ERROR_("\nAssertion (%s) failed \n\n %s %d  ", #p, __FILE__, __LINE__);


> cos w tym stylu to jako ze jest to makro musze to przeklejac headerem a ERROR_ ciagne jedna linijką importu z dll-ki, lamaloby to tez moja zasade nie uzywania makr
> 
> assert z headera c z kolei nie ma tych wad ale jest malymi literami (co jest niespojne u mnie bo wole duzymi)
> i wola okno z glupim dzwiekiem (a tu wyzej moga dac nawet wyczesany dialog z pelna diagnostyka gdyby mi sie chcialo
> 
> > 
> > > > Zresztą wydaje mi się, że w tym przypadku wartość programowania
> > > > funkcyjnego jest szczególnie duża, bo zazwyczaj funkcje nie
> > > > mają skutków, tylko wartości, a jeśli mają skutki, to w Haskellu
> > > > albo Scali wynika to z typu.
> > > > 
> > > > > jaki algorytm i gdzie coś można poczytać (referencje). 
> > > > 
> > > > Tego, jaki algorytm, albo referencji, rzeczywiście nie da się
> > > > zawrzeć poza komentarzem, ale to zazwyczaj jedna linijka.
> > > > 
> > > > > To będzie już 30 do 40 linijek komentarza. Do 
> > > > > tego jeszcze kilkanaście w tekście, np. że nie robić czegoś 
> > > > > oczywistego, bo dany fragment musi być taki właśnie jaki jest.
> > > > >
> > > > > I już jest nawet i 50 linii komentarza. Zwłaszcza że liczę takie 
> > > > > 
> > > > > A=5; // cm
> > > > > 
> > > > > za linię z komentarzem.
> > > > 
> > > > Chyba lepiej byłoby tak:
> > > > 
> > > > A_cm = 5;
> > > > 
> > > > Pod tym względem ciekawe rozwiązanie ma F#:
> > > > https://en.wikibooks.org/wiki/F_Sharp_Programming/Units_of_Measure
Technical Details
Message-ID: <1392c30a-2140-41b9-abb0-691672ed221a@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!y18no5813252itc.0!news-out.google.com!m191ni23381itc.0!nntp.google.com!y18no5807215itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <451e90e7$0$17965$f69f905@mamut2.aster.pl> <2bb5.00000022.45239396@newsgate.onet.pl> <eg0l2h$pre$1@nemesis.news.tpi.pl> <2afb3725-2059-4f04-b4ac-0989aff4dbd4@googlegroups.com> <58e1d648$0$5141$65785112@news.neostrada.pl> <896bb474-1535-4eb5-a427-1d74855ca14e@googlegroups.com> <58e20fc5$0$643$65785112@news.neostrada.pl> <82bfc8d8-6b1d-4928-b831-bdbbe71fc013@googlegroups.com> <58e245ef$0$640$65785112@news.neostrada.pl> <ed300d94-7f05-4791-ae56-077b774efa54@googlegroups.com> <58e28b69$0$15195$65785112@news.neostrada.pl> <1a59b0b0-0be0-44c9-9886-28171ba25a91@googlegroups.com> <c04357ca-2816-449a-a76d-3544891487be@googlegroups.com> <85e6a3a0-9e65-4bb9-9465-433d9c9c5c5e@googlegroups.com> <58e53652$0$5144$65785112@news.neostrada.pl> <694df5a0-8446-49ac-8e95-64e29d3767b7@googlegroups.com> <58e53ca6$0$15190$65785112@news.neostrada.pl> <c11906bf-4238-4b12-bcd1-38fefcec7225@googlegroups.com> <oc4lvi$n5f$1@node1.news.atman.pl> <58e5df11$0$5156$65785112@news.neostrada.pl> <almarsoft.5519333400367255350@news.v.pl> <almarsoft.1887009307138951124@news.v.pl> <a01917ce-6005-4ba5-ab6f-7d503a694651@googlegroups.com> <almarsoft.3812374116751442610@news.v.pl> <d521c115-c757-439a-b6b5-8cf4b5886167@googlegroups.com> <almarsoft.5271328977613451308@news.v.pl> <df81b585-523e-4ed7-a9b1-3eb3a980639d@googlegroups.com> <almarsoft.37215651928186221@news.v.pl> <f52db3b6-cba3-4c7a-9d02-2fa8105dab31@googlegroups.com> <65b9eced-3da5-421c-bccc-7632b0dd23e1@googlegroups.com> <594f02ef-9bd5-43e2-b95f-5bfb933e93ba@googlegroups.com> <f0e6e860-a386-40a0-8ad8-33e4595635fa@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.99.65.195 with SMTP id o186mr16585582pga.52.1491575815714;        Fri, 07 Apr 2017 07:36:55 -0700 (PDT)
X-Received: by 10.157.18.211 with SMTP id g77mr698337otg.8.1491575815663; Fri, 07 Apr 2017 07:36:55 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!y18no5813252itc.0!news-out.google.com!m191ni23381itc.0!nntp.google.com!y18no5807215itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Fri, 7 Apr 2017 07:36:55 -0700 (PDT)
In-Reply-To: <f0e6e860-a386-40a0-8ad8-33e4595635fa@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=5.172.255.146; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 5.172.255.146
References: <451e90e7$0$17965$f69f905@mamut2.aster.pl> <2bb5.00000022.45239396@newsgate.onet.pl> <eg0l2h$pre$1@nemesis.news.tpi.pl> <2afb3725-2059-4f04-b4ac-0989aff4dbd4@googlegroups.com> <58e1d648$0$5141$65785112@news.neostrada.pl> <896bb474-1535-4eb5-a427-1d74855ca14e@googlegroups.com> <58e20fc5$0$643$65785112@news.neostrada.pl> <82bfc8d8-6b1d-4928-b831-bdbbe71fc013@googlegroups.com> <58e245ef$0$640$65785112@news.neostrada.pl> <ed300d94-7f05-4791-ae56-077b774efa54@googlegroups.com> <58e28b69$0$15195$65785112@news.neostrada.pl> <1a59b0b0-0be0-44c9-9886-28171ba25a91@googlegroups.com> <c04357ca-2816-449a-a76d-3544891487be@googlegroups.com> <85e6a3a0-9e65-4bb9-9465-433d9c9c5c5e@googlegroups.com> <58e53652$0$5144$65785112@news.neostrada.pl> <694df5a0-8446-49ac-8e95-64e29d3767b7@googlegroups.com> <58e53ca6$0$15190$65785112@news.neostrada.pl> <c11906bf-4238-4b12-bcd1-38fefcec7225@googlegroups.com> <oc4lvi$n5f$1@node1.news.atman.pl> <58e5df11$0$5156$65785112@news.neostrada.pl> <almarsoft.5519333400367255350@news.v.pl> <almarsoft.1887009307138951124@news.v.pl> <a01917ce-6005-4ba5-ab6f-7d503a694651@googlegroups.com> <almarsoft.3812374116751442610@news.v.pl> <d521c115-c757-439a-b6b5-8cf4b5886167@googlegroups.com> <almarsoft.5271328977613451308@news.v.pl> <df81b585-523e-4ed7-a9b1-3eb3a980639d@googlegroups.com> <almarsoft.37215651928186221@news.v.pl> <f52db3b6-cba3-4c7a-9d02-2fa8105dab31@googlegroups.com> <65b9eced-3da5-421c-bccc-7632b0dd23e1@googlegroups.com> <594f02ef-9bd5-43e2-b95f-5bfb933e93ba@googlegroups.com> <f0e6e860-a386-40a0-8ad8-33e4595635fa@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1392c30a-2140-41b9-abb0-691672ed221a@googlegroups.com>
Subject: Re: ile czasu trzeba aby sie nauczyc c++?
From: "(fir)" <profesor.fir@gmail.com>
Injection-Date: Fri, 07 Apr 2017 14:36:55 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit