eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaAVR po latachRe: AVR po latach
  • 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.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: