🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #215555

Re: Ada Tutorial - w Instytucie Lotnictwa

#215555
From: heby
Date: Wed, 08 May 2019 17:51
64 lines
4839 bytes
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?
Technical Details
Message-ID: <qav4vb$87q$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.telefonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
References: <c1760262-b4a3-44fe-a99e-2fa16be86820@googlegroups.com> <btKtE.25850$wd2.16727@fx24.fr7> <9537dd39-0164-41a6-803b-393b77b4a701@googlegroups.com> <qasr5t$7i2$1@dont-email.me> <0eb77d44-3b22-41cb-8339-2346fe0b6c4d@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.telefonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.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: <c1760262-b4a3-44fe-a99e-2fa16be86820@googlegroups.com> <btKtE.25850$wd2.16727@fx24.fr7> <9537dd39-0164-41a6-803b-393b77b4a701@googlegroups.com> <qasr5t$7i2$1@dont-email.me> <0eb77d44-3b22-41cb-8339-2346fe0b6c4d@googlegroups.com>
Mime-Version: 1.0
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="abuse@eternal-september.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: <0eb77d44-3b22-41cb-8339-2346fe0b6c4d@googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit