eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAda Tutorial - w Instytucie Lotnictwa › Re: Ada Tutorial - w Instytucie Lotnictwa
  • X-Received: by 2002:ae9:c202:: with SMTP id j2mr7258257qkg.252.1557468220227; Thu, 09
    May 2019 23:03:40 -0700 (PDT)
    X-Received: by 2002:ae9:c202:: with SMTP id j2mr7258257qkg.252.1557468220227; Thu, 09
    May 2019 23:03:40 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.
    stu.neva.ru!t9no274653qtn.0!news-out.google.com!b26ni67qtp.1!nntp.google.com!t9
    no274646qtn.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-ma
    il
    Newsgroups: pl.comp.programming
    Date: Thu, 9 May 2019 23:03:39 -0700 (PDT)
    In-Reply-To: <qb1ju2$hsi$1@dont-email.me>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=165.225.84.71;
    posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
    NNTP-Posting-Host: 165.225.84.71
    References: <c...@g...com>
    <btKtE.25850$wd2.16727@fx24.fr7>
    <9...@g...com>
    <qasr5t$7i2$1@dont-email.me>
    <b...@g...com>
    <qav3qi$qv$1@dont-email.me>
    <0...@g...com>
    <qb1ju2$hsi$1@dont-email.me>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <d...@g...com>
    Subject: Re: Ada Tutorial - w Instytucie Lotnictwa
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Fri, 10 May 2019 06:03:40 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:213498
    [ ukryj nagłówki ]

    > Nie, tu padło jakieś hasło "C++ zachęca do pisania w stylu "write
    > once, debug endlessly"". Problem w tym że to jest walidne w każdym
    > języku a w c++ z roku na rok o dziwo coraz mniej.

    Tak. Oczywiście potrzeba, żeby programiści z roku na rok też robili postępy w tym,
    jak korzystają z tego języka.

    > > Niezupełnie. W takich systemach może być wymaganie na pokrycie testami każdej
    ścieżki.
    >
    > Nie. W typowym systemie nie wymaga się pokrycia *każdej* ścieżki, wymaga
    > się pokrycia określonego procentu.

    Co to jest "typowy system"? Bo w konteście całej ludzkiej aktywności
    programistycznej, w ogóle wymaganie weryfikacji czegokolwiek jest niszowe. A jak
    jesteśmy w niszach, to trudno mówić o "typowym systemie".
    W niszach są standardy i procesy. Nie spotkałem wymagań w procentach pokrycia.

    > Ba, wymaga się pokrycia nie tylko
    > ściezki wykonywania kodu, ale np. zbioru wartości danych zmiennych.

    Też w procentach?

    > Jeśli masz kilkaset tyś lini kodu to nie jest mozliwe pokrycie go w 100%

    No to może za dużo jest tych linii? Albo ktoś je napisał a dopiero potem zorientował
    się, że warto by zrobić jakąś weryfikację. To niedobrze.

    > Ludzie robiący systemy krytyczne używają specjalistycznych
    > narzędzie do oceny czy dany kod spełnia warunki czy nie, często są to
    > zabawki oparte o randomizacje. I prawie nigdy to nie jest 100%. 100% to
    > można sobie osiągnąć w kodzie do migania diodą czy przedsionkiem serca.

    Trochę się motasz. Przedsionek serca to system krytyczny. Miganie diodą też nim może
    być, zależy co to za dioda. A jeśli masz system, w którym ktoś napisał kilkaset tyś.
    linii a potem się zorientował, że nie może ich pokryć, to może jednak ten system od
    samego początku nie był tak bardzo krytyczny i tylko ludzie sobie dodają fasonu
    twierdząc, że jest.

    > > Jeżeli są wyjątki, to tych ścieżek nawet nie widać
    >
    > Mało kto patzy na kod.

    :-D

    W takim razie faktycznie mówimy o różnych niszach.

    > Do testowania pokrycia stosuje się automatykę.
    > Ona widzi wyjątki tak samo jak logjmp.

    Nie. Nie widzi.
    Cytat ze standardu do F-35 (bo tam zaczęliśmy):

    "
    AV Rule 208:
    C++ exceptions shall not be used (i.e. throw, catch and try shall not be used.)
    Rationale: Tool support is not adequate at this time.
    "

    Problem w tym, że nadal jest "not adequate". I bardzo możliwe, że zawsze tak będzie.

    > Zmartwie Cie. Zazwyczaj dostep do całego kodu nie jest potrzebny jeśli
    > *formalnie* coś udowodnisz w module w środku. To że przez funkcję
    > generyczną przelatują wyjąki i robią bałagan ze stanem czegośtam nie
    > jest absolutnie problemem funkcji generycznej tylko kodu na zewnątrz.

    Zmartwię Cię. Wymaganie pokrycia dotyczy kodu obiektowego a nie źródłowego. Na tym
    poziome nie ma już wiedzy o tym, który kawałek kodu był generyczny a który nie.

    > Znowu Cie zmartwie: możesz pokryć tą generyczną funkcję testami w 100% a
    > i tak ktoś rzuci wyjątkiem

    Nie rzuci, bo jest zakaz. Właśnie po to.

    > w przemyśle
    > nawet w aplikacjach do latania stosuje się śmiesze liczby w rodzaju 99%

    A dlaczego nie dało się pokryć tego brakującego 1%?

    > Zleceniodwaca może oczywiście chcieć 100% ale wtedy będzie czekał na
    > software przez 10 lat.

    F-35 próbują zrobić od 1992. 10 lat to by był megasukces. :-)

    > System w którym lata milion wyjątków jest do dupy. Ale narzekanie że
    > funkcja generyczna jest do dupy bo może przez nią przelecieć wyjątek
    > jest absurdalne.

    A kod obiektowy, w którym jest milion nieprzetestowanych rozgałęzień jest OK?

    > Oczywiscie że da się obronić, w końcu skoro nie można uzywać normalnych
    > technik programowania, jak wyjątki, to przeciez lepiej je koślawo
    > zaemulować.

    Ale ja uważam, że tam nie ma emulacji wyjątków. To jest inny mechanizm, zaaplikowany
    w innym celu. Dlatego da się go obronić, chociaż oczywiście przyznaję, że
    stylistycznie jest słaby.

    --
    Maciej Sobczak * http://www.inspirel.com

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: