Article View: pl.comp.os.linux.programowanie
Article #60135Re: Jak zrobić program obliczający dużą silnię?
From: Maciej Sobczak
Date: Thu, 03 Nov 2005 10:47
Date: Thu, 03 Nov 2005 10:47
53 lines
4036 bytes
4036 bytes
Marcin 'Qrczak' Kowalczyk wrote: >>Czy obejmowałaby też etykiety (gdybyś je miał)? > > Nie mogę więc powiedzieć, co by było przy goto, bo ono jest > niekompatybilne z moim modelem. Chodziło mi o break. Albo - bardziej ogólnie - o widoczność etykiet w zagnieżdżonej funkcji lokalnej. To też ciekawy temat, bo prowokuje pytanie, czym jest etykieta i czym się różni od identyfikatora obiektu. Tak naprawdę jedno i drugie jest nazwą jakiegoś bytu w programie. Pozwalasz na to, żeby funkcja lokalna widziała nazwy obiektów zdefiniowanych w tym zakresie, gdzie ta funkcja jest stworzona. Co z innymi identyfikatorami? Co z etykietami? Nie chodzi o goto - to jest bardziej ogólny temat. Np. wyobrażam sobie język imperatywny z semantyką transakcji (commit/rollback), gdzie etykiety mogą służyć do określenia miejsc w kodzie, gdzie można np. wycofać różne operacje. Co z takimi etykietami? Czy powinny być widoczne w funkcjach lokalnych (jeśli język je wspiera)? Moje zdanie jest takie, że funkcje lokalne nie powinny widzieć *niczego* z ich zewnętrznego zakresu (ale można wykorzystać ich parametry do przekazania im jakiejś wartości albo referencji) - po prostu nie potrafię powiedzieć, gdzie miałbym się z tym zatrzymać. >>>Musi być coś zamiast finally, żeby język był praktyczny. >> >>Oczywiście, tylko że ja na to patrzę odwrotnie (i historycznie chyba >>mam rację): to właśnie finally jest "czymś zamiast". Z takimi >>efektami, jak wspomniałeś. > > Co uznajesz za podstawową konstrukcję tego rodzaju? Obiekty lokalne z destruktorami. Funkcje lokalne (albo anonimowe klasy albo jedno i drugie razem) mogą tu bardzo pomóc przy definiowaniu akcji ad-hoc. C++, Ada - te języki mają obiekty lokalne z destruktorami i bardzo mi dzięki temu pasują. Niestety nie mają funkcji lokalnych. W C++ może coś się w tym temacie zmieni, Ada nie ma na to szans. > RAII w C++ ma ten sam problem, co wołanie zawsze metody Dispose: > zmusza do opisania zasobu albo stanu klasą z konstruktorami > i destruktorem. Owszem. Funkcje lokalne by się tu przydały. -- Maciej Sobczak : http://www.msobczak.com/ Programming : http://www.msobczak.com/prog/
Technical Details
Message-ID:
<dkcps0$2vq$1@sunnews.cern.ch>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!irazu.switch.ch!news-zh.switch.ch!switch.ch!cernne03.cern.ch!cern.ch!newsReferences:
<djfrn5$i55$1@nemesis.news.tpi.pl> <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> <87vezdanl0.fsf@qrnik.zagroda> <dk9su1$6su$1@sunnews.cern.ch> <87k6fqeq35.fsf@qrnik.zagroda>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!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, 03 Nov 2005 11:47:29 +0100 Organization: CERN - European Laboratory for Particle Physics Lines: 53 Message-ID: <dkcps0$2vq$1@sunnews.cern.ch> References: <djfrn5$i55$1@nemesis.news.tpi.pl> <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> <87vezdanl0.fsf@qrnik.zagroda> <dk9su1$6su$1@sunnews.cern.ch> <87k6fqeq35.fsf@qrnik.zagroda> NNTP-Posting-Host: abpc10883.cern.ch Mime-Version: 1.0 X-Trace: sunnews.cern.ch 1131014848 3066 (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: <87k6fqeq35.fsf@qrnik.zagroda> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit