eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjedno proste pytanieRe: jedno proste pytanie
  • 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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: