Article View: pl.comp.programming
Article #215978Re: Jak to robią w NASA
From: godek.maciek
Date: Sat, 07 Sep 2019 22:18
Date: Sat, 07 Sep 2019 22:18
92 lines
6895 bytes
6895 bytes
W dniu sobota, 7 września 2019 17:21:32 UTC+2 użytkownik Maciej Sobczak napisał:
> > > Napisałem już kilka razy, dlaczego asercji się nie używa a Ty grzebiesz w SJP, żeby... no właśnie nie wiem po co.
> >
> > No bo błędnie napisałeś.
>
> W jakim sensie błędnie? W takim, że się ich używa?
W takim sensie, jak pisałem na początku.
Czyli odnośnie tego, czym jest asercja w ogóle.
Asercja to uznanie jakiegoś sądu za prawdziwy. Oto znaczenie tego słowa.
Niekiedy tym słowem określa się ślad, jakiego dokonujemy, uznając dany sąd za prawdziwy -- na przykład jeśli w kodzie źródłowym napiszemy
assert(jakiś_sąd)
to takie wyrażenie określamy mianem asercji (ale określamy w sposób metonimiczny).
Natomiast to, że w języku C assert to makro, i że owo makro w pewnych okolicznościach będzie generowało kod sprawdzający prawdziwość owego sądu i w przypadku negatywnego wyniku powodowało wywalenie programu, nie jest asercją.
Pewnie można to nazwać "pewną strategią obsługi asercji fałszu", ale to już się nie mieści w znaczeniu słowa "asercja".
> > > To na cholerę mi takie asercje?
> >
> > Bo po pierwsze, możesz je inaczej interpretować poza swoim procesem.
>
> Nie rozumiesz. Nie ma rzeczy poza moim procesem. I nawet nie chodzi o to, że nikt mi za nie nie zapłaci. Chodzi wręcz o to, że ze względów zrozumiałych bardziej dla prawników, niż inżynierów, rzeczy poza procesem są zabronione.
Jest bardzo dużo rzeczy poza Twoim procesem.
Na przykład całe Twoje wcześniejsze doświadczenie.
> > Po co pisać komentarz, który nic nie robi?
>
> Komentarz nie jest dead-codem. To właśnie ten aspekt sprawia, że asercji się nie używa.
Asercja też nie jest dead-codem. W szczególności jak skompilujesz z -DNDEBUG, to nie jest żadnym kodem.
> > W komentarzach mogę pisać cokolwiek.
>
> Dalej nie rozumiesz. Za pisanie czegokolwiek wylatuje się z pracy.
> Ale jak napiszesz coś mądrego, to co innego.
Z reguły to nie tak wygląda.
Raczej jest tak, że programista napisze relewantny komentarz, potem inny programista zrefaktoryzuje kod, ale zapomni o aktualizacji komentarza, i komentarz przestaje być relewantny.
> > Jak narzędzie mi sprawdzi, że nie kłamię?
>
> Czyli nie zajrzałeś do tego linka, którego podałem do Frama-C. Szkoda.
>
> > > https://frama-c.com/acsl_tutorial_index.html
> >
> > No to wygląda mi na takie rzeczy, które mogę wyrazić w asercjach.
>
> Jednak zajrzałeś. Ale nie zrozumiałeś. Tych rzeczy nie da się wyrazić w asercjach języka C
No to spróbujmy pierwszy przykład:
/*@ ensures \result >= x && \result >= y;
ensures \result == x || \result == y;
*/
int max (int x, int y) { return (x > y) ? x : y; }
int max (int x, int y) {
int result = (x > y) ? x : y;
assert(result >= x && result >= y);
assert(result == x || result == y);
return result;
}
Udało się.
> Ktoś tego nawet używa.
> Być może w innym (hipotetycznym?) języku można by było to mieć w asercjach i bez dodatkowego narzędzia, ale jakoś ten język nie robi furory w tej branży. Więc jest tak, jak pokazałem.
>
> > > Wniosek jest taki, że czytaliśmy różne standardy.
> >
> > No to dajesz cytaty.
>
> Czyli nawet w tej warstwie nic nie rozumiesz.
> Cytowanie tych standardów jest zabronione. Prawa autorskie i takie tam.
,,Czy możemy w swoich pracach korzystać z fragmentów cudzych utworów, a w przypadku roszczeń zasłaniać się dozwolonym użytkiem? Odpowiedź jest prosta i brzmi: tak, jeżeli wykorzystanie fragmentu cudzego utworu, będzie uzasadnione jednym z celów bezpośrednio wskazanych w treści przepisów – „wyjaśnianie, polemika, analiza krytyczna lub naukowa, nauczanie lub prawa gatunku twórczości.”.''
https://prawo.gazetaprawna.pl/artykuly/1127356,opydo-kontra-uniwersal-cytat-czy-naruszenie-praw-autorskich.html
> Mógłbym ewentualnie podać numer paragrafu, to jest dozwolone. Ale wtedy musiałbyś sam sobie to otworzyć i przeczytać. No, ale skoro możesz sam otworzyć i przeczytać, to po co mam dawać cytaty? Ctrl-F, "assert", Enter.
To podaj chociaż tytuły dokumentów.
Ja zaglądałem tutaj:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
i było w dokumencie kilka użyć słowa "assert" w normalnym angielskim znaczeniu, a poza tym było jedynie wyjaśnienie pewnych charakterystyk definicji makra assert.
> No i serio - o co teraz walczysz, tak konkretnie?
Z błędnym użyciem słowa "asercja".
Technical Details
Message-ID:
<6ca46f89-2f05-450e-8a97-e05f4c5968f1@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.70.MISMATCH!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!o24no9675429qtl.0!news-out.google.com!d29ni1011qtg.1!nntp.google.com!o24no9675420qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<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>Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:6052:: with SMTP id k18mr16527971qtm.364.1567894718313; Sat, 07 Sep 2019 15:18:38 -0700 (PDT) X-Received: by 2002:a05:6214:1808:: with SMTP id o8mr10091537qvw.118.1567894718088; Sat, 07 Sep 2019 15:18:38 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.70.MISMATCH!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!o24no9675429qtl.0!news-out.google.com!d29ni1011qtg.1!nntp.google.com!o24no9675420qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Sat, 7 Sep 2019 15:18:37 -0700 (PDT) In-Reply-To: <fa84e279-9339-4ef2-84b4-4ed0058163e2@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.25.253.100; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 83.25.253.100 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> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <6ca46f89-2f05-450e-8a97-e05f4c5968f1@googlegroups.com> Subject: Re: Jak to robią w NASA From: godek.maciek@gmail.com Injection-Date: Sat, 07 Sep 2019 22:18:38 +0000 X-Received-Bytes: 7691 X-Received-Body-CRC: 1574438529 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit