Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #32017

Re: Niezmienniki pętli

Newsgroups pl.comp.programming
Date 2018-11-18 23:14 -0800
References (1 earlier) <7b5d82e1-72bb-4d42-96cb-0091385d7ef6@googlegroups.com> <d35b9c0f-333e-4cb8-9d83-e32eddcac124@googlegroups.com> <psp6q7$97o$1@node2.news.atman.pl> <6bea513b-1794-4d99-9380-931550599e51@googlegroups.com> <pss4d0$14n$1@node2.news.atman.pl>
Message-ID <35eabe3c-2a77-4a51-9f1c-ea2538d4ade2@googlegroups.com> (permalink)
Subject Re: Niezmienniki pętli
From Maciej Sobczak <see.my.homepage@gmail.com>

Show all headers | View raw


> > 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.

> Contraints by się 
> przydało i już powoduje to zniknięcie kilku lini DbC.

Chyba mamy to samo na myśli.

> Obserwuje że ludzie nie chcą języków bezpiecznych.

Zgadza się.

> Na początek chciabym w C++ takie coś:
> 
> debug {
> 	// O(N^2) checker
> }

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?

-- 
Maciej Sobczak * http://www.inspirel.com

Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-16 00:27 -0800
  Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-16 15:22 +0000
    Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-16 17:18 +0100
  Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-16 07:48 -0800
    Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-16 07:50 -0800
    Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-16 19:14 +0000
      Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-16 11:40 -0800
        Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-16 20:05 +0000
          Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-17 07:59 -0800
            Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-18 00:02 +0000
    Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-16 14:51 -0800
      Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-19 09:37 +0000
    Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-18 01:10 -0800
      Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-18 01:28 -0800
  Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-16 11:51 -0800
    Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-16 14:55 -0800
      Re: Niezmienniki pętli Sebastian Biały <heby@poczta.onet.pl> - 2018-11-17 14:58 +0100
        Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-17 15:10 -0800
          Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-18 09:58 +0100
          Re: Niezmienniki pętli Sebastian Biały <heby@poczta.onet.pl> - 2018-11-18 17:35 +0100
            Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-18 23:14 -0800
              Re: Niezmienniki pętli Roman Tyczka <noemail@because.no> - 2018-11-19 09:22 +0100
              Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-19 08:15 -0800
                Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-19 10:45 -0800
                Re: Niezmienniki pętli Sebastian Biały <heby@poczta.onet.pl> - 2018-11-22 18:50 +0100
              Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-19 10:49 -0800
                Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-19 12:18 -0800
                Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-19 20:44 +0000
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-19 13:10 -0800
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-19 13:16 -0800
                Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-20 09:43 +0000
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-20 01:58 -0800
                Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-20 14:27 -0800
                Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-21 10:12 +0000
                Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-21 11:35 -0800
                Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-21 21:10 +0000
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-21 02:36 -0800
                Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-19 14:12 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-20 00:20 +0100
                Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-20 09:35 +0000
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-20 12:00 +0100
                Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-19 20:37 -0800
                Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-20 13:46 -0800
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-20 01:46 -0800
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-20 12:52 -0800
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-20 13:16 -0800
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-20 06:07 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-20 17:54 +0100
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-20 23:16 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-21 15:54 +0100
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-21 16:07 +0100
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-21 13:48 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-22 16:08 +0100
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-20 00:00 +0100
                Re: Niezmienniki pętli Wojciech Muła <wojtek.mula@gmail.com> - 2018-11-22 13:53 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-22 23:25 +0100
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 00:41 +0100
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 00:43 +0100
                Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-22 22:33 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 10:34 +0100
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-23 05:46 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 15:39 +0100
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 15:42 +0100
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 15:47 +0100
                Re: Niezmienniki pętli Wojciech Muła <wojtek.mula@gmail.com> - 2018-11-23 10:54 -0800
                Re: Niezmienniki pętli Borneq <borneq@antyspam.hidden.pl> - 2018-12-01 15:15 +0100
                Re: Niezmienniki pętli Wojciech Muła <wojtek.mula@gmail.com> - 2018-12-01 11:50 -0800
                Re: Niezmienniki pętli Borneq <borneq@antyspam.hidden.pl> - 2018-12-02 13:52 +0100
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-24 12:20 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 15:53 +0100
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-24 12:05 -0800
                Re: Niezmienniki pętli Wojciech Muła <wojtek.mula@gmail.com> - 2018-11-26 02:01 -0800
                Re: Niezmienniki pętli szykcech@gmail.com - 2018-11-23 08:42 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 19:42 +0100
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 19:43 +0100
                Re: Niezmienniki pętli Wojciech Muła <wojtek.mula@gmail.com> - 2018-11-22 23:00 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 10:38 +0100
                Re: Niezmienniki pętli Wojciech Muła <wojtek.mula@gmail.com> - 2018-11-23 04:08 -0800
                Re: Niezmienniki pętli Wojciech Muła <wojtek.mula@gmail.com> - 2018-11-23 04:10 -0800
                Re: Niezmienniki pętli AK <nobody@nowhere.net> - 2018-11-23 15:33 +0100
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-20 05:38 -0800
                Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-21 11:32 -0800
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-21 13:28 -0800
                Re: Niezmienniki pętli godek.maciek@gmail.com - 2018-11-21 14:04 -0800
                Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-22 02:31 -0800
                Re: Niezmienniki pętli fir <profesor.fir@gmail.com> - 2018-11-22 06:22 -0800
              Re: Niezmienniki pętli Sebastian Biały <heby@poczta.onet.pl> - 2018-11-22 18:53 +0100
            Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-19 09:45 +0000
              Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-20 05:29 -0800
                Re: Niezmienniki pętli queequeg@trust.no1 (Queequeg) - 2018-11-20 22:26 +0000
  Re: Niezmienniki pętli Maciej Sobczak <see.my.homepage@gmail.com> - 2018-11-29 00:08 -0800

csiph-web