-
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
Następne wpisy z tego wątku
- 27.03.15 10:57 g...@g...com
- 27.03.15 11:09 g...@g...com
- 27.03.15 12:24 M.M.
- 27.03.15 13:21 g...@g...com
- 27.03.15 15:12 Maciej Sobczak
- 27.03.15 16:00 g...@g...com
- 27.03.15 21:25 Andrzej Jarzabek
- 28.03.15 05:04 M.M.
- 28.03.15 09:40 Maciej Sobczak
- 28.03.15 09:45 g...@g...com
- 28.03.15 10:10 Maciej Sobczak
- 28.03.15 10:47 g...@g...com
- 28.03.15 10:54 M.M.
- 28.03.15 11:46 M.M.
- 28.03.15 11:54 Andrzej Jarzabek
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-08 Chrzanów => Specjalista ds. public relations <=
- 2024-11-08 Warszawa => Data Scientist / Data Engineer (predictive modelling) <=
- 2024-11-08 zbrojone wężyki hamulcowe
- 2024-11-07 Pytanie o transformator do dzwonka
- 2024-11-07 Warszawa => Infrastructure Automation Engineer <=
- 2024-11-07 międzymordzie USB 3.2 jako 2.0
- 2024-11-07 Warszawa => Site Reliability Engineer (SRE) <=
- 2024-11-07 Warszawa => Presales / Inżynier Wsparcia Technicznego IT <=
- 2024-11-07 Warszawa => ECM Specialist / Consultant <=
- 2024-11-07 Rzeszów => Senior SAP HANA Developer <=
- 2024-11-07 Czy skrzynie biegów lubią hamowanie silnikiem?
- 2024-11-07 Czy skrzynie biegów lubią hamowanie silnikiem?
- 2024-11-07 Czy skrzynie biegów lubią hamowanie silnikiem?
- 2024-11-07 Czy skrzynie biegów lubią hamowanie silnikiem?
- 2024-11-06 gotówkowe zjeby