-
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
- 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
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-01 Pijani kierowcy
- 2024-12-01 "Chciałem zamówić kurs tym"
- 2024-11-30 Windykatorzy ścigają spadkobierców z mandat nieboszczyka za przekroczenie prędkości???
- 2024-11-30 Łódź => Technical Artist <=
- 2024-11-30 Lublin => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-30 Warszawa => Microsoft Dynamics 365 Business Central Developer <=
- 2024-11-30 Bieruń => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-30 Zielona Góra => Senior PHP Symfony Developer <=
- 2024-11-30 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-30 Lublin => Spedytor międzynarodowy <=
- 2024-11-30 Warszawa => Mid IT Recruiter <=
- 2024-11-30 Warszawa => Fullstack Developer <=
- 2024-11-30 Żerniki => Dyspozytor Międzynarodowy <=
- 2024-11-30 Warszawa => System Architect (background deweloperski w Java) <=
- 2024-11-30 Katowice => Key Account Manager (ERP) <=