-
Data: 2021-11-18 20:26:23
Temat: Re: AVR po latach
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 18/11/2021 19:55, Dawid Rutkowski wrote:
>> Robiłem to dziesitki razy, na tej grupie, trzeba było uważać.
> To dość dawno, p.m.e. wnikliwie czytam pewnie z rok czy dwa.
Tak, od ~10 lat minimum.
>> Np taki:
>>
>> foo()
>> {
>> DisableInterruptsInThisScope guard;
>>
>> [...]
>> return;
>> [...]
>> return;
>> [...]
>> return;
>> }
> Hmm, podałeś piękny przykład socjalizmu - ustroju dzielnie i skutecznie (chyba
jednak nie) zwalczającego problemy, które nie występują w kapitaliźmie.
Ten przykałd rozwiązuje problem powszechnie występujacy w programach C w
embedded, czyli tansapcyjności flag. Przerwań, bo łatwe, ale masy innych
tez łatwo tym osiągnać.
> Mechanizm RAII stosowany po to, by "usunąć kategorię bugów", która pojawia się w
wyniku kodowania, które nie jest nawet strukturalne.
Mechanizm RAII jest używany tam, gdzie jest przydatny. Tu jest przydatny.
> Wiem że BASIC ryje beret nieodwracalnie...
Tak, dlatego eliminujemy go z C i pojawia się potrzeba użycia czegoś
lepszego. C++ jest za darmo.
> I wiem też, że w C można pisać programy FORTRANowe.
> Sztuka i nauka w tym, by tego nie robić.
Wiec wyjasnij to embedowcom, u których goto jest podstawą wzroców
programowania.
> Zaś takie cli() na początku i sei() na końcu funkcji można sobie zrobić za pomocą
__attribute__.
A takie "enableDisplay()" i "disableDisplay()" też?
Przyczepiłeś się użycia w przypadku 1, ale nie widzisz pozostałych N-1
przypadków, gdzie wzorzec projektowy ...scoped... jest znacznie
wygodniejszy i bezpieczniejszy niż debilizmy z goto.
> Tylko co, jeśli przerwania musisz włączyć w połowie funkcji?
To masz dodatkowy scope w połowie funkcji.
Jesli przerwania musisz wyłączyć pomiędzy scopeami funkcji, to
prawdopodobnie masz coś mocno spieprzone we flow algorytmu i niewiele tu
można pomóc, musi wystarczyć modlitwa.
> Np. w ISR w programie bardziej skomplikowanym niż miganie diodą?
scope stosuje się własnie w programach znacznie bardziej skomplikowanych
niż miganie diodą. Aby w ogóle dało się je utrzymać dalej, niż etap
migania diodą.
> Pewnie dałoby się to zrobić lepiej - ale urządzenie musi iść na obiekt jutro, bo za
pół roku to takie oprogramowanie zrobi też Hindus, a może i Chińczyk.
Mówisz o pisaniu na odpierdol? Łopanie, to oczywiscie goto i nastepny.
Poważne oprogramowanie przeszło by review, testy automatyczne, statyczną
analizę, analizę formalną, linting, akceptację SQA. Ale na odpierdol
nie, ja w ogole nie mówie o takiej kategorii oprogramowania. Być może to
miganie diodą było by w respiratorze, więc wtedy też.
Choć nawet w tym na odpierdol wolałbym RAII, niż 30 goto.
>>> Dla ustalenia uwagi w porównaniu do C, żeby nie wynajdywać koła.
>> No to masz RIIA.
> Słabe. Jeszcze bym chciał coś lepszego.
To proponuj.
>> Drugi. Kompiluje się g++. Pierwszy też, ale drugi jest *niewątpliwie*.
> To może odwrotnie - czy drugi nie skompiluje się gcc?
> Przecież nie było tam nawet:
> for(int i = 0 ; i < 100 ; ++i )
> Czym one się w ogóle różnią?
Niczym istotnym. Właśnie odkryłeś że przejście na C++ jest za darmo. A
mimo to dev 60+ broni się rękami i nogami, wymyślając co chwile nowe
debilizmy do obrony epoki kamienia goto-wanego.
> Pewnie tym, co zwróci
> $ echo $_
> Ciekawe co będzie w tym drugim przypadku.
> Nie powinno być:
> void main() {}
> ?
Nie. Nie powinno. Będzie zero. Gwarantowane. ISO 9899:201x 5.1.2.2.3
> Rozwiązywałe kiedyś test 50 pytań z Javy i C++ u takiej jednej fajnej "rekruterki"
(rozpraszała, podobnie jak taka jedna fajna z zakładu metod matematycznych
informatyki na egzaminie z prawdopodobieństwa ;)
> Java była OK, za co ją uwielbiam (ciekawe czy jest gcj na AVR?)
Jak sobie wyobrażasz heap na AVR? Java jest językiem, w którym cieżko
się piszę bez allokacji na heapie. Innymi słowy nie jest możliwa do
użycia na AVR w sposób pełny. Co innego C++ - w nim używania heapu nie
ma obowiązku.
Istnieją podzbiory Javy np. na karty SIM, ale nie chciałbyś w tym pisać,
to jest żenujące i przypomnia tortury.
>, C++ koszmarne - ale to Twoje jest jeszcze trudniejsze.
To są podstawy C++. Nie ma nic prostszego niż RAII.
>> Dlatego postulatem nie jest uzywanie g++ tylko pisanie w C++.
> Tak samo albo nie.
> Jakoś to mocno "akademickie" - czy dobrze odbieram "grupę" i "review"?
"grupa" i "review" nie mają nic wspólnego z "akademickością". Są
normalnymi narzędziami używanymi przez prawie wszystkie firmy zajmujące
się pisaniem programów, a nie dicking around.
Bywają "akademickości" gdzie o nich nie słyszano i dalej uczą Delphi,
dajac na koniec magistry.
> I to jeszcze akademickie młodego pokolenia, co pierwszy komputer miało z windows
95...
Myślę, że przeoczyłeś jakieś ~40 lat rozwoju informatyki.
Następne wpisy z tego wątku
- 18.11.21 20:35 Mateusz Viste
- 18.11.21 20:47 heby
- 18.11.21 20:56 J.F
- 18.11.21 21:02 heby
- 18.11.21 21:25 a...@m...uni.wroc.pl
- 18.11.21 21:43 Mirek
- 18.11.21 21:47 Mateusz Viste
- 18.11.21 22:06 heby
- 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
Najnowsze wątki z tej grupy
- 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
- 74F vs 74HCT
- Newag ciąg dalszy
- Digikey, SN74CBT3253CD, FST3253, ktoś ma?
Najnowsze wątki
- 2025-01-23 5G Apokalipsa - nie tylko dla tutejszych przeżuwaczy podpiczników
- 2025-01-23 wodor
- 2025-01-23 Zawór grzybkowy - jaki producent
- 2025-01-23 Warszawa => Expert IT Recruiter 360 <=
- 2025-01-23 Warszawa => Key Account Manager IT <=
- 2025-01-23 Citi Handlowy promocja na kartę kredytową
- 2025-01-22 Gdańsk => System Architect (Java background) <=
- 2025-01-22 Katowice => Senior Field Sales (system ERP) <=
- 2025-01-22 Warszawa => Java Developer <=
- 2025-01-22 pokolenie Z
- 2025-01-22 Wyświtlacz ramki cyfrowej
- 2025-01-22 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A
- 2025-01-22 Chrzanów => Team Lead / Tribe Lead FrontEnd <=
- 2025-01-22 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-22 oferta na ubezpieczenie OC życie prywatne