eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Niezmienniki pętli
Ilość wypowiedzi w tym wątku: 91

  • 21. Data: 2018-11-19 09:22:44
    Temat: Re: Niezmienniki pętli
    Od: Roman Tyczka <n...@b...no>

    On Sun, 18 Nov 2018 23:14:44 -0800 (PST), Maciej Sobczak wrote:

    > Wystarczy rozszerzyć składnię asserta. W tej chwili assert musi dostać jedno
    wyrażenie, ale można by go rozszerzyć tak, żeby akceptował dowolne fragmenty kodu. W
    niektórych językach to się robi o tyle łatwiejsze, że wszystko jest albo może być
    wyrażeniem, również pętla While czy cokolwiek innego - wtedy do takiego asserta można
    wsadzić dowolny fragment kodu, nawet z własnymi definicjami zmiennych wykorzystanych
    w środku. Ale w C++ chyba niewiele trzeba, żeby to osiągnąć, np. z taką składnią:
    >
    > assert(dowolnyfragmentkodu, wynik_bool);
    >
    > I użyć tego tak:
    >
    > assert(
    > int i; // albo inne definicje
    > int j = x; // x jest na zewnątrz, ale widać go tutaj
    >
    > while (orzemy_jak_możemy)
    > {
    > // obliczenia, wywołania funkcji, itd.
    > ...
    > },
    >
    > x > 0 && i < 10 // jakiś ostateczny warunek
    > );
    >
    > I wtedy assert, tylko w trybie debug, wykonuje ten kod a na końcu sprawdza warunek
    logiczny z drugiego swojego argumentu. W trybie release nic nie robi.
    >
    > Kto zaproponuje definicję makra assert o takich zdolnościach?

    Makra nie zaproponuję, ale wrzucę ciekawostkę.
    W języku Solidity, używanym do smart kontraktów w sieci Ethereum
    (kryptowaluty) stosuje się coś co się nazywa modifier, przykładowo dopisuje
    się w klasie modifier isOwner, który sprawdza czy kontrakt wywołał jego
    właściciel i tenże modifier dopisuje się do pozostałych metod, które mają
    go sprawdzać przed wywołaniem, w przykładzie robi to metoda getData():

    [...]
    modifier isOwner {
    require(msg.sender == owner);
    }

    function getData() public isOwner {
    return data
    }
    [...]


    ps. require to odpowiednik asserta

    --
    pozdrawiam
    Roman Tyczka


  • 22. Data: 2018-11-19 10:37:49
    Temat: Re: Niezmienniki pętli
    Od: q...@t...no1 (Queequeg)

    Maciej Sobczak <s...@g...com> wrote:

    > Ale jak rozumiem z sondażu, nikt tego nie stosuje. Pewnie ma to związek
    > z faktem, że algorytm sortowania przez wybieranie już został wymyślony.
    > :-)

    Jedyne co stosuję bliskiego takim niezmiennikom to asercje :)

    >> 5.2. Nie wierzę w i nie cierpię Assert (to tak jak by bez ostrzeżenia uderzyć
    kogoś w twarz bez dalszego komentarza).
    >
    > To też jest ciekawe. Zwłaszcza, że assert statyczny i dynamiczny to nie to samo.

    Dowodzi jedynie tego, że szyk ma błędne pojęcie o tym, czym jest assert
    dynamiczny (a statycznego nigdy nie stosował).

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 23. Data: 2018-11-19 10:45:20
    Temat: Re: Niezmienniki pętli
    Od: q...@t...no1 (Queequeg)

    Sebastian Biały <h...@p...onet.pl> wrote:

    > To następna obserwacja: jeśl wpływa to na runtime release należy to
    > odrzucić. Wszelakie checkery asercyjne, za wyjątkiem programowania
    > defensywanego, nie mogą istnieć w kodzie produkcyjnym.

    Nigdy nie rozumiałem sensu tego rozumowania (poza kodem, w którym prędkość
    wykonania jest tak krytyczna, że nawet asercje go opóźniają). Byłoby
    idealnie, gdyby na produkcję szedł kod bez błędów, ale nigdy tak nie
    jest...

    > Dlatego używam np metaprogramowania do kontrolownia różych obliczeń.
    > Jednak dalej brakuje mi czegoś takiego jak int a<4-200> i kontroli
    > komilatora w debug kiedy a zmieni się poza zakres.

    Jakimś obejściem problemu jest opakowanie `a` w klasę...

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 24. Data: 2018-11-19 17:15:54
    Temat: Re: Niezmienniki pętli
    Od: g...@g...com

    W gcc masz feature o nazwie 'statement expressions' (dla C), totez nastepujaca
    definicja powinna dzialac:

    #include <assert.h>

    #define Assert(p) assert(({p}))


  • 25. Data: 2018-11-19 19:45:37
    Temat: Re: Niezmienniki pętli
    Od: g...@g...com

    W dniu poniedziałek, 19 listopada 2018 17:15:55 UTC+1 użytkownik g...@g...com
    napisał:
    > W gcc masz feature o nazwie 'statement expressions' (dla C), totez nastepujaca
    definicja powinna dzialac:
    >
    > #include <assert.h>
    >
    > #define Assert(p) assert(({p}))

    Aha, oczywiście nie ma drugiego argumentu postaci "wynik_bool",
    bo i nie ma takiej potrzeby.

    Tutaj mamy przykładowe użycie. Pilk sa.c:


    #include <assert.h>


    #define Assert(p) assert((p))

    int main(void) {

    int n = 5;
    Assert({
    int sum = 0;
    for (int i = 0; i < n; ++i) {
    sum += i;
    }

    sum == (n*(n-1))/2;
    });

    return 0;
    }


    $ gcc -std=gnu99 sa.c
    $ ./a.out

    Jak zmienimy ostatnie wyrażenie w bloku np. na
    sum == (n*(n-1))/3;

    to dostajemy:

    a.out: sa.c:17: main: Assertion `({ int sum = 0; for (int i = 0; i < n; ++i) { sum +=
    i; } sum == (n*(n-1))/3; })' failed.


  • 26. Data: 2018-11-19 19:49:22
    Temat: Re: Niezmienniki pętli
    Od: g...@g...com

    W dniu poniedziałek, 19 listopada 2018 08:14:45 UTC+1 użytkownik Maciej Sobczak
    napisał:
    > > > Tak, to ważna obserwacja. Może da się te rzeczy rozdzielić?
    > >
    > > To następna obserwacja: jeśl wpływa to na runtime release należy to
    > > odrzucić.
    >
    > więc odrzućmy. Niech sobie będą statyczne asercje oraz dynamiczne, ale sterowane
    opcjami kompilatora.
    >
    > > Jest, ale w przypadku nadmiaru checkerów nie da się pisać czytelnie.
    > [...]
    > > Jednak dalej brakuje mi czegoś takiego jak int a<4-200>
    >
    > Czyli ogólnie: type invariants (niezmienniki typów). Wtedy warunek poprawności dla
    danego typu opisuje sie w jego definicji i nie trzeba już zaciemniać kodu pisząc co
    chwilę asercje, czy obiekt ma dobry stan. Tzn. zminimalizujmy zaciemnienie zbierając
    je do jednego miejsca, z dala od algorytmu.
    > Ciekawe, że wtedy można odróżnić niezmienniki typów (takie jak zakres zmiennej) od
    niezmienników obliczeń (np. pętli) i wraz z tym rozróżnieniem dać im osobne miejsce w
    kodzie. Przecież nie wszytko musi być klasycznym assertem.

    Warto przyjrzeć się językowi Idris i typom zależnym. Twórca Idris, Edwin Brady,
    opowiada tutaj o nim z humorem:
    https://www.youtube.com/watch?v=zSsCLnLS1hg


  • 27. Data: 2018-11-19 21:18:14
    Temat: Re: Niezmienniki pętli
    Od: s...@g...com

    > Warto przyjrzeć się językowi Idris i typom zależnym. Twórca Idris, Edwin Brady,
    > opowiada tutaj o nim z humorem:
    > https://www.youtube.com/watch?v=zSsCLnLS1hg

    Po po pierwsze, primo:
    1. C++ jest zupełnie wystarczający do wszystkiego. A to co nie produkcyjne może być w
    Bash lub Pythonie. Robiąc w Www musimy jeszcze znać Html i JavaScript. A jak chcemy
    zrobić bazkę to dodatkowo Sql. Jest tego dość by mieć czego się uczyć przez 5 lat!

    Po drugie, primo:
    2. W języku programowania jest najważniejsze by był kompilowany do kodu maszynowego
    (niżej nie zejdziemy - chyba że jeżyki opisu sprzętu Vhdl/Verilog są nam
    niestraszne).

    Po trzecie, primo:
    3. Nie język programowania z Ciebie robi programistę, ale algorytmy jakich używasz.

    Więc może sobie oszczędź tych wyjazdów z "odlotowymi" językami programowania, bo to
    wrabianie w stratę czasu na bzdury! Lepiej już zaprojektować jakiś program (poćwiczyć
    projektowanie) z jakimiś ciekawymi algorytmami (poćwiczyć projektowanie algorytmów i
    ew. złożoność obliczeniową), a potem zastanowić się co w naszym dotychczasowym stylu
    kodowania było nie tak i to zakodować to wg najnowszych pomysłów i spostrzeżeń
    (poćwiczyć kodowanie). To jest racjonalne a nie strata czasu na kolejny (zbędny)
    język programowania. Jak nie rozumiesz tego: to jest tak jak byś pożyczał od kogoś
    innego instrukcję obsługi samochodu i się jarał jakie wymienione są tam ficzery - to
    paranoja masz swój wózek i masz gdzieś ficzery wymienione w instrukcji kumpla - co
    najwyżej można na temat tych ficzerów pogadać 5 min a nie czytać o tym tydzień!!!

    Do trzeciego primo mam takie spostrzeżenie: zastanawiasz się czasem co programujesz
    na co dzień?!? Czy nie jest tak, że przez prawie czas po prostu kopiujesz zmienne z
    jednego miejsca w drugie?!? walcząc przy tym z jakimś obcym Api?!?

    Ja np w ciągu pół roku zakodowałem tylko jeden algorytm z prawdziwego zdarzenia
    (problem producenta i konsumenta), co mi zajęło parę dni (walka z Api gniazdek i
    funkcją select Linux-a). Natomiast przez pozostały czas tylko kopiuję z jednego w
    drugie (wyświetlanie danych, zapisy do bazy i edycja parametrów urządzeń). Ale i tak
    jestem zadowolony, że mam tą robotę. Dobre jest to, że ten spadkowy projekt
    opanowałem i prowadzę ku końcowi. A teraz przygotowujemy się do stworzenia nowego
    ciekawego systemu z kilkoma algorytmami (ale i tak kopiowania danych będzie pewnie
    95% kodu systemu).


  • 28. Data: 2018-11-19 21:44:37
    Temat: Re: Niezmienniki pętli
    Od: q...@t...no1 (Queequeg)

    s...@g...com wrote:

    > Ja np w ciągu pół roku zakodowałem tylko jeden algorytm z prawdziwego
    > zdarzenia (problem producenta i konsumenta), co mi zajęło parę dni
    > (walka z Api gniazdek i funkcją select Linux-a). Natomiast przez
    > pozostały czas tylko kopiuję z jednego w drugie (wyświetlanie danych,
    > zapisy do bazy i edycja parametrów urządzeń). Ale i tak jestem
    > zadowolony, że mam tą robotę. Dobre jest to, że ten spadkowy projekt
    > opanowałem i prowadzę ku końcowi. A teraz przygotowujemy się do
    > stworzenia nowego ciekawego systemu z kilkoma algorytmami (ale i tak
    > kopiowania danych będzie pewnie 95% kodu systemu).

    Pomijając wszystko inne, to zastanawiam się (serio), jak wyglądają Twoje
    relacje z współpracownikami...

    --
    https://www.youtube.com/watch?v=9lSzL1DqQn0


  • 29. Data: 2018-11-19 22:10:54
    Temat: Re: Niezmienniki pętli
    Od: fir <p...@g...com>

    W dniu poniedziałek, 19 listopada 2018 21:44:40 UTC+1 użytkownik Queequeg napisał:
    > s...@g...com wrote:
    >
    > > Ja np w ciągu pół roku zakodowałem tylko jeden algorytm z prawdziwego
    > > zdarzenia (problem producenta i konsumenta), co mi zajęło parę dni
    > > (walka z Api gniazdek i funkcją select Linux-a). Natomiast przez
    > > pozostały czas tylko kopiuję z jednego w drugie (wyświetlanie danych,
    > > zapisy do bazy i edycja parametrów urządzeń). Ale i tak jestem
    > > zadowolony, że mam tą robotę. Dobre jest to, że ten spadkowy projekt
    > > opanowałem i prowadzę ku końcowi. A teraz przygotowujemy się do
    > > stworzenia nowego ciekawego systemu z kilkoma algorytmami (ale i tak
    > > kopiowania danych będzie pewnie 95% kodu systemu).
    >
    > Pomijając wszystko inne, to zastanawiam się (serio), jak wyglądają Twoje
    > relacje z współpracownikami...
    >
    pomijajac wszystko inne raczej typowe mysli dla ekstremalnego chama i skonczonego
    buraka ...


  • 30. Data: 2018-11-19 22:16:59
    Temat: Re: Niezmienniki pętli
    Od: fir <p...@g...com>

    W dniu poniedziałek, 19 listopada 2018 22:10:56 UTC+1 użytkownik fir napisał:
    > W dniu poniedziałek, 19 listopada 2018 21:44:40 UTC+1 użytkownik Queequeg napisał:
    > > s...@g...com wrote:
    > >
    > > > Ja np w ciągu pół roku zakodowałem tylko jeden algorytm z prawdziwego
    > > > zdarzenia (problem producenta i konsumenta), co mi zajęło parę dni
    > > > (walka z Api gniazdek i funkcją select Linux-a). Natomiast przez
    > > > pozostały czas tylko kopiuję z jednego w drugie (wyświetlanie danych,
    > > > zapisy do bazy i edycja parametrów urządzeń). Ale i tak jestem
    > > > zadowolony, że mam tą robotę. Dobre jest to, że ten spadkowy projekt
    > > > opanowałem i prowadzę ku końcowi. A teraz przygotowujemy się do
    > > > stworzenia nowego ciekawego systemu z kilkoma algorytmami (ale i tak
    > > > kopiowania danych będzie pewnie 95% kodu systemu).
    > >
    > > Pomijając wszystko inne, to zastanawiam się (serio), jak wyglądają Twoje
    > > relacje z współpracownikami...
    > >
    > pomijajac wszystko inne raczej typowe mysli dla ekstremalnego chama i skonczonego
    buraka ...

    nie wiem ilu jeszcze userow grupy to zauwazylo ale zdeje sie ze na pewno godek to
    zauwazyl ze proby 1) wmiawianie komus
    ze jest chory na chorobe psychiczna (niezaleznie czy jest czy nie) poloczone z
    probami naigrywania sie z tego kogos
    polaczone z (obsesyjnymi zreszta gownienymi probami zdeyskredytowanie tago kogos itd
    MUSZA byc charakterystyczne dla
    jedynie ekstremalnego ludzkiego jelopa,

    nie mozna byc normalnym robica takie rzeczy - teraz pytanie skad takie ludzkie
    gowno sie znalazlo na czacie zamiast siedziec z innymi downami w celi gdzie
    charakterystycznie bardziej by pasowalo?

    sam nie mam wyrozumialosci dla tego typu
    skonchonego buractwa, slowo skonczone ludzki gowno wydaje mi sie mw w sam raz
    adekwatne na taki poziom zdalnonego cwoctwa

strony : 1 . 2 . [ 3 ] . 4 ... 10


Szukaj w grupach

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: