-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Sebastian Biały <h...@p...onet.pl>
Newsgroups: pl.comp.programming
Subject: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
Date: Sat, 29 Sep 2012 07:52:21 +0200
Organization: ATMAN - ATM S.A.
Lines: 162
Message-ID: <k462an$knn$1@node2.news.atman.pl>
References: <3...@g...com>
<3...@g...com>
<k3idkc$ne3$1@node2.news.atman.pl>
<9...@g...com>
<k3spfr$46s$1@node2.news.atman.pl>
<8...@g...com>
<k3vo9p$u74$1@node2.news.atman.pl>
<f...@g...com>
<k3vuc2$4cl$1@node2.news.atman.pl>
<a...@g...com>
<k420pf$sch$1@node2.news.atman.pl>
<d...@g...com>
<k44n4u$drv$1@node2.news.atman.pl>
<8...@g...com>
NNTP-Posting-Host: 83.142.222.167
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1348897943 21239 83.142.222.167 (29 Sep 2012 05:52:23
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sat, 29 Sep 2012 05:52:23 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.16)
Gecko/20101125 Thunderbird/3.0.11
In-Reply-To: <8...@g...com>
Xref: news-archive.icm.edu.pl pl.comp.programming:199697
[ ukryj 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
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- 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)
Najnowsze wątki
- 2025-05-06 SMSy
- 2025-05-06 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2025-05-06 Warszawa => Strategic Account Manager <=
- 2025-05-06 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-05-06 Gdynia => ML Ops Engineer <=
- 2025-05-06 Drobne umowy o dzielo z przeniesieniem praw autorskich
- 2025-05-06 wydobywanie Bitcoinów jest aktualnie zajęciem po prostu nieopłacalnym. Jak wynika z opublikowanych danych, średni koszt wygenerowania jednego Bitcoina wynosi ok. 137 tysięcy dolarów.
- 2025-05-06 Join Bitcoin Blockchain Nonce Global University
- 2025-05-06 Gdynia => ML Ops Engineer <=
- 2025-05-06 Warszawa => IT Recruiter <=
- 2025-05-06 Warszawa => Specjalista wsparcia IT - analiza techniczna sprzętu IT <
- 2025-05-06 Warszawa => Tableau UX Designer <=
- 2025-05-06 Protoków komunikacyjny do urządzenia pomiarowego
- 2025-05-06 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-05-06 Warszawa => Key Account Manager IT <=