eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingpoprawność algorytmu › Re: poprawność algorytmu
  • X-Received: by 10.140.18.213 with SMTP id 79mr370330qgf.38.1427532057731; Sat, 28 Mar
    2015 01:40:57 -0700 (PDT)
    X-Received: by 10.140.18.213 with SMTP id 79mr370330qgf.38.1427532057731; Sat, 28 Mar
    2015 01:40:57 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
    q107no68881qgd.1!news-out.google.com!q90ni547qgd.1!nntp.google.com!q107no68876q
    gd.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sat, 28 Mar 2015 01:40:56 -0700 (PDT)
    In-Reply-To: <9...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.108.152.51;
    posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
    NNTP-Posting-Host: 213.108.152.51
    References: <4...@g...com>
    <d...@g...com>
    <meti4e$osd$1@srv.chmurka.net>
    <f...@g...com>
    <mevfpd$gpa$1@srv.chmurka.net>
    <e...@g...com>
    <mf1tnf$d48$1@srv.chmurka.net>
    <5...@g...com>
    <4...@g...com>
    <5...@g...com>
    <9...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <8...@g...com>
    Subject: Re: poprawność algorytmu
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Sat, 28 Mar 2015 08:40:57 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:207685
    [ ukryj nagłówki ]

    W dniu piątek, 27 marca 2015 16:00:39 UTC+1 użytkownik g...@g...com napisał:

    > Mnie się zdaje, że to w ogólności jest "cieńka" metoda. Tym bardziej,
    > że wielu ideologów pisania testów mówią, że "im więcej, tym lepiej"
    > i że "testy nie muszą być elegancko napisane" -- problem jest taki,
    > że testy również potrafią czynić pewne założenia, które nie są kluczowe
    > z perspektywy projektu, a których zmiana w projekcie sprawi, że słita
    > testowa stanie się bezużyteczna.

    Tak. I na tej podstawie można też podważyć stosowanie takich artefaktów do testowania
    regresji. Może być tak, że po zmianie w implementacji i wprowadzeniu do niej bugów
    stary test nadal będzie przechodził, bo nie testuje nowo powstałych osobliwości.

    Testów nie da się pisać na masę, chyba że ktoś chce uprawiać poprawność tzw.
    statystyczną. To też ma jakąś wartość, ale trzeba wiedzieć, gdzie.

    > A co jeśli ktoś napisze zły test i złą implementację? Taki sam klops.

    I te rzeczy były pisane przez niezależnych wykonawców? To wtedy prawdopodobieństwo
    znalezienia niezgodności jest bardzo wysokie i wiadomo, że co najmniej jedno z dwóch
    jest zwalone. Tej efektywności nie ma gdy się robi jedno z drugiego (tu z pogardą
    spoglądamy również na TDD).

    Podobno w praktyce wychodzi 50-50, więc tym bardziej nie należy traktować jednego z
    tych artefaktów jako nadrzędnego.

    > Jednak artykuł w gruncie rzeczy nie opisywał tego, o czym mówił
    > ten nagłówek, tylko po prostu pewną odmianę programowania
    > deklaratywnego opartą o microsoftowy system.

    Jasne. W takim kontekście jest to bardzo ciekawe. Szkoda tylko, że niepraktyczne.

    > Tzn. generowanie testów z implementacji rzeczywiście brzmi idiotycznie.
    > Jednak w drugą stronę to nie całkiem zachodzi. Jeżeli mamy system, który
    > na podstawie testów potrafi wygenerować sensowną implementację, to szacun.

    Szacun dla systemu. Ale nadal niepraktyczne.

    Taki system zmusza autora testu do takiego sformułowania testu, żeby z jego formuły
    wynikała kompletna implementacja. Tzn. albo test musi być wyczerpujący albo musi być
    tak skonstruowany, żeby *nie dało się* z niego zrobić niekompletnej implementacji.
    Np. napisz test, który sprawdza funkcję sort - ale napisz go tak, żeby po
    wygenerowaniu implementacji z tego testu, każdy inny test też przechodził.
    I jeszcze udowodnij, że tak jest.

    Wysiłek intelektualny z tym związany jest porównywalny z napisaniem tej funkcji. I
    udowodnienia, że jest poprawna.

    To jest jak ze ściskaniem plasteliny w dłoni - po prostu wylezie z innej strony a jej
    objętość się nie zmniejszy.

    > Ja jednak będę trwał na stanowisku, że testy są z założenia niekompletne,
    > bo obejmują pewne przypadki jednostkowe.

    Mogą obejmować wszystkie klasy równoważności (albo w ogóle być wyczerpujące w sensie
    przestrzeni wejść). Ale znalezienie wszystkich klas równoważności jest tak samo
    trudne, jak dowód z pominięciem testów. A testy wyczerpujące to tylko dla
    najprostszych funkcji logicznych można napisać przed zejściem.

    > I testy jako takie mają pewną
    > wartość.

    Tak. Oraz cenę.

    > I owszem, zgodzę się, że fajniej jest mieć dowody poprawności, kiedy
    > tylko się da (choć nie wiem, czy akurat w logice Hoare'a), ale jedno
    > nie wyklucza drugiego. Tak jak fajnie np. w podręczniku do matematyki
    > mieć nie tylko definicje, twierdzenia i dowody, ale również przykłady.

    Tak. Ale dowodem można uzasadnić zmniejszenie ilości testów. Tak jak w książce do
    matematyki nie trzeba podawać wyczerpujacych przykładów, wystarczy podać te
    ilustracyjne. Wtedy książka może mieć mniej kartek i może być tańsza.

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

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: