eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAda Tutorial - w Instytucie Lotnictwa › Re: Ada Tutorial - w Instytucie Lotnictwa
  • Data: 2019-05-09 18:19:11
    Temat: Re: Ada Tutorial - w Instytucie Lotnictwa
    Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 09/05/2019 08:04, Maciej Sobczak wrote:
    > Myślałem, że narzekamy na standard kodowania.

    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.

    > Zakaz używania wyjątków jest dosyć uniwersalny, niezależny od języka.
    >>> Często sprowadza się to do pokazania użytkownikowi komunikatu o błędzie.
    >> Nie wiem co to znaczy "często", ale u mnie raczej nie.>
    > Interesujące. Ale to może (!) oznaczać, że obsługujesz wyjątki relatywnie blisko
    ich wystąpienia.

    Może, ale może też oznaczać że nie mam wyświetlacza i wiem po co je rzucam.

    >> return a() && b() && c() && d() ... ;
    >> To jest emulacja wyjątku w środowisku gdzie wyjątków ma nie być. Wyszło
    >> jak zwykle. Parcie na systemy ograniczone wcale nie generuje lepszego
    >> jakościowo kodu, co najwyżej generuje kod który lepiej ogarnia się
    >> formalną weryfikacją a i to jest mocno naciągane.
    > 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. Ba, wymaga się pokrycia nie tylko
    ściezki wykonywania kodu, ale np. zbioru wartości danych zmiennych.

    Jeśli masz kilkaset tyś lini kodu to nie jest mozliwe pokrycie go w 100%
    bo bywa że liczba stanów wejściwych i ich kobinacji przekracza zdrowy
    rozsądek. 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.

    > Jeżeli są wyjątki, to tych ścieżek nawet nie widać

    Mało kto patzy na kod. Do testowania pokrycia stosuje się automatykę.
    Ona widzi wyjątki tak samo jak logjmp.

    > a rozstrzygnięcie automatyczne ile ich jest i gdzie może wymagać dostępu do całego
    kodu i nawet wtedy może być nierealne.

    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. O
    to tu chodzi: przedstawiony przykład przez Wojtka jest kompletnie
    pozbawiony sensu, funkcje generyczne nigdy, przenigdy, nie powinny
    zajmować się sytuacjami zwiazanymi ze światem zewnątrznym a już na pewno
    nie obsługiwać cudze sideeffecty.

    Nie stosuje wyjątków w praktyce. Ale stosuje dość intensywne testowanie
    w praktyce. Gdybym miał tam dorzucić wyjątki jakoś niespecjalnie by mnie
    to zmartwiło, co najwyżej powiększyło zbiór testów.

    > Natomiast użycie iloczynu logicznego tak jak powyżej, chociaż wątpliwe
    stylistycznie, jest jednak lokalne
    >- tzn. analizę wszystkich ścieżek da się zrobić w ramach tylko tego
    wyrażenia. Wtedy znacznie łatwiej spełnić wymaganie pokrycia testami.

    Znowu Cie zmartwie: możesz pokryć tą generyczną funkcję testami w 100% a
    i tak ktoś rzuci wyjątkiem który przez nią przeleci inną ścieżką,
    podobnie scheduler preemptive może zmienić stan globalny albo meteoryt z
    Neptuna puknąć w serwer. Ogólnie można zbadać *wszystkie* ściezki, ale
    obawiam się że w praktyce to jest tylko akademicki pogląd, w przemyśle
    nawet w aplikacjach do latania stosuje się śmiesze liczby w rodzaju 99%
    itp. które mają związek z realnym poglądem na świat i doświadczeniem z
    faktycznymi możliwościami ogarniania kodu przez białko.

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

    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.

    > Dlatego nie zgadzam się z określeniem "wyszło jak zwykle". Ten przykład da się
    obronić. Stylistycznie słaby (subiektywnie), ale broni się na poziomie procesu.

    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ć. Tak samo jak miszczofie C żałośnie emulują RAII i uważają to
    za punkt honoru.

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: