-
Data: 2019-09-06 18:29:17
Temat: Re: Jak to robią w NASA
Od: g...@g...com szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu środa, 4 września 2019 23:49:50 UTC+2 użytkownik Maciej Sobczak napisał:
> > Asercje są formą komentarza, który dodatkowo można zweryfikować.
>
> Kupa różnych narzędzi weryfikuje adnotacje zaszyte w komentarzach. Statycznie. I
tak powinno być.
Dlaczego? Bo właśnie do tego służą komentarze?
Jeżeli tak jest, to to wynika co najwyżej z tego, że macierzysty język jest zbyt
słaby, żeby wyrazić te rzeczy, które są istotne (i które weryfikują narzędzia, o
których mówisz). I dlatego używa się komentarzy jako takiego "haka" na wyrażanie tych
rzeczy.
Bo, jak wskazuje nazwa, komentarze służą do komentowania.
A do stwierdzania faktów służą... stwierdzenia.
(Możesz też poszukać synonimów tego słowa. Wśród nich znajdziesz ...)
> > Asercja to postawa propozycjonalna.
>
> Możliwe, że pomyliłeś grupy.
Hmm. Nazwa grupy zaczyna się od "pl". Jestem raczej przekonany, że to skrót od
"polski" i że sugeruje, że używamy tu znaczeń słów takich, jakie mają w języku
polskim.
Słowo "asercja" można nawet znaleźć w Słowniku Języka Polskiego, jeśli komuś chce się
szukać.
> > Możesz sobie napisać
> > #define assert(x) do {} while(0)
>
> Nie, nie mogę. Zabrania tego zarówno MISRA-C jak i AUTOSAR.
> Byłoby łatwiej, gdybyś nie spekulował.
Zabawne to, co mówisz. Zamiast powiedzieć, na przykład:
"nie mogę, bo MISRA C zabrania używania identyfikatorów, które pojawiają się w
bibliotece standardowej języka C"
wolisz powiedzieć:
"byłoby łatwiej, gdybyś nie spekulował"
Jakby to faktycznie mogło przybliżyć do rozwiązania jakiegokolwiek problemu.
I otóż, jak napisał powyżej kolega, który przedstawił mi się jako "Pier..lisz
Głupoty" (śmieszne nazwisko, swoją drogą), możesz zdefiniować symbol NDEBUG przed
załączeniem assert.h.
Albo możesz np. zdefiniować
#define certainly(x) do{}while(0)
Wyjdzie w sumie na to samo.
> > Asercje też są istotne dla czytelności.
>
> Oczywiście. Ale stanowią dead-code, którego się unika z innych powodów.
Asercje nie stanowią martwego kodu.
Być może strategia obsługi fałszywych asercji, którą przyjmuje biblioteka C (bez
NDEBUG) generuje w jakichś okolicznościach martwy kod.
> Być może te powody nie są istotne jak się pisze coś innego gdzieś indziej, ale
jeśli mówimy o systemach krytycznych (taki wątek się zrobił), to obowiązują pewne
reguły. Dużo reguł. Więcej, niż gdzie indziej. W sumie właśnie od tego spostrzeżenia
się ta dyskusja wzięła.
>
> > Asercja nie jest pojęciem wprowadzonym przez standard C.
>
> Standard C definiuje dokładnie, co to pojęcie oznacza w języku C. Może gdzieś
indziej oznacza coś innego, albo nawet wcześniej. Nie ma to znaczenia.
Standard C mówi wyłącznie, w jaki sposób jest zdefiniowane makro "assert".
Nie mówi nic o tym, co oznacza słowo "asercja".
> > > Oczywiście możesz sobie wyobrazić (albo nawet mieć) narzędzie, któro statycznie
skanuje kod i sprawdza asercje (efektywnie traktując je jako static_assert), ale
takie narzędzie potrafi też wyłuskać adnotacje z komentarzy.
> >
> > ?
>
> Ale czego nie rozumiesz? Której części?
Dajmy na to, że mam taki komentarz:
/* wartośc poniższego enuma służą jako indeksy do tablicy TABLICA */
po którym następuje enum.
I teraz, czy narzędzie sprawdzi mi, czy wartości tego enuma służą jako indeksy do
tablicy TABLICA?
> > No to nie dość, że sam błędnie rozumiesz, to jeszcze próbujesz to swoje błędne
rozumienie promować.
>
> Dopóki moje rozumienie opiera się na standardach (i to kilku), to będę je promował.
Nie do mnie pretensje, nie ja te standardy pisałem.
Nie wiem, jakie standardy czytałeś, ale jeżeli idzie o te, z którymi ja miałem
styczność, to żadna nie rościła sobie pretensji do bycia normatywną w kwestii pojęcia
asercji.
Następne wpisy z tego wątku
- 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.
- 07.09.19 17:04 Maciej Sobczak
- 07.09.19 17:21 Maciej Sobczak
- 07.09.19 19:35 M.M.
- 08.09.19 00:18 g...@g...com
- 08.09.19 08:13 AK
- 08.09.19 08:58 g...@g...com
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-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO
- 2024-11-28 droga laweta
- 2024-11-28 Co tam się odpierdala w tej Warszawie?
- 2024-11-28 skąd się biorą tacy debile?
- 2024-11-28 JDG i utylizacja sprzetu
- 2024-11-27 Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- 2024-11-28 Katowice => Technical Artist <=
- 2024-11-28 Katowice => Technical Artist <=
- 2024-11-28 Bydgoszcz => QA Engineer <=
- 2024-11-28 Zielona Góra => Spedytor międzynarodowy <=
- 2024-11-28 Kraków => DevOps Engineer (Junior or Regular level) <=
- 2024-11-27 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-11-27 Zielona Góra => Senior PHP Developer <=
- 2024-11-27 Warszawa => Senior Java Developer <=