-
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.
Następne wpisy z tego wątku
- 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
- 14.05.19 08:51 g...@g...com
- 14.05.19 09:55 Maciej Sobczak
- 14.05.19 15:25 Adam M
- 15.05.19 08:09 Maciej Sobczak
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- 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
Najnowsze wątki
- 2025-01-21 Zgromadzenie użytkowników pojazdów :-)
- 2025-01-21 bateria na żądanie
- 2025-01-21 Warszawa => IT Business Analyst <=
- 2025-01-21 Warszawa => IT Assets Manager <=
- 2025-01-21 Warszawa => Presales / Inżynier Wsparcia Technicznego IT <=
- 2025-01-20 Białystok => Delphi Programmer <=
- 2025-01-20 Białystok => User Experience Designer <=
- 2025-01-20 Katowice => UX Designer <=
- 2025-01-20 Wrocław => Specjalista ds. Sprzedaży <=
- 2025-01-20 Białystok => Solution Architect (Java background) <=
- 2025-01-20 Szczecin => Senior Field Sales (system ERP) <=
- 2025-01-21 e-doręczenia
- 2025-01-20 Zbieranie podpisów przed sklepem
- 2025-01-20 cenzura internetu
- 2025-01-20 ulaskawienie