-
Received: by 10.52.35.84 with SMTP id f20mr2099687vdj.3.1348864779211; Fri, 28 Sep
2012 13:39:39 -0700 (PDT)
Received: by 10.52.35.84 with SMTP id f20mr2099687vdj.3.1348864779211; Fri, 28 Sep
2012 13:39:39 -0700 (PDT)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin2!goblin.stu.neva.ru!feeder1.cambriumusenet.nl!feed.tweaknews.nl
!209.85.216.88.MISMATCH!l8no15804720qao.0!news-out.google.com!e10ni110767403qan
.0!nntp.google.com!l8no15804711qao.0!postnews.google.com!glegroupsg2000goo.goog
legroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Fri, 28 Sep 2012 13:39:39 -0700 (PDT)
In-Reply-To: <k44n4u$drv$1@node2.news.atman.pl>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.171.80.166;
posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
NNTP-Posting-Host: 46.171.80.166
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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8...@g...com>
Subject: Re: Dlaczego software to F35 jest pisany w C++ a nie w Ada
From: Maciej Sobczak <s...@g...com>
Injection-Date: Fri, 28 Sep 2012 20:39:39 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:199693
[ ukryj nagłówki ]W dniu piątek, 28 września 2012 19:35:26 UTC+2 użytkownik Sebastian Biały napisał:
> > Zastanów się najpierw *po co* istnieją bezpieczne języki.
>
> Po to aby przeciwdziałać błedom programisty badź specyfikacji w jak
> nalepszym stopniu.
No właśnie. Ze znanych mi języków Ada robi to lepiej, niż inni.
> > czyli do interakcji ze sterowanikami urządzeń albo wręcz do bezpośrednich odwołań
do pamięci
>
>
> *G* prawda. Sterowanie rakietą poprzez algorytmy nawigacyjne *NIE*
> polega na dziobaniu po gołej pamięci bądź zapalaniu bitów na porcie IO
> uC albo sprawdzanie czy w milionie miejsc nastapil overflow.
Te rzeczy są konieczne.
> 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?
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*. To dosyć niskopoziomowy problem. Z tego co rozumiem nt. Ariane 5,
to właśnie takie niskopoziomowe rozważania doprowadziły do decyzji o wyłączeniu
bezpiecznika. Gdyby tego nie można było zrobić, to (tak tylko przypuszczam, ale nie
mam podstaw zakładać, że rozważania wydajnościowe wyciągnęli sobie z czapki) program
nie spełniłby zadanych ograniczeń. Czyli nie byłoby go.
> 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?
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.
2. Piszemy wszystko w bezpiecznym języku i lokalnie wyłączamy bezpieczniki na
potrzeby niskopoziomowych interakcji (uwaga: upływ czasu też tu się wlicza).
Jaką niby wartość dodaną w dziedzinie bezpieczeństwa ma pierwsze rozwiązanie? Bo nie
widzę.
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. Ada jest bezpieczniejsza właśnie przez to, że to, co chciałbyś
zrobić w C, możesz dalej robić w Adzie.
> 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 koniecznością
interakcji z procesami fizycznymi, to Twoja klasa nie nadawałaby się do robienia
bezpiecznych systemów. Natomiast chamskie sztuczki w C++ *zawsze* są możliwe, bo do
dyzpozycji są wskaźniki i reinterpret_cast (oraz memcpy, itd.). Zapewniam Cię, że ten
sam programista, który wyłączył bezpieczniki w Adzie, poradziłby sobie z Twoją
niehakowalną klasą. W obu przypadkach ominięcie bezpiecznika można uznać za chamskie.
> Głupi C++ potrafił
> by lepiej zabezpieczyć
Nie, nie potrafiłby. Użycie systemu typów jako mechanizm ochronny miałby podobną
skuteczność i podobnie nie zatrzymałby zdeterminowanego programisty.
> przed radosną twórczością byłych programistów
> demek.
Jak już pisałem, nie znam nikogo z tego zespołu, więc nie wypowiadam się nt.
przeszłości zawodowej tych ludzi.
> Żałosne.
Na razie pokazałeś tylko, że nigdy nie widziałeś systemu sterowania. W szczególności
systemu sterowania czasu rzeczywistego.
> 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.
Język pomógłby, gdyby miał włączony bezpiecznik.
> > 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?
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.
Po prostu zaplątałeś się we własne gacie w tej dyskusji.
> > Proste?
>
> Jednak za bardzo to uprościłeś. Uprościłeś do systemów embedded
> zajmujących się *bezpośrednim* sterowaniem. To tylko pewien zbiór
> problemów. Niekompletny.
Tak. Ale wystarczy do wykazania, że nie masz racji odrzucając Adę w całości. Twoje
stwierdzenie, że Ada jest do niczego, było ogólne - mi wystarczy wskazać jeden
przykład, żeby Twój ogólny kwantyfikator wyłożyć.
Tym przykładem są... bezpieczne systemy. Ot, ironia.
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
Następne wpisy z tego wątku
- 28.09.12 23:32 Edek Pienkowski
- 29.09.12 00:19 Roman W
- 29.09.12 00:37 Edek Pienkowski
- 29.09.12 07:52 Sebastian Biały
- 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
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 Agregat z lodówki olej
- 2025-05-06 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-05-06 Warszawa => Senior Node.js Developer (doświadczenie z framework Nest.
- 2025-05-06 Dęblin => Node.js / Fullstack Developer <=
- 2025-05-06 Warszawa => IT Business Analyst (projects in the telco sector) <=
- 2025-05-06 Title: The Economics and Systemic Implications of Bitcoin: Cost, Scarcity, and the Institutional Race for Dominance .
- 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 <=