-
Data: 2015-03-27 10:06:10
Temat: Re: poprawność algorytmu
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
Najnowsze wątki
- 2025-06-10 "Graliśmy uczciwie: ty oszukiwałeś, ja oszukiwałem - wygrał lepszy"
- 2025-06-09 Pracownik etatowy zamówił
- 2025-06-09 wybory
- 2025-06-09 Czeladź => Key Account Manager IT <=
- 2025-06-09 Warszawa => MENA New Business Manager <=
- 2025-06-09 Wrocław => Senior Key Account Manager IT <=
- 2025-06-09 Białystok => Programista Kotlin <=
- 2025-06-08 Nowy 17. Raport Totaliztyczny - Patroni Kontra Bankierzy
- 2025-06-07 Mouser - koszt wysyłki
- 2025-06-07 Co robić, jak robić, aby dużo zarobić, a się nie narobić ?
- 2025-06-07 Co robić, jak robić, aby dużo zarobić, a się nie narobić ?
- 2025-06-07 Co robić, jak robić, aby dużo zarobić, a się nie narobić ?
- 2025-06-07 Warszawa => Software .Net Developer <=
- 2025-06-07 Warszawa => Junior SQL / FrontEnd developer <=
- 2025-06-07 Warszawa => Team Lead Data Engineer (Snowflake) <=