🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #215972

Re: Jak to robią w NASA

#215972
From: godek.maciek
Date: Wed, 04 Sep 2019 07:53
53 lines
4670 bytes
W dniu środa, 4 września 2019 09:31:05 UTC+2 użytkownik Maciej Sobczak napisał:
> > > Tak. Można stwierdzić, że w ogóle nie powinno być żadnych asercji w kodzie programu, bo w systemie krytycznym one nie pełnią tam żadnej sensownej roli. 
> > 
> > Co za bzdura.
> > 
> > Równie dobrze mógłbyś powiedzieć, że w kodzie programu nie powinno być żadnych komentarzy, bo w systemie krytycznym one nie pełnią tam żadnej sensownej roli.
> 
> Ale nie równie dobrze, bo komentarze są pożyteczne.

Asercje też są pożyteczne.
Asercje są formą komentarza, który dodatkowo można zweryfikować.

> Natomiast asercje to tzw. dead code. Z założenia. To jest kod źródłowy, który pozostawia ślad w kodzie maszynowym, ale którego nie da się pokryć testami.

Asercja to postawa propozycjonalna.
Możesz sobie napisać
#define assert(x) do {} while(0)
i nie masz śladu w kodzie maszynowym.

> Powtórzę dla skupienia: MISRA-C i AUTOSAR w ogóle nie poruszają tematu asercji. Co biorąc pod uwagę ilość innych rzeczy, które poruszają, jest co najmniej interesujące.
> Otóż rozwiązanie tej zagadki jest bardzo proste: w kodzie krytycznym asercji się nie używa. Bo one stoją w konflikcie z innymi celami, które należy osiągnąć.
> 
> > Albo że funkcje i zmienne mogą być nazwane byle jak, bo w systemie krytycznym one nie pełnią tam żadnej sensownej roli.
> 
> Dryfujesz. Komentarze i nazwy są istotne dla czytelności.

Asercje też są istotne dla czytelności.
Po to, żeby programista wiedział:
"aha, ten a ten warunek jest (ma być) tutaj spełniony."
Co może być przydatne przy rozumieniu kodu, jego refaktoryzacji i debugowaniu.

> Bo jest jeszcze taka możliwość, że potraktujesz asercje jak komentarz. To bardzo dobry pomysł, ale komentarze piszemy w komentarzach.

Co jest kiepskim pomysłem, bo błędnego komentarza nie wykryjesz za pomocą narzędzia, a błędną asercję możesz.

> > Wygląda na to, że wśród programistów szeroko jest rozpowszechnione błędne przekonanie, że asercja to "sprawdzenie czegoś w runtimie".
> 
> Dla pewności sprawdziłem jak to opisuje standard C. Otóż właśnie dokładnie tak.

Asercja nie jest pojęciem wprowadzonym przez standard C.

> Oczywiście możesz sobie wyobrazić (albo nawet mieć) narzędzie, któro statycznie skanuje kod i sprawdza asercje (efektywnie traktując je jako static_assert), ale takie narzędzie potrafi też wyłuskać adnotacje z komentarzy. 

?

> Więc nadal twierdzę, że te asercje nie powinny być w kodzie.

No to nie dość, że sam błędnie rozumiesz, to jeszcze próbujesz to swoje błędne rozumienie promować.

> Natomiast ja chętnie stosuję asercje w skryptach testowych. Nie chce mi się używać wydumanych frameworków do unit testów a w testach asercje pasują idealnie.
> Ale nie w kodzie.

A skrypty testowe to nie kod?
Technical Details
Message-ID: <a0c6a1c7-e8bf-4079-b5f2-d5dcec42f7d9@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!o24no8825550qtl.0!news-out.google.com!c11ni25qtp.0!nntp.google.com!o24no8825544qtl.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>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:620a:122c:: with SMTP id v12mr11377108qkj.359.1567583591763;        Wed, 04 Sep 2019 00:53:11 -0700 (PDT)
X-Received: by 2002:a37:708:: with SMTP id 8mr15334983qkh.273.1567583591586; Wed, 04 Sep 2019 00:53:11 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin3!goblin.stu.neva.ru!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!o24no8825550qtl.0!news-out.google.com!c11ni25qtp.0!nntp.google.com!o24no8825544qtl.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Wed, 4 Sep 2019 00:53:11 -0700 (PDT)
In-Reply-To: <1a2f7fe3-5745-40b2-9fd6-868fca99dea5@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.192.68.153; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 213.192.68.153
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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a0c6a1c7-e8bf-4079-b5f2-d5dcec42f7d9@googlegroups.com>
Subject: Re: Jak to robią w NASA
From: godek.maciek@gmail.com
Injection-Date: Wed, 04 Sep 2019 07:53:11 +0000
Lines: 81
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit