-
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
Następne wpisy z tego wątku
- 13.09.19 08:14 Maciej Sobczak
Najnowsze wątki z tej grupy
- 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
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
Najnowsze wątki
- 2024-05-04 Bonusowe pytanie rozliczenie sie z elektrownia - fotowoltaika.
- 2024-05-04 Ujawnienie porady prawnej prokuraturze
- 2024-05-04 Jaką kamerkę samochodową polecacie?
- 2024-05-04 Warszawa => Spedytor międzynarodowy <=
- 2024-05-04 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-04 Warszawa => Inżynier DevOps (projekt JP) <=
- 2024-05-04 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-05-04 Łódź => Business Development Manager - obszar bezpieczeństwa IT <=
- 2024-05-04 Warszawa => Interactive/Experience Designer <=
- 2024-05-04 Berlin => IT Systems Administrator and Customer Support Engineer <=
- 2024-05-04 Warszawa => Mid IT Recruiter <=
- 2024-05-04 Odpowiedzialność PORTALU za reklamy
- 2024-05-04 Lunar Rover był elektrykiem. Ważył 35 kg Zasięg 80 km Na Księżycu w 1971 r.
- 2024-05-04 Marki => ERP Implementer <=
- 2024-05-04 Gdańsk => Head of International Freight Forwarding Department <=