eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaprogramowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki › Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
  • Data: 2017-10-24 12:30:21
    Temat: Re: programowanie w C - bardzo ogólne pytanie o filozofię. Arduino w roli programatora pralki
    Od: Mateusz Viste <m...@w...tell> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Tue, 24 Oct 2017 11:58:35 +0200, Piotr Gałka wrote:
    > Kiedyś przetestowałem break;break; i OIDP zadziałało dobrze, ale nie
    > byłem pewien, czy to przypadek, czy cecha języka więc dołożyłem bool
    > który służył tylko do tego aby zewnętrza pętla wiedziała, że wewnętrzna
    > każe wyjść.

    Raczej przypadek... Albo jakieś dziwne zachowanie kompilatora którego
    użyłeś.
    ISO-9899-1990 mówi: "6.6.6.3: A break statement terminates execution of
    the smallest enclosion switch or iteration statement."

    Dlatego więc drugie 'break' w przykładzie który podajesz jest (a
    przynajmniej powinno być) martwym kodem.

    Prosty test:

    int main(void) {
    for (;;) {
    for (;;) {
    break; break;
    }
    }
    return(0);
    }

    Powyższy program (po kompilacji i uruchomieniu) nigdy się nie kończy. A
    mój gcc optymalizuje go to tej postaci :)

    .L2:
    nop
    jmp .L2

    GOTO jest faktycznie dość niepopularne w C, i sam mało kiedy mam potrzebę
    go użyć, jednak nie zgadzam się z fanatykami którzy twierdzą iż goto to
    jakieś największe zło i należy je usunąć z języka.
    Jedyna sytuacja którą pamiętam to gdy potrzebowałem wyjść z switch()
    zagnieżdżonego w jednej lub dwóch pętlach. Jedno 'goto' pozwoliło domknąć
    projekt, zamiast refaktoryzować wszystko kilka dodatkowych dni. Niby
    anegdota, ale fajnie mieć pod ręką takie goto 'w razie czego'.

    > Kilka lat temu kupiłem sobie ostatnią książkę Stroustrupa o C++.
    > Nie przebrnąłem przez całą. Utkwiło mi w pamięci, że według niego jak
    > funkcja ma więcej jak 7 linijek to znaczy, że program jest źle napisany.

    Też czytałem takie opinie, ale chyba z innego źródła, bo Stroustrupa
    przeczytałem tylko wstęp i miałem dość :) Ta reguła siedmiu linijek to
    jakiś wymysł nowego pokolenia... Zdarzało mi się miewać takich wśród
    moich pracowników. Młodym się chyba nudzi i wymyślają sobie różne zabawy.
    A jak trzeba coś konkretnego zrobić to sięgają po zewnętrzne biblioteki
    by rozwiązać nawet relatywnie proste sprawy, "bo po co wymyślać na nowo",
    a potem projekt nie da się skompilować bo wymaga miliona zależności,
    których połowa już nie istnieje lub zmieniła API. Życie.

    Mateusz

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: