eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak to robią w NASA › Re: Jak to robią w NASA
  • X-Received: by 2002:ac8:46d9:: with SMTP id h25mr12077059qto.57.1568282702636; Thu,
    12 Sep 2019 03:05:02 -0700 (PDT)
    X-Received: by 2002:ac8:46d9:: with SMTP id h25mr12077059qto.57.1568282702636; Thu,
    12 Sep 2019 03:05:02 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!proxad.net!feeder1-2
    .proxad.net!209.85.160.216.MISMATCH!o24no10548953qtl.0!news-out.google.com!q23n
    i262qtl.1!nntp.google.com!o24no10548946qtl.0!postnews.google.com!glegroupsg2000
    goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 12 Sep 2019 03:05:02 -0700 (PDT)
    In-Reply-To: <b...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.36.205.84;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 178.36.205.84
    References: <1ua4wui506zbf$.dlg@tyczka.com> <qkecqc$c03$1@news.icm.edu.pl>
    <3...@g...com>
    <qkicu0$knb$1@gioia.aioe.org>
    <4...@g...com>
    <qkjqqi$1b59$1@gioia.aioe.org>
    <0...@g...com>
    <r...@t...com>
    <e...@g...com>
    <1...@g...com>
    <1...@g...com>
    <a...@g...com>
    <8...@g...com>
    <4...@g...com>
    <e...@g...com>
    <8...@g...com>
    <f...@g...com>
    <6...@g...com>
    <e...@g...com>
    <9...@g...com>
    <c...@g...com>
    <6...@g...com>
    <b...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <2...@g...com>
    Subject: Re: Jak to robią w NASA
    From: "M.M." <m...@g...com>
    Injection-Date: Thu, 12 Sep 2019 10:05:02 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:214003
    [ ukryj nagłówki ]

    On Thursday, September 12, 2019 at 9:21:42 AM UTC+2, Maciej Sobczak wrote:
    > > A konkretnie, co jest na temat a co nie jest i na jaki?
    >
    > Pół dyskusji w tym wątku było nie na temat tego wątku.
    >
    > > Nie wiem co to
    > > jest "verification condition".
    >
    > To jest coś, co zakładamy[1], że jest prawdą albo co musi być wykazane[2],
    > że jest prawdą, żeby program uznać za poprawny.

    Na razie rozumiem, że "verification condition" to jest cokolwiek z czego
    prawdziwości wynika poprawność programu, albo czego prawdziwości jest
    tożsama z poprawnością programu. Coś w rodzaju
    X => Y
    X <=> Y
    Gdzie X to jest poprawny verification condition, a Y oznacza poprawność
    programu.

    Zwykle stosuję słabsze wnioskowanie, np. że z NIE prawdziwości warunków
    testowych wynika że program jest nie poprawny.

    > [1] Przykładem takiego założenia jest np. zakres wartości typu int. Tego się
    > nie udowadnia, to się przyjmuje i dane z tego założenia są WEjściem dla
    > innych rozważań.

    Tak, to chyba wynika z prawdziwości zdania "kompilator nie ma błędów".


    > [2] Przykładem takiego warunku jest np. to, co było pokazane dla funkcji max,

    Tak, tamto zrozumiałem, choć do składni w adnotacjach bym musiał przywyknąć.


    > albo to, że funkcja sortująca faktycznie sortuje albo to, że
    > funkcja abs nigdy nie zwróci wartości ujemnej, itd.

    Abs i sortowanie stanowią stosunkowo łatwe przykłady. Zwykle nie wiem
    jak mam zrobić warunki, gdy mam okienko dialogowe np. z 20ma polami i
    piszę parser czy użytkownik nie wpisał blędnych wartości? Czy parser
    przepuści jakiś przypadek błędnych danych wejściowych dla programu?
    Niby sam parser jest takim warunkiem, działa na zasadzie: dane złe, to
    warunek je wychwyci.


    > Takich rzeczy nie wiemy z góry, ale możemy je wykazać (albo im
    > zaprzeczyć) wnioskując na podstawie informacji, które już znamy.
    >
    > Fachowo, dowiedzenie, że VC (verification condition) jest spełnione nazywa się
    "discharge". Ale po polsku najlepiej powiedzieć, że jest "spełnione", bo
    "rozładowywanie warunków" brzmi głupio. Dowody mogą być automatyczne albo ręczne.
    >
    > I teraz ciekawostka: asercja napisana przy użyciu makra "assert" może być
    > traktowana jako warunek do wykazania *oraz* jako nowe założenie dla
    > dalszych rozważań.

    O jakie założenie i o jakie rozważania chodzi?

    > W niektórych językach do tego drugiego celu służy konstrukcja "assume" i stosuje
    się ją wtedy, kiedy wiedza na jakiś temat pochodzi z zewnątrz - np. z tego, jak i
    gdzie dany program jest użytkowany.

    Nie używałem assume. Widzę że w C/C++ microsofcie coś dodali:
    https://docs.microsoft.com/en-us/cpp/intrinsics/assu
    me?view=vs-2019

    A w GCC zalecają sztuczki:
    https://stackoverflow.com/questions/25667901/assume-
    clause-in-gcc
    https://stackoverflow.com/questions/6031819/emulatin
    g-gccs-builtin-unreachable

    Nie rozumiem, jakie są korzyści z dodania pustej funkcji, albo z operacji
    bitowej AND z samymi jedynkami:
    x = x & (~0);

    Chociaż bezpieczniej byłoby OR z zerami:
    x = x | 0;

    Pozdrawiam
    >
    > --
    > 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: