-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.
news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all
.nl!xs4all!feeder.news-service.com!postnews.google.com!z28g2000yqh.googlegroups
.com!not-for-mail
From: Maciej Sobczak <s...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: jedno proste pytanie
Date: Tue, 17 Aug 2010 13:49:33 -0700 (PDT)
Organization: http://groups.google.com
Lines: 47
Message-ID: <6...@z...googlegroups.com>
References: <1...@w...googlegroups.com>
<4...@n...onet.pl>
NNTP-Posting-Host: 81.62.31.74
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1282078173 2510 127.0.0.1 (17 Aug 2010 20:49:33 GMT)
X-Complaints-To: g...@g...com
NNTP-Posting-Date: Tue, 17 Aug 2010 20:49:33 +0000 (UTC)
Complaints-To: g...@g...com
Injection-Info: z28g2000yqh.googlegroups.com; posting-host=81.62.31.74;
posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.6)
Gecko/20100625 Firefox/3.6.6,gzip(gfe)
Xref: news-archive.icm.edu.pl pl.comp.programming:186566
[ ukryj nagłówki ]On 17 Sie, 17:03, j...@p...onet.pl wrote:
> Nie znam SPARKa.
Polecam, bo w przeciwieństwie do wielu akademickich pomysłów ten język
wydaje się nawet rozwijać.
> Czy wstawianie asercji ma sens tzn. coś pomaga?
Asercje w SPARKu są sprawdzane statycznie (jak wszystko inne) i
pomagają w tym sensie, że dają narzędziom dodatkowe informacje nt.
tego, co programista myśli o swoim kodzie.
W szczególności asercje w SPARKu są potrzebne do tego, żeby przeciąć
pętle poprzez ustalenie ich niezmienników - to pozwala na sensowną
analizę tych pętli.
Asercje istnieją jednak tylko w czasie kompilacji, bo potem są już
niepotrzebne.
> function assert($condition, $message = null) {
> if (!$condition) {
> echo (!empty($message) ? $message : 'Błąd wewnętrzny.');
> exit;
> }
> }
To wygląda na konstrukcję run-time, czyli nie ma związku ze
statyczną weryfikacją czegokolwiek. W językach z pełną statyczną
analizą asercje run-time kompletnie nic nie dają - bo skoro analiza
była statyczna, to wiadomo z góry, że asercja zawsze się sprawdzi i
wtedy można ją po prostu wyeliminować z kodu. Dokładnie na tej
zasadzie SPARK eliminuje potrzebę sprawdzania np. indeksów w
tablicach, dzielenia przez zero, itd. - skoro z analizy wiadomo, że
takich rzeczy w programie nie ma, to nie trzeba generować kodu, który
to sprawdza albo który na to reaguje.
Asercje run-time mają jednak sens w tych językach, które nie są zdolne
do pełnej analizy statycznej i mogą służyć do wykrywania kompletnych
fakapów w czasie wykonania programu. Znajdziesz je poutykane w kodzie
w Javie, w C++, itd.
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 18.08.10 06:36 shio
- 18.08.10 07:03 Michał Sopniewski
- 18.08.10 07:30 Maciej Sobczak
- 18.08.10 08:03 shio
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-17 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- 2024-11-18 Gdynia => Spedytor Międzynarodowy <=
- 2024-11-18 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-18 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-18 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-11-18 Kraków => Business Development Manager - Network and Network Security
- 2024-11-18 Kraków => Network Systems Administrator (IT Expert) <=
- 2024-11-18 Kraków => Administrator Systemów Sieciowych (Ekspert IT) <=
- 2024-11-18 Zdunowo => Senior PHP Symfony Developer <=
- 2024-11-18 Łódź => QA Inżynier <=
- 2024-11-18 Lublin => Senior PHP Developer <=
- 2024-11-18 Gliwice => Specjalista ds. public relations <=
- 2024-11-18 Gdynia => Front-End Developer (React/Three.js) <=
- 2024-11-18 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-18 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=