-
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
- 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 <=