-
Data: 2012-10-27 16:53:32
Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
Od: Baranosiu <r...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Dnia 27.10.2012 Maciej Sobczak <s...@g...com> napisał/a:
> with Ada.Text_IO;
> use Ada.Text_IO;
>
> procedure Test is
>
> type My_Int is range 0 .. 1000;
No jak tak obetniesz, to Ci wyskoczy wyjątek, bo wystarczy że wynik
trafi powiedzmy w 1001, ale daj range Integer'First+1 .. Integer'Last-1;
i już wyjątek "fartem" nie wyskoczy pomimo przepełnienia. Po prostu
był błąd w specyfikacji Ada95 (a taka obowiązywała w momencie lotu
Ariane 5 :D) wg której 'range' było sprawdzane w momencie przypisania
i jeśli pomimo "przekręcenia się licznika" wynik "fartem" siedział w
zakresie zdefiniowanym przez 'range' to było ok.
Załóżmy, że sprzętowo Integer jest powiedzmy 8-bitowy (wartości od
-128 do 127, tak wiem, według specyfikacji musi być co najmniej
16-bitowy ze znakiem, ale chodzi o prostotę przykładu), wtedy jeśli
zrobisz
subtype MyType is Integer range -100 .. 100;
To wynik działania 2*100 nie wygeneruje wyjątku, bo to daje -56 (w
arytmetyce 8-bitowej ze znakiem) a więc mieści się w zakresie
-100..100. Ada95 niestety nie była odporna na takie rzeczy i tyle
(niedoprecyzowana specyfikacja).
Nie twierdzę, że podany przykład liczenia silni jest wzorem dobrego
programowania, czy super optymalną metodą numeryczną, chodziło mi o
podanie prostego przykładu, gdzie Ada95 nie ratowała "automagicznie"
(przez na przykład wygenerowanie wyjątku) gdy obliczenia wyskakiwały
poza zakres. Przy tego typu przepełnieniach bezpieczniki nie miały
znaczenia (chyba, że kompilator miał dodatkowe mechanizmy ich
wykrywania, ale to nie było wymagane przez specyfikację).
Następne wpisy z tego wątku
- 29.10.12 10:40 Maciej Sobczak
- 29.10.12 12:01 Baranosiu
- 29.10.12 15:56 Maciej Sobczak
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- 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??
Najnowsze wątki
- 2025-03-08 Cięcie wysokich tui
- 2025-03-08 Środa Wielkopolska => SAP FI/CO Konsultant wewnętrzny <=
- 2025-03-08 Prawo "gminne"
- 2025-03-08 Warszawa => Senior Recruiter <=
- 2025-03-08 Warszawa => Key Account Manager IT <=
- 2025-03-08 Najszybciej ładujące się samochody elektryczne
- 2025-03-07 AION przejety
- 2025-03-07 Warszawa => Data Engineer (Tech Leader) <=
- 2025-03-07 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-03-07 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-03-07 Gliwice => Business Development Manager - Network and Network Security
- 2025-03-07 Chiny-Kraków => Senior PHP Symfony Developer <=
- 2025-03-07 Gliwice => IT Expert (Network Systems area) <=
- 2025-03-07 Chiny-Kraków => Backend Developer (Node + Java) <=
- 2025-03-07 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS