🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #215985

Re: Jak to robią w NASA

#215985
From: M.M.
Date: Thu, 12 Sep 2019 10:05
76 lines
5684 bytes
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/assume?view=vs-2019

A w GCC zalecają sztuczki:
https://stackoverflow.com/questions/25667901/assume-clause-in-gcc
https://stackoverflow.com/questions/6031819/emulating-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
Technical Details
Message-ID: <22902c8a-9482-453a-970c-c1cd5dbacf47@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.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!q23ni262qtl.1!nntp.google.com!o24no10548946qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <1ua4wui506zbf$.dlg@tyczka.com> <qkecqc$c03$1@news.icm.edu.pl> <3ec85b36-33be-49bd-b688-d8c9213a771a@googlegroups.com> <qkicu0$knb$1@gioia.aioe.org> <46e56026-21be-4761-908e-7991c72a1143@googlegroups.com> <qkjqqi$1b59$1@gioia.aioe.org> <0125b7f3-d337-4537-a6d3-237b78065215@googlegroups.com> <rmvauunflug0.dlg@tyczka.com> <eab71553-8760-428b-a4aa-a58ac0f346ec@googlegroups.com> <1794fcdb-d7bb-402f-927f-80010b217989@googlegroups.com> <1a2f7fe3-5745-40b2-9fd6-868fca99dea5@googlegroups.com> <a0c6a1c7-e8bf-4079-b5f2-d5dcec42f7d9@googlegroups.com> <819e71ad-be91-42ae-a41a-76628f10bcbf@googlegroups.com> <4ecd1b3c-579b-4660-896f-76d8ed9298c6@googlegroups.com> <eb02743f-41b4-4dd0-862b-a21d6b96729f@googlegroups.com> <8c636dbb-1628-4476-88cd-4578d874ae98@googlegroups.com> <fa84e279-9339-4ef2-84b4-4ed0058163e2@googlegroups.com> <6ca46f89-2f05-450e-8a97-e05f4c5968f1@googlegroups.com> <efda217d-c77f-474c-9528-f27c49f9bf99@googlegroups.com> <99f5c150-31a7-4000-8c3d-a484031d5d09@googlegroups.com> <c8902034-b5ff-4228-a999-6c48b98e64e6@googlegroups.com> <6a2729e1-09f4-4c24-be01-1c6fede2c4f3@googlegroups.com> <bdc3f3c2-7fd5-4cf2-b842-22bb04a48272@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ad4:53c3:: with SMTP id k3mr25294753qvv.95.1568282702868;        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: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.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!q23ni262qtl.1!nntp.google.com!o24no10548946qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Thu, 12 Sep 2019 03:05:02 -0700 (PDT)
In-Reply-To: <bdc3f3c2-7fd5-4cf2-b842-22bb04a48272@googlegroups.com>
Complaints-To: groups-abuse@google.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> <3ec85b36-33be-49bd-b688-d8c9213a771a@googlegroups.com> <qkicu0$knb$1@gioia.aioe.org> <46e56026-21be-4761-908e-7991c72a1143@googlegroups.com> <qkjqqi$1b59$1@gioia.aioe.org> <0125b7f3-d337-4537-a6d3-237b78065215@googlegroups.com> <rmvauunflug0.dlg@tyczka.com> <eab71553-8760-428b-a4aa-a58ac0f346ec@googlegroups.com> <1794fcdb-d7bb-402f-927f-80010b217989@googlegroups.com> <1a2f7fe3-5745-40b2-9fd6-868fca99dea5@googlegroups.com> <a0c6a1c7-e8bf-4079-b5f2-d5dcec42f7d9@googlegroups.com> <819e71ad-be91-42ae-a41a-76628f10bcbf@googlegroups.com> <4ecd1b3c-579b-4660-896f-76d8ed9298c6@googlegroups.com> <eb02743f-41b4-4dd0-862b-a21d6b96729f@googlegroups.com> <8c636dbb-1628-4476-88cd-4578d874ae98@googlegroups.com> <fa84e279-9339-4ef2-84b4-4ed0058163e2@googlegroups.com> <6ca46f89-2f05-450e-8a97-e05f4c5968f1@googlegroups.com> <efda217d-c77f-474c-9528-f27c49f9bf99@googlegroups.com> <99f5c150-31a7-4000-8c3d-a484031d5d09@googlegroups.com> <c8902034-b5ff-4228-a999-6c48b98e64e6@googlegroups.com> <6a2729e1-09f4-4c24-be01-1c6fede2c4f3@googlegroups.com> <bdc3f3c2-7fd5-4cf2-b842-22bb04a48272@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <22902c8a-9482-453a-970c-c1cd5dbacf47@googlegroups.com>
Subject: Re: Jak to robią w NASA
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Thu, 12 Sep 2019 10:05:02 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit