-
Data: 2010-08-17 20:49:33
Temat: Re: jedno proste pytanie
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 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
Najnowsze wątki
- 2024-12-21 Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 2024-12-21 Ideologia Geniuszy-Mocarzy dostępna na nowej s. WWW energokod.pl
- 2024-12-21 ciekawy układ magnetofonu
- 2024-12-21 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2024-12-21 Warszawa => Java Developer <=
- 2024-12-21 Zalesie Borowe => Medical Equipment Service Engineer <=
- 2024-12-21 Żerniki => Specjalista ds. Employer Brandingu <=
- 2024-12-21 jak tacy debile
- 2024-12-20 Precedensy politycznie motywowanego nie wydawania w UE
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi