🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#60132
From: Marcin 'Qrczak' Kowalczyk
Date: Mon, 31 Oct 2005 12:16
46 lines
4071 bytes
Maciej Sobczak <no.spam@no.spam.com> writes:

> OK. Jak już pisałem wcześniej - mogę to związać z pojęciem zakresu
> pętli i widoczności obiektów. Jeśli w jakimkolwiek miejscu widzę
> obiekty zadeklarowane w pętli, to mogę tą pętlę też przerwać.
> To właśnie obejmuje nie tylko ciąg instrukcji traktowany jako
> sekwencję, ale również lokalne rozgałęzienia w rodzaju instrukcji
> warunkowych (tak naprawdę to dopiero wtedy przerywanie pętli ma
> sens).

Zgodnie z tym kryterium powinno też obejmować lokalne funkcje.
I u mnie obejmuje, a u Ciebie nie.

> Wywołanie funkcji w pętli powoduje, że powstaje nowy zakres, gdzie
> obiekty stworzone w pętli nie są widoczne (to też zależy od języka,
> ale mówię o "moich" językach, gdzie widoczność jest ustalana
> statycznie) -

A ja mówię o moim, gdzie jest ustalana statycznie *i* obejmuje obiekty
zdefiniowane w pętli.

> Bardziej mnie interesują języki, w których taka gimnastyka nie
> występuje - bo albo w ogóle nie ma break (jak w "Twoich" językach)
> albo nie ma finally (jak w "moich").

Musi być coś zamiast finally, żeby język był praktyczny. Common Lisp
ma unwind-protect, C++ ma destruktory zmiennych lokalnych, C# ma using.

> No właśnie nie jest przezroczyste, bo powstaje kod, który nie widzi
> pętli, którą przerywa. Taki kod (czyli tą funkcję) można wywołać
> w inny sposób, i wtedy przestaje mieć sens.

Ależ widzi. Tyle że jeśli się uprzeć, to można zbudować kod, który
będzie próbował przerwać pętlę po tym, jak ona się już zakończyła.
Takie życie.

Sytuacja jest podobna do próby operacji na pliku po jego zamknięciu.
Efekt też. Nie jest to jednak powód, żeby zabronić przekazywania
uchwytów do plików między funkcjami, mimo że zabronienie tego
(i automatyczne zamykanie pliku na końcu funkcji, która go otworzyła)
rozwiązałoby problem operacji na zamkniętych plikach.

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
Technical Details
Message-ID: <87vezdanl0.fsf@qrnik.zagroda>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
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> <djqg9q$1sg$1@sunnews.cern.ch> <87ll0ezpyl.fsf@qrnik.zagroda> <djsle0$q36$1@sunnews.cern.ch> <877jbx7q2t.fsf@qrnik.zagroda> <dk4n41$aue$1@sunnews.cern.ch>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: Jak     zrobić program
 obliczający dużą silnię?
Date: Mon, 31 Oct 2005 13:16:27 +0100
Organization: Klub Nieszkodliwych Manjaków
Lines: 46
Message-ID: <87vezdanl0.fsf@qrnik.zagroda>
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> <djqg9q$1sg$1@sunnews.cern.ch> <87ll0ezpyl.fsf@qrnik.zagroda> <djsle0$q36$1@sunnews.cern.ch> <877jbx7q2t.fsf@qrnik.zagroda> <dk4n41$aue$1@sunnews.cern.ch>
NNTP-Posting-Host: paf87.warszawa.sdi.tpnet.pl
Mime-Version: 1.0
X-Trace: atlantis.news.tpi.pl 1130760996 13736 217.96.225.87 (31 Oct 2005 12:16:36 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Mon, 31 Oct 2005 12:16:36 +0000 (UTC)
X-Face: .B/ouEO}=VFkSJWE}s0@!:diHI.Z,<Ilt`:~@*]7rnn^K_y"XV8AXf^E)x*|3yVg:$FCq0Y )iGn@Z[SOA<+p}TkAv'Lzu$w{z2?F);0Xt>`m}AqK#Vjuscq(Vf1B}H[)v\9tBN}>AdP,QSRbhO]=v 3?;I+cN/Z0HKPm_Eg99/pFrU!WfpjgQ!z":>A~qt0^4):0-UuPB(6^>j!mN$)RIb)rRhXeK:+MLPW[ RVb7Kepvby-ww6_zci7Yy_@IrWW
User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)
Cancel-Lock: sha1:P97m/OsMMff032XBuCF+R40AoXo=
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit