-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erj
e.net!feeder.erje.net!news.roellig-ltd.de!open-news-network.org!news.nobody.at!
eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: heby <h...@p...onet.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: AVR po latach
Date: Thu, 18 Nov 2021 22:06:28 +0100
Organization: A noiseless patient Spider
Lines: 135
Message-ID: <sn6f8o$12m$1@dont-email.me>
References: <smreh5$3aj$1@dont-email.me> <61920df0$0$544$65785112@news.neostrada.pl>
<smu2sg$nns$2@dont-email.me> <619365f0$0$552$65785112@news.neostrada.pl>
<61938d47$0$518$65785112@news.neostrada.pl>
<a...@n...neostrada.pl>
<619508e5$0$552$65785112@news.neostrada.pl>
<a...@n...neostrada.pl>
<sn3drv$13k$2@dont-email.me>
<a...@n...neostrada.pl>
<sn3h62$qna$1@dont-email.me>
<a...@n...neostrada.pl>
<sn3lbt$q5v$1@dont-email.me>
<0...@g...com>
<sn5ul0$2vi$1@dont-email.me> <2...@m...lan>
<sn602a$cil$1@dont-email.me> <20211118180102.29f911cc@mateusz>
<sn61hi$q5d$1@dont-email.me> <20211118182857.67ab36fc@mateusz>
<sn632k$7cr$1@dont-email.me> <20211118191941.5cd5cbc8@mateusz>
<sn66n0$2i0$1@dont-email.me> <20211118203536.2ed957df@mateusz>
<sn6bgf$5pm$1@dont-email.me> <20211118214712.2347ccca@mateusz>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 18 Nov 2021 21:06:32 -0000 (UTC)
Injection-Info: reader02.eternal-september.org;
posting-host="f8f74dab200a8f3596099db019172991"; logging-data="1110";
mail-complaints-to="a...@e...org";
posting-account="U2FsdGVkX182iiG9nXJHY0OWt+Mpc5lZ"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.3.1
Cancel-Lock: sha1:gC9Ktoz0oGMkNNXyJ1M9S31YUHo=
In-Reply-To: <20211118214712.2347ccca@mateusz>
Content-Language: en-US
Xref: news-archive.icm.edu.pl pl.misc.elektronika:768493
[ ukryj nagłówki ]On 18/11/2021 21:47, Mateusz Viste wrote:
>> Wylatujesz za drzwi nie tylko z kopniakiem, ale jeszcze z wilczym
>> biletem na pracę w IT.
> Przypomnę, że pisałeś wcześniej że "w C nie da się tego zrobić". Teraz
> ci po prostu łyso. :-)
Nie, dalej twierdze że nie da się zrobic RAII w C. Można emulatowac
pojedyncze przypadki, jak Twój przykłąd. Przeciez oba są
Turing-complete, więc można napisać żałosny kod o identycznej logice jak
inny kod.
>> Wlasnie napisałeś kiepski, ale emulator RAII. I po co było bredzić o
>> goto?
> goto ma swoje niszowe zastosowania.
Ma. Ale prawde mówiąc są tak niszowe, że nie użyłem go od chyab 20 lat.
Mimo zawodowej pracy w C++.
> To, co dziś nazywa się "RAII"
> istniało przed C++ i wykorzystywało właśnie goto.
Nie. To nie ma jedno z drugim nic wspólnego. RAII to nie jest inne goto.
To w ogóle nie jest nawet obok.
Jak chcesz już analogii, to Twoje "goto" jest bliżej exceptionów z C++,
one też przerywają flow kodu.
RAII jest najbliżej konstrukcji try {} finally {}.
> Zresztą nie tylko ja
> o tym bredzę:
> https://www.kernel.org/doc/Documentation/process/cod
ing-style.rst
Podałeś przykład kodu, w którym religijnośc jest ważna, wazniejsza niż
zdrowy rozsądek. Nic dziwnego, że nie ma wyjścia i trzeba korzystać z
mechanizmów, które są śmieszne, żałosne i niebezpieczne, bo C++ nie
wolno bo nie wolno.
Ja oczywiście znam rozsądne argumenty za C w kernelu, ale znam też
głośno powtarzane, nierozsądne.
> "The goto statement comes in handy when a function exits from multiple
> locations and some common work such as cleanup has to be done. If
> there is no cleanup needed then just return directly."
No widzisz, a reszta świata ma finally. Czyli reszta świata się myli.
Kolesie od kernela nie mają wyjścia: pracują w toksycznym środowisku w
którym jednym pytaniem o coś lepszego niż C zbywa się "you're full of
shit" i podobnyumi argumentami merytorycznymi. Wiem, słyszałem
wielokrotnie. Kernel linuxa to nie jest specjalnie dobry argument w
jakiejkolwiek dyspucie o jakosci i bezpieczeństwie kodu, chyba że
potrzebujesz wyznaczyć poziom zerowy.
>> char value = cast_with_range_check< char >( intValue );
>> W kodzie produkcyjnym nic się nie zmienia, w kodzie dla unit testów
>> masz tam w środku zaawansowane sprawdzanie czy wartość mieści się w
>> zakresie typu.
> Ciekawa konstrukcja. Nie mam pewności, czy to w praktyce mogłoby być mi
> użyteczne, bo jeśli castuję większe do mniejszego to obwarowuję
> operację stosownymi asercjami.
Potraktuj to jaki uniwersalną, generyczną asercję.
> Czy w takiej sytuacji ten
> cast_with_range_check<> ma jakieś zalety? Pytam szczerze i bez przekąsu.
Tak. Jeśli popełniasz błąd, to raz a nie 500 razy w każdym możliwym miejscu.
Wyobraź sobie że musisz rozpatrzeć:
a) signed/unsigned
b) mały/duży
c) float/int
d) double/single
e) ttmath/magic_int256_t
I wszystkie ich kombinacje. To jest kilkaset asercji i czasami cieżkich
obliczeń, z gwarnacja buga.
Twoja metoda to technika rozpryskowa, czyli wpierniczmy te asercje
wszędzie po kodzie, a każda inna.
Moja technika to generalizacja i abstrakcja problemu to template,
którego nie da się użyć źle. W dodatku o jakości zapewnianej unit
testami. C++ daje mi do tego calu trywialne i wygodne narzędzie.
Oczywiscie, za chwile wyskoczy jakiś hacker z hasłem "ale ja to mogę
zrobic na #define, potrzymaj mi kota".
Tak, wszystko jest turing-complete, brainfuck, whitespace, intersil też.
Da się zrobic na #define. I w brainfucku. I ja też kiedyś robiłem na
#define. Ale już nie robie. To dziecinada.
>> Ja tu bronie jakiejś idei? Robisz gówniany kod na goto, który
>> świadczy o zerowej wiedzy z zakresu bezpieczeństwa kodu i to w imię
>> "Łojezu, nie wolno używać C++, bo przyjdzie babajaga i zje!" i to ja
>> czegoś zaciekle bronię? Żartujesz?
> Tak, bronisz. Podałeś tezę pt. "C++ najlepszy do programowania w
> embedded"
Nie. Podalem tezę "można zerowym kosztem pisać kod lepszy niż w C" bo
niczym się od gołego C nie różni.
Do programowania embedded jest najlepszy język, który najlepiej pasuje
do zagadnienai które chcesz rozwiązać.
W przypadku C vs C++ argumentacja że "C++" jest gorszy od C, wymagała
odpowiedzi. I tak doszliśmy do twojego goto, jako panaceum na problemy
3-go świata programistów z epoki kamienia łupanego.
> i uargumentowałeś ją kiepskim przykładem. Zapytałem o lepszy.
> I zaczęło się.
Wiec zauważ o czym dysputa była. Dysputa jest o tym, że C nie jest
lepszy od C++, bo C++ to C + *przydatne* rzeczy. Więc niejako na bazie
czystej logiki nawet...
>> To co, piszesz to zabezpieczneie przed podaniem złej flagi do uartu,
>> w C?
> Ja zupełnie tego nie potrzebuję.
No własnie. Innymi słowy jesteś wyznawcą podejścia hackerskiego do
programowania.
"Ja się nie mylę, po co mi to całe bezpieczeństwo".
Ja wręcz odwrotnie: "bezpieczeństwo i testowanie a potem kodowanie".
I różnica jest taka, że ja wiem jak to przenieśc do embedded.
> przykład wyższości C++ "w embedded"... Ale okazało się niestety, że to
> przykład tylko wirtualny.
Ja bym go nazwał konkretnym, ale ja pracuje zawodowo w takim języku,
więc co ja tam mogę wiedzieć.
Następne wpisy z tego wątku
- 19.11.21 08:57 Mateusz Viste
- 19.11.21 09:33 Mateusz Viste
- 19.11.21 09:43 J.F
- 19.11.21 09:44 heby
- 19.11.21 10:01 Mateusz Viste
- 19.11.21 10:18 heby
- 19.11.21 10:53 J.F
- 19.11.21 10:59 Mateusz Viste
- 19.11.21 11:07 Mateusz Viste
- 19.11.21 11:34 Mateusz Viste
- 19.11.21 13:37 Astralny Rębajło
- 19.11.21 17:08 heby
- 19.11.21 20:38 Mateusz Viste
- 19.11.21 21:19 heby
- 19.11.21 21:54 Mateusz Viste
Najnowsze wątki z tej grupy
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
Najnowsze wątki
- 2025-01-26 Trump-2 JUŻ bardzo łaskawy [1_500 ułaskawień skazanych za Bidena za "Kawkę na Kapitolu"]
- 2025-01-26 Brak bolca ochronnego ładowarki oznacza pożar
- 2025-01-24 Elektryfikacja w ODWROCIE
- 2025-01-25 AMS spalony szybkim zasilaczem USB
- 2025-01-24 stalowe bezpieczniki
- 2025-01-23 Zenek Kapelinder - ?
- 2025-01-25 Błonie => Sales Specialist <=
- 2025-01-25 Lublin => iOS Developer (Swift) <=
- 2025-01-24 Warszawa => Java Developer <=
- 2025-01-24 Białystok => iOS Developer (Swift experience) <=
- 2025-01-24 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-24 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-01-24 Lublin => Delphi Programmer <=
- 2025-01-24 Kraków => Key Account Manager <=
- 2025-01-24 Lublin => Programista Delphi <=