eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak to robią w NASARe: Jak to robią w NASA
  • X-Received: by 2002:a37:708:: with SMTP id 8mr15334983qkh.273.1567583591586; 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: news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin3!goblin.stu.neva.r
    u!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!o24no8825550q
    tl.0!news-out.google.com!c11ni25qtp.0!nntp.google.com!o24no8825544qtl.0!postnew
    s.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: <1...@g...com>
    Complaints-To: g...@g...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>
    <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>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <a...@g...com>
    Subject: Re: Jak to robią w NASA
    From: g...@g...com
    Injection-Date: Wed, 04 Sep 2019 07:53:11 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 81
    Xref: news-archive.icm.edu.pl pl.comp.programming:213930
    [ ukryj nagłówki ]

    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?

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: