Article View: pl.comp.os.linux.programowanie
Article #60127Re: Jak zrobić program obliczający dużą silnię?
From: Maciej Sobczak
Date: Thu, 27 Oct 2005 12:13
Date: Thu, 27 Oct 2005 12:13
44 lines
3510 bytes
3510 bytes
Marcin 'Qrczak' Kowalczyk wrote: >>Najlepsze rozwiązanie jakie do tej pory widziałem to etykiety pętli. > > Nadaje się tylko do wbudowanych w składnię języka rodzajów pętli > i tylko kiedy pętla i miejsce przerwania znajdują się w tej samej > funkcji. Zgadza się. Przerywanie pętli jest wtedy częścią "gramatyki" tej pętli, podobnie jak obecnie samo 'break' - to tylko nadzbiór tej koncepcji. Wydaje mi się to sensowne, bo przerwanie pętli (i kontynuację dalszej części kodu w tym samym zakresie!) traktuję jako logiczną część sterowania pętli a nie jako protezę ulepioną z innych mechanizmów języka (np. z wyjątków). Tak właśnie działa samo 'break' w C/C++. > Nie nadaje się, kiedy pętle są realizowane lokalnymi > funkcjami. Zgadza się. Jeżeli wszystko (łącznie ze strukturami sterującymi) sprowadzisz strukturalnie do funkcji, to dalej musisz konsekwentnie posługiwać się takimi mechanizmami, które są wtedy dostępne. Tylko że wtedy te mechanizmy nie są dobre przez ich obiektywną wyższość nad czymś innym, tylko po prostu inaczej się nie da. Dostępność etykiet pętli w języku nie wyklucza stosowania wyjątków do czegokolwiek. Wtedy można jawnie wyrazić intencje używając przerwania pętli do przerwania pętli a wyjątków do wyjątków. >>Od wyjątków różni się dodatkowo tym, że nie można tego schować >>w funkcji wywołanej w pętli, ale akurat nie uważam tego za wadę. > > A ja uważam. Schowanie czegoś w funkcji (nie mówię o lambdach, tylko o nazwanych funkcjach) powoduje taki problem, że można tą funkcję wykorzystać z innego kontekstu, gdzie może nie być żadnej pętli do przerwania. Nie należy odrywać mechanizmu przerwania pętli od mechanizmu pętli, bo to utrudnia pielęgnację kodu. -- Maciej Sobczak : http://www.msobczak.com/ Programming : http://www.msobczak.com/prog/
Technical Details
Message-ID:
<djqg9q$1sg$1@sunnews.cern.ch>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news-fra1.dfn.de!newsfeed.ision.net!ision!irazu.switch.ch!news-zh.switch.ch!switch.ch!cernne03.cern.ch!cern.ch!newsReferences:
<djfrn5$i55$1@nemesis.news.tpi.pl> <dji80k$2a5$2@atlantis.news.tpi.pl> <20051024135514.GA237@siebert> <djij31$st1$1@sunnews.cern.ch> <20051024162624.GA1132@siebert> <djleog$fok$1@nemesis.news.tpi.pl> <1t4bv9mozvw38.12szxw58iqmbp.dlg@40tude.net> <djn9lh$ktl$1@nemesis.news.tpi.pl> <e2pcznjzv2gh$.1drgaxj9rqzhj.dlg@40tude.net> <djnjtf$suk$2@nemesis.news.tpi.pl> <1i7bbr8l84m9o$.8ttxld9ccdq4.dlg@40tude.net> <djnq5h$8ae$1@atlantis.news.tpi.pl> <gmqro8ttahov.aorv2e8thz25.dlg@40tude.net> <87wtk0iiqw.fsf@qrnik.zagroda> <djq3rj$4fm$1@sunnews.cern.ch> <87y84fz1bn.fsf@qrnik.zagroda>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news-fra1.dfn.de!newsfeed.ision.net!ision!irazu.switch.ch!news-zh.switch.ch!switch.ch!cernne03.cern.ch!cern.ch!news From: Maciej Sobczak <no.spam@no.spam.com> Newsgroups: pl.comp.os.linux.programowanie Subject: Re: Jak zrobić program obliczający dużą silnię? Date: Thu, 27 Oct 2005 14:13:47 +0200 Organization: CERN - European Laboratory for Particle Physics Lines: 44 Message-ID: <djqg9q$1sg$1@sunnews.cern.ch> References: <djfrn5$i55$1@nemesis.news.tpi.pl> <dji80k$2a5$2@atlantis.news.tpi.pl> <20051024135514.GA237@siebert> <djij31$st1$1@sunnews.cern.ch> <20051024162624.GA1132@siebert> <djleog$fok$1@nemesis.news.tpi.pl> <1t4bv9mozvw38.12szxw58iqmbp.dlg@40tude.net> <djn9lh$ktl$1@nemesis.news.tpi.pl> <e2pcznjzv2gh$.1drgaxj9rqzhj.dlg@40tude.net> <djnjtf$suk$2@nemesis.news.tpi.pl> <1i7bbr8l84m9o$.8ttxld9ccdq4.dlg@40tude.net> <djnq5h$8ae$1@atlantis.news.tpi.pl> <gmqro8ttahov.aorv2e8thz25.dlg@40tude.net> <87wtk0iiqw.fsf@qrnik.zagroda> <djq3rj$4fm$1@sunnews.cern.ch> <87y84fz1bn.fsf@qrnik.zagroda> NNTP-Posting-Host: abpc10883.cern.ch Mime-Version: 1.0 X-Trace: sunnews.cern.ch 1130415226 1936 (None) 137.138.37.241 X-Complaints-To: news@sunnews.cern.ch User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050922 Red Hat/1.7.12-1.1.3.2.SL3 X-Accept-Language: en-us, en In-Reply-To: <87y84fz1bn.fsf@qrnik.zagroda> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit