eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingAda Tutorial - w Instytucie Lotnictwa › Re: Ada Tutorial - w Instytucie Lotnictwa
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.tel
    efonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!eternal-september
    .org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-fo
    r-mail
    From: heby <h...@p...onet.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Ada Tutorial - w Instytucie Lotnictwa
    Date: Wed, 8 May 2019 19:51:36 +0200
    Organization: A noiseless patient Spider
    Lines: 64
    Message-ID: <qav4vb$87q$1@dont-email.me>
    References: <c...@g...com>
    <btKtE.25850$wd2.16727@fx24.fr7>
    <9...@g...com>
    <qasr5t$7i2$1@dont-email.me>
    <0...@g...com>
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Injection-Date: Wed, 8 May 2019 17:51:40 -0000 (UTC)
    Injection-Info: reader02.eternal-september.org;
    posting-host="6a844a121edbbb0b387afcf48ad0ec76"; logging-data="8442";
    mail-complaints-to="a...@e...org";
    posting-account="U2FsdGVkX19WfwmRA0XO3yXhKI5MTyWG"
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
    Thunderbird/60.6.1
    Cancel-Lock: sha1:eUvIaMiDG4+s6/Qof6f9RydlNx0=
    In-Reply-To: <0...@g...com>
    Content-Language: en-US
    Xref: news-archive.icm.edu.pl pl.comp.programming:213489
    [ ukryj nagłówki ]

    On 08/05/2019 15:32, Wojciech Muła wrote:
    > Ale łapanie wyjątku to jest połowiczne rozwiązanie problemu. W szczególności,
    > jeśli wyjątek może pójść w dowolnym miejscu kodu (w tym przykładzie jest co
    > najmniej 13 miejsc, skąd może coś polecieć), to jaki będzie stan obiektu na
    > rzecz którego wołano metodę?

    Taki w jakim paradygmacie napisałeś kod. Mogłeś napisać pure function,
    mogłeś napisać kod z oparciem o transakcje z RAII, mogłeś totalnie sp...
    i napisać kod bazujacy na sideeffectach globalnych. Przecież jest wybór
    i akurat C++ pozwala napisać kod cholernie bezpiecznie i cholernie
    niebezpiecznie na raz. Ba, lisp też i ada też. To się załatwia code
    review i kilkoma developerami w zespole którzy potrafią zrozumieć na
    pisać kod aby nie trzeba było go debugować "endlessly" a to czy to C++
    nie jest jakoś specjalnie istotne bo każdy język jest Turing-complete
    wiec poziom spieprzenia można osiągnąć identyczny.

    Przedstawiona funkcja jest generyczna. Jeśli by ta funkcja miała
    dodatkowo zajmować się ogarnianiem stanu swoich argumentów wejściowych i
    łapaniem bilionów detalicznych exceptionów a nastepnie szukaniem w
    szklanej kuli co z nimi zrobić to niestety ale taki programista nie ma
    racji bytu w dowolnej branży bo to najzwyczajniej spieprzony kod jest i
    to w najgorszy możliwy sposób.

    > Czy np. taki obiekt można bezpiecznie używać
    > dalej (stan wewnętrzny pozostał spójny)?

    Nigdy tego nie wiesz. Ale AKURAT ten znienawidzony C++ ma całkiem
    przyzwoite metody ograniczania działania sideeefectów jak scope i RAII.
    Po ich uzyciu jestem w stanie kontrolować sideeefecty znacząco wygodniej
    niż w innych językach imperatywnych, w sytuacjach krytycznych. Tylko że
    można też pisać kod funkcyjnie i tego nie robić. Masz wybór.

    No tak, zapomniałem że standarny produkcji automatyki do dildo
    zabraniają używania RAII, pętli while, tabulacji i nieparzystych
    wartości inta.

    Ariane pokazało że wybranie Ady nie powoduje że ludzie piszą kod
    bezpiecznie, dalej pisali w asemblerze. Nie wybór języka jest istotny
    tylko programisty. Wybrali hackerów, mają kupę a nie bezpieczny kod bez
    względu na koszerność języka.

    > Albo chociaż wywołać destruktor?

    Zawsze wywoła destruktor, *ZAWSZE* za wyjątkiem przypadku buga w
    kompilatorze. Chyba że lubisz longjmp. Widziałem już w "krytycznie
    bezpiecznym kodzie" wiec idiotów nie brakuje.

    > A co jeśli wyjątek leci z miejsca, o którym wierzyłeś, że nigdy nie poleci
    > i jednak dostajesz terminate?

    To wykrywam to w unit testach i poprawiam buga. Ostatecznie ktos umiera
    bo mu rozrusznik nie zadziałał. Boeing nie ma z tym dzisiaj jak widać
    problemu, Toyota nie miała ze swoim pedłem gazu itd itp. Najzwyczajniej
    nie da się ogarnąć systemu mającego kilka tyś lini kodu formalnie a
    pojedyncze przypadki kiedy się to udało, jak L4, są raczej
    potwierdzeniem że wymaga to nadludzkiego wysiłku. A zakładanie że pisze
    się kod bez bugów jest absurdem. Jesteśmy zbudowani z białka i nic na to
    nie poradzimy choć potrafimy to znacząco poprawiać używając inżynierii
    (o)programowania znanej od lat co najmniej 60. Ani Toyota ani Ariane nie
    są przykładem używania tych technik bo w obu wypadkach można było je
    zasymulować wcześniej invitro.

    A co sie stanie jak w ten kod trafi meteoryt z Neptuna? Jesteś na to
    przygotowany?

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: