-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net
!2.eu.feeder.erje.net!proxad.net!feeder1-2.proxad.net!cleanfeed2-b.proxad.net!n
nrp4-2.free.fr!not-for-mail
From: Mateusz Viste <m...@w...tell>
Subject: Re: Jak to robią w NASA
Newsgroups: pl.comp.programming
References: <1ua4wui506zbf$.dlg@tyczka.com> <qkecqc$c03$1@news.icm.edu.pl>
<3...@g...com>
<qkicu0$knb$1@gioia.aioe.org>
<4...@g...com>
<qkjqqi$1b59$1@gioia.aioe.org>
<0...@g...com>
<r...@t...com>
<e...@g...com>
<1...@g...com>
<1...@g...com>
<a...@g...com>
<qkoqr3$1eec$1@gioia.aioe.org>
<a...@g...com>
<8...@n...net>
<1...@g...com>
<qksqus$1h0q$1@gioia.aioe.org>
<3...@g...com>
<5d7219bc$0$6446$426a74cc@news.free.fr>
<0...@g...com>
User-Agent: Pan/0.145 (Duplicitous mercenary valetism; d7e168a git.gnome.org/pan2)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Date: 06 Sep 2019 10:57:16 GMT
Lines: 52
Message-ID: <5d723b8c$0$6468$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 06 Sep 2019 12:57:16 CEST
NNTP-Posting-Host: 82.64.0.151
X-Trace: 1567767436 news-2.free.fr 6468 82.64.0.151:55624
X-Complaints-To: a...@p...net
Xref: news-archive.icm.edu.pl pl.comp.programming:213954
[ ukryj nagłówki ]On Fri, 06 Sep 2019 03:06:02 -0700, M.M. wrote:
> Oczywiście C++ ma wady, ale te wady wynikają ani z języka, ani z
> narzędzi, ani z bibliotek, lecz z ogromnej swobody programowania jaką
> daje język C++. Jeśli, szczególnie mniej doświadczony, programista
> dostanie wiele swobody, to niewykluczone że użyje jej przeciwko
> bezpieczeństwu systemu.
W zupełności się zgadzam, dodam od siebie tylko to: język C++ rośnie cały
czas. To bogactwo językowe, postrzegane przez wielu jako zaleta,
faktycznie pozwala w wielu przypadkach nieco ułatwić pracę. Problem w
tym, że w praktyce mało który programista panuje nad całością języka -
pewnych rzeczy nie wie, albo myśli że wie i kod działa mu z przypadku,
albo kiedyś wiedział ale zapomniał bo mało używał. No i oczywiście zbiór
wiadomości które programista A posiada, mało kiedy nakłada się na to, co
wie programista B. W jakiejkolwiek pracy zespołowej to może szybko być
poważnym problemem, bo zamiast rozwiązywać biznesowe problemy,
programiści głowią się nad tym, "co kolega miał na myśli".
To jest główny powód, dla którego ja sam staram ograniczać się do C89.
Czasem zdarzy mi się sięgnąć po C99 albo jakieś rozszerzenie GNU, ale
bardzo niechętnie i wyłącznie w przypadkach kiedy w oczywisty sposób
pozwoli to ograniczyć koszty.
Oczywiście można spierać się, czy taki ogranicznik jest rolą języka, czy
może reguł projektowych, czy też innych wewnętrznych dyrektyw.
> W C++ np. nie ma obowiązku inicjowania zmiennych przy deklaracji, a
> domyślnie są inicjowane tylko w określonych sytuacjach. Jeśli ktoś w
> krytycznych systemach zbagatelizuje ten problem, uzna np. że jego kod
> jest na tyle dobry, że nie będzie odczytów przed inicjacją, to cóż...
Akurat ten przykład jest może nie do końca trafiony, bo błąd o którym
piszesz zostanie wykryty przez każdą statyczną analizę (nie potrzeba
nawet do tego specjalnego analizatora - zarówno gcc jak i clang
ostrzegają o tym). No chyba, że ktoś kompiluje bez żadnej diagnostyki...
No ale to już mówimy o ostro patologicznych przypadkach.
Wracając do tematu bezpieczeństwa C/C++, to z pewnością istnieją znacznie
bezpieczniejsze języki (np. w PHP ciężko wykonać SEGFAULT...). Problem w
tym, że ktoś piszący w C/C++ z reguły poszukuje nie tylko rozwiązania
danego problemu, ale oczekuje także osiągów - gdyby liczyło się wyłącznie
"bezpieczeństwo", to pisalibyśmy w jakiejś ewolucji QuickBasica :)
Jeśli wymagamy by nasz kod działał możliwie najszybciej, to trzeba godzić
się z tym, że pracujemy niejako na otwartym sercu. Jedyne co możemy
zrobić, to starać się hamować "kreatywność" młodych programistów i
ograniczać kod aby był jak najłatwiejszy do zrozumienia dla każdego, a
wynik intensywnie testować.
Mateusz
--
"There are only two kinds of programming languages: those people always
bitch about and those nobody uses." -- Bjarne Stroustrup
Następne wpisy z tego wątku
- 06.09.19 15:42 Maciej Sobczak
- 06.09.19 16:06 Mateusz Viste
- 06.09.19 17:06 AK
- 06.09.19 17:11 AK
- 06.09.19 18:22 M.M.
- 06.09.19 18:29 g...@g...com
- 06.09.19 19:14 g...@g...com
- 06.09.19 20:28 M.M.
- 06.09.19 21:03 Maciej Sobczak
- 06.09.19 21:12 Mateusz Viste
- 06.09.19 21:25 Maciej Sobczak
- 06.09.19 23:00 g...@g...com
- 06.09.19 23:59 g...@g...com
- 07.09.19 01:48 g...@g...com
- 07.09.19 10:55 M.M.
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-02-01 Śmierć mózgu a narządy do pobrania
- 2025-01-31 A niektórym to naprawdę zależy na ekologi w miastach LPG POWRACA ;-)
- 2025-01-31 Lublin => Programista Delphi <=
- 2025-01-31 Łódź => Programista NodeJS <=
- 2025-01-31 Wrocław => Senior SAP Support Consultant (SD) <=
- 2025-01-31 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2025-01-31 Gdańsk => iOS Developer (Swift experience) <=
- 2025-01-31 Kraków => UX Designer <=
- 2025-01-31 Warszawa => Data Engineer (Tech Leader) <=
- 2025-01-31 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-31 Gliwice => Business Development Manager - Network and Network Security
- 2025-01-31 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-31 Warszawa => Full Stack .Net Engineer <=
- 2025-01-31 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-31 Gdańsk => Programista Full Stack .Net <=