eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingpoprawność algorytmuRe: poprawność algorytmu
  • X-Received: by 10.140.30.118 with SMTP id c109mr310318qgc.15.1427447171010; Fri, 27
    Mar 2015 02:06:11 -0700 (PDT)
    X-Received: by 10.140.30.118 with SMTP id c109mr310318qgc.15.1427447171010; Fri, 27
    Mar 2015 02:06:11 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
    h3no5126358qgf.1!news-out.google.com!q90ni534qgd.1!nntp.google.com!z107no513342
    6qgd.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Fri, 27 Mar 2015 02:06:10 -0700 (PDT)
    In-Reply-To: <mf1tnf$d48$1@srv.chmurka.net>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=31.186.238.52;
    posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
    NNTP-Posting-Host: 31.186.238.52
    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>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <5...@g...com>
    Subject: Re: poprawność algorytmu
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Fri, 27 Mar 2015 09:06:11 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:207676
    [ ukryj nagłówki ]

    > > Głównie dlatego, że testowanie jest zrozumiałe zarówno dla tych,
    > > którzy to robią, jak i dla tych, którzy to mają zaakceptować jako
    > > element projektu (czytaj: zapłacić za to lub uznać jego ważność). W
    > > przeciwieństwie do dowodów, które są niezrozumiałe i stąd też
    > > niechętnie akceptowane.
    >
    > No więc pomijając płacenie itd., to jest bardzo istotne kryterium, bo
    > jeśli formalny zapis nawet nie tylko samego dowodu, ale również
    > kryterium poprawności, które zostało dowiedzione, jest niezrozumiałe dla
    > osób, które rozmieją, kiedy program jest rzeczywiście poprawny, to cały
    > dowód poprawności jest OKDR.

    Zgadza się. Ale z drugiej strony, skąd osoby, które rozumieją, kiedy program jest
    rzeczywiście poprawny, mają pewność, że on faktycznie jest poprawny, skoro nie
    potrafią wyspecyfikować tego kryterium? Kierują się przeczuciem?

    Tak jak przeczuciem kierowali się ludzie, którzy dekadę temu napisali algorytm
    sortowania w Javie?

    http://envisage-project.eu/proving-android-java-and-
    python-sorting-algorithm-is-broken-and-how-to-fix-it
    /

    Zgadzam się, że to jest problem. Metody formalne są ciałem obcym w branży, bo nie
    pasują do dotychczas przyjętych wzorów pracy.

    > > Zainteresowanie dowodzeniem rośnie właśnie dlatego, że jest
    > > tańsze. Może być nawet dużo tańsze.
    >
    > Stąd gdzie ja stoję, tego zainteresowania nie widać.

    Najwyraźniej nie ma takiej potrzeby.

    > > Masz rację, że w finansach nie stosuje się dowodów ale nie dlatego,
    > > że są droższe od testów, tylko dlatego, że testów też się tam nie
    > > robi.
    >
    > Nie wątpię, że nieskończenie lepiej ode mnie znasz się na metodach
    > formalnych, ale w tej kwestii nie masz pojęcia o czym mówisz.

    Może tak być. Ale zadam dwa pytania kontrolne:

    1. Czy ktoś poniósł kiedyś osobiste konsekwencje (np. poszedł do pierdla) za
    zrobienie błędu w programie użytym w branży finansowej?
    2. Czy ktoś odniósł kiedyś osobiste korzyści (np. dostał wysoką premię) za szybkie
    wdrożenie systemu na rynek, wyprzedzając tym konkurencję?

    Hę?

    > No to teraz całkowicie bez szydery i na poważnie spytam, jakie są
    > praktyczne możliwości. Mam powiedzmy program w C++, kilkaset tysięcy
    > linii kodu, korzysta z boosta, wątków, libc, bazy danych, MOM-a itd. -
    > co można zrobić żeby udowodnuć jego poprawność i ile to będzie kosztowało?

    Nie da się. Dla równowagi zauważmy jednak, że przetestować tego też się nie da,
    zresztą dokładnie z tych samych powodów (uwaga logiczna: z tezy że się nie da
    konsekwentnie wynika też teza, że się tego nie robi; można co najwyżej udawać że się
    robi pomijając milcząco tą drobną niedogodność, że się nie da i tak właśnie działa
    większa część branży, patrz też niżej).

    Na poważnie - nie stosuje się metod formalnych a posteriori w odniesieniu do kodu,
    który nie był pisany z myślą o takich metodach. Problem stopu, Goedel, i podobne
    teoretyczne przeszkody. Natomiast da się napisać (i to udowodnić) poprawny program,
    jeśli się go pisze z myślą o takich metodach.
    Co ciekawe, dotyczy to również testów i to z takich samych powodów.

    Ćwiczenie logiczne: jeżeli ktoś twierdzi, że testuje swój program, to ja poproszę o
    *dowód*, że testowanie jest kompletne. Trudność w przeprowadzeniu takiego dowodu jest
    dokładnie taka sama (i z tych samych powodów), jak dowód poprawności programu z
    pominięciem testów, bo materiał wyjściowy jest dokładnie ten sam.

    Różnica między dowodami i testami jest taka, że niekompletnego dowodu nie da się
    zrobić, bo od razu widać, że jest niekompletny - natomiast bez najmniejszego problemu
    można zrobić niekompletne testy, bo najczęściej nie widać, jak bardzo one są
    niekompletne. Testy są po prostu wygodniejsze zarówno dla tych, którzy je robią, jak
    i dla tych, którzy je akceptują i to tłumaczy ich "silną pozycję rynkową".

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