🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #60127

Re: Jak zrobić program obliczający dużą silnię?

#60127
From: Maciej Sobczak
Date: Thu, 27 Oct 2005 12:13
44 lines
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!news
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>

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