-
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?
Następne wpisy z tego wątku
- 09.05.19 08:04 Maciej Sobczak
- 09.05.19 08:21 Maciej Sobczak
- 09.05.19 11:32 Roman Tyczka
- 09.05.19 18:19 heby
- 09.05.19 18:34 heby
- 09.05.19 19:29 Wojciech Muła
- 10.05.19 08:03 Maciej Sobczak
- 10.05.19 08:21 Maciej Sobczak
- 10.05.19 20:33 heby
- 10.05.19 21:00 heby
- 13.05.19 08:29 Maciej Sobczak
- 13.05.19 08:40 Maciej Sobczak
- 13.05.19 09:27 AK
- 13.05.19 12:05 g...@g...com
- 14.05.19 00:53 AK
Najnowsze wątki z tej grupy
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
Najnowsze wątki
- 2024-05-05 Komin do wiaty
- 2024-05-04 Bonusowe pytanie rozliczenie sie z elektrownia - fotowoltaika.
- 2024-05-04 Ujawnienie porady prawnej prokuraturze
- 2024-05-04 Jaką kamerkę samochodową polecacie?
- 2024-05-04 Warszawa => Spedytor międzynarodowy <=
- 2024-05-04 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-04 Warszawa => Inżynier DevOps (projekt JP) <=
- 2024-05-04 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-05-04 Łódź => Business Development Manager - obszar bezpieczeństwa IT <=
- 2024-05-04 Warszawa => Interactive/Experience Designer <=
- 2024-05-04 Berlin => IT Systems Administrator and Customer Support Engineer <=
- 2024-05-04 Warszawa => Mid IT Recruiter <=
- 2024-05-04 Odpowiedzialność PORTALU za reklamy
- 2024-05-04 Lunar Rover był elektrykiem. Ważył 35 kg Zasięg 80 km Na Księżycu w 1971 r.
- 2024-05-04 Marki => ERP Implementer <=