-
Data: 2012-09-29 07:52:21
Temat: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
Od: Sebastian Biały <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 2012-09-28 22:39, Maciej Sobczak wrote:
>> Sterowanie
>> rakietą polega na realizacji (zapewne) statycznego pamieciowo zadania
>> matematycznego.
> Tak by było, gdyby rakiety latały tylko na papierze.
> Tymczasem one latają w świecie rzeczywistym
> i oprócz rozwiązywania zadań matematycznych muszą wziąć
> na klatę różne upierdliwości tego rzeczywistego świata
>, takie jak np. upływ czasu. Czy hasło "system czasu rzeczywistego" coś Ci mówi?
Więcej niż myslisz. I musze przyznać, że gdyby software ariane był
"wyżyłowany co do cykla" to programiści nie powinni się zajmowac więcej
programowaniem. Wyłączanie (bo można!) systemów bezpieczeństwa żeby
zdobyć pare cykli więcej ...
> Pisałem wcześniej o interakcjach z procesami fizycznymi i cały czas przy tym
jesteśmy.
> Upływ czasu jest procesem fizycznym, z którym interakcje polegają nie na tym
>, że się grzebie po portach I/O, ale na tym, że program ma być w określonych
> punktach *na czas*.
Jeśli więc wymagana jest szybkośc to musisz pozegnać bezpieczeństwo. Oby
dwóch rzeczy nic nie zapewnia. Czasem można za free dostać
bezpieczeństwo statyczne, ale to potrafi byle C++.
> To dosyć niskopoziomowy problem.
Nawigacja nie jest problemem niskopoziomowym. Może byc problemem
wydajności obliczeń, ale nie niskopoziomowym.
>> A jakiś drugorzędny duperelek zajmuje się częscią
>> łaczącą wyniki z elektroniką.
> Drugorzędny? Duperelek? I w czym ten duperelek jest napisany, co?
W czymś *prostym* co pozwoli na formalną weryfikacje.
> Do rozważenia są dwie alternatywy:
> 1. Piszemy w bezpiecznym języku i łączymy go z modułami (tzw. duperelkami)
> napisanymi w niebezpiecznym języku, np. w C albo w asm.
Oczywiscie - sterowanie PWM przepustnicą zdecydowanie lepiej realizować
specjalizowanym kawałkiem elektroniki niż prosto z algorytmu nawigacji
dziobać porty I/O.
> 2. Piszemy wszystko w bezpiecznym języku i lokalnie wyłączamy bezpieczniki
> na potrzeby niskopoziomowych interakcji (uwaga: upływ czasu też tu się wlicza).
Czyli lokalnie nie jest bezpieczny. I tyle było z bezpieczeństwa.
> Jaką niby wartość dodaną w dziedzinie bezpieczeństwa ma pierwsze rozwiązanie?
> Bo nie widzę.
a) możliwy arbitraż separowany hardwareowo przed wykonaniem poleceń
b) możliwa implementacja asercji/constrains bez wiedzy algorytmu (np.
przepustnica otwarta więcej niż 90% przez 1 sek oznacza błąd, odpalam
procedurę awaryjną)
c) możliwa formalna weryfikacja fragmentów systemu
> Natomiast w drugim przypadku widzę wartość dodaną w postaci jednolitości
rozwiązania
>, co ułatwia znalezienie i zastosowanie chociażby narzędzi do analizy statycznej.
> Znam narzędzia, które radzą sobie z jednorodnym kodem, natomiast nie znam takich
>, które sensownie analizują zlepek modułów napisanych w kilku językach.
> Dostępność narzędzi to kolejny punkt na drodze do większego bezpieczeństwa
> i ten drugi wariant daje tu większe możliwości.
Małe duperelki wykonawcze mozna łatwiej formalnie zweryfikować niż
wielką kupę kodu. Rozbicie modułów softwareowych na kawałki hardwareowe
i ich osobna weryfikacja pozawala zminimalizować błedy. I powiem tak:
EDA jest o lata świetlne przez software w formalnej weryfikacji kodu.
> Ada jest bezpieczniejsza właśnie przez to, że to
>, co chciałbyś zrobić w C, możesz dalej robić w Adzie.
:D True true ...
>> Prawdopodobnie dałbym osobiście radę naklepać bezpieczną klasę do
>> konwersji w C++ która dzięki prostym zabiegom *uniemożliwiła* by
>> programiście jej nie-użycie bez chamskich sztuczek.
> Jeśli ta niemożność uniemożliwiłaby spełnienie oczekiwań związanych
... z bezpieczeństwem Ady to .... wyłaczmy bezpieczniki !
> Natomiast chamskie sztuczki w C++ *zawsze* są możliwe, bo do dyzpozycji
> są wskaźniki i reinterpret_cast (oraz memcpy, itd.).
Zupełnie jak w Adzie? Czekaj czekaj czy Ada jest nadzbiorem C++ w sensie
niskopoziomowego gówna? OMG!
> Zapewniam Cię, że ten sam programista, który wyłączył bezpieczniki w Adzie
>, poradziłby sobie z Twoją niehakowalną klasą.
A-ha ! Czyli oba są niebezpieczne !
> W obu przypadkach ominięcie bezpiecznika można uznać za chamskie.
I możliwe. Game over.
> Na razie pokazałeś tylko, że nigdy nie widziałeś systemu sterowania.
Telepatia jest niezdrowa.
> W szczególności systemu sterowania czasu rzeczywistego.
Może nie widziałem, ale jakieś tam napisałem.
>> Tutaj *nie* było niskiego poziomu. Jesli zaś ktoś matematykę i overflow
>> implementuje ręcznie na bitach jak w przytoczonym przykładzie to jest
>> idiotą.
>
> Ten program był poprawny, bo był przeznaczony dla poprzedniego modelu rakiety
> i tam wpisywał się w zadane warunki techniczne. Nie widzę powodu, dla którego
> można by tego programistę nazwać idiotą - napisał program w zgodzie z danymi.
> Natomiast to, że ten moduł bezrefleksyjnie użyto w nowszej rakiecie, w której
> warunki techniczne były już inne, to błąd wdrożeniowy. Ktoś wykorzystał słabsze
> cegły do budowy większego budynku - to nie wykonawca cegieł jest tu idiotą,
> tylko ten koleś, który wybrał złe cegły.
Bo wszystko Panie, to wina tych kolesi od kasy. Jezyk bezpieczny wszak był.
> Język pomógłby, gdyby miał włączony bezpiecznik.
Gdyby.
>>> Otóż żeby dany język w ogóle się do tego nadawał
>>> , to musi udostępnić wszystkie narzędzia z rodziny
>>> memset, memcpy, reinterpret_cast oraz link z dowolnym symbolem.
>> Żadna z tych funkcji nie jest wymagana w liczeniu kąta otwarcia
>> przepustnicy lewej dyszy.
> Co najmniej jedna z nich jest wymagana, żeby ta dysza faktycznie sie otworzyła.
Bez tych ficzerów rakieta poleci tylko na papierze.
>
>> Te narzędzia na szczęscie udostepnia asm.
>
> Rozumiem - czyli bezpieczne rozwiązanie to połączenie bezpiecznego języka z asm,
tak?
To oznacza że Ada pozwala na to samo co ASM. Jak widać w przykładzie
powyżej pozwala na dziobanie po bitach wektora i ręczną obsługę overflow
- zupełnie jak asm. I w końcu ktos wpadl na pomysł: Skoro mamy Adę to
możemy *bezpiecznie* s..dolić kod. I s..dolił.
> Pomińmy fakt, że już samo łączenie języków to jazda bez pasów dokładnie
> równoważna reinterpret_cast, bo ze względu na rozdzielność systemu typów
> właśnie to trzeba zrobić na granicy języków.
Łączenie językow przez hardware.
> Po prostu zaplątałeś się we własne gacie w tej dyskusji.
To tylko takie twoje wrażenie. Wymagane było by jednak uzycie
bezpiecznego systemu do oceny, na przykład przez arbitraż .... oh wait.
> Tak. Ale wystarczy do wykazania, że nie masz racji odrzucając Adę w całości.
Niczego nie odrzucam. Prowadzę tylko mała krucjatę wobez religijego
traktowania marnego języka jako zbawcy ludzości albo co najmniej
systemów sterowania. Prawda jest taka że nie posiadamy *żadnego*
bezpiecznego języka (może poza lispem :).
> Twoje stwierdzenie, że Ada jest do niczego
... na szczęscie nie ma miejsca.
Następne wpisy z tego wątku
- 29.09.12 10:33 Edek Pienkowski
- 29.09.12 11:22 Marek Borowski
- 29.09.12 11:45 Sebastian Biały
- 29.09.12 12:23 AK
- 29.09.12 12:35 Marek Borowski
- 29.09.12 13:53 Roman W
- 29.09.12 14:07 Roman W
- 30.09.12 23:32 Maciej Sobczak
- 30.09.12 23:52 Maciej Sobczak
- 01.10.12 10:04 Edek Pienkowski
- 01.10.12 11:21 Edek Pienkowski
- 01.10.12 19:31 Sebastian Biały
- 01.10.12 23:08 Maciej Sobczak
- 01.10.12 23:24 Sebastian Biały
- 01.10.12 23:29 Roman W
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-20 huta ruszyla
- 2025-01-20 piece wodorowe
- 2025-01-20 Lublin => Programista Delphi <=
- 2025-01-20 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-20 Mińsk Mazowiecki => Area Sales Manager OZE <=
- 2025-01-20 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-01-19 Test - nie czytać
- 2025-01-19 qqqq
- 2025-01-19 Tauron przysyła aneks
- 2025-01-19 Nowa ładowarka Moya a Twizy -)
- 2025-01-18 Power BANK z ładowaniem przelotowym robi PRZERWY
- 2025-01-18 Pomoc dla Filipa ;)
- 2025-01-18 znowu kradno i sie nie dzielo
- 2025-01-18 Zieloni oszuchiści
- 2025-01-18 Zielonka => Specjalista ds. public relations <=