-
Data: 2015-03-27 16:00:37
Temat: Re: poprawność algorytmu
Od: g...@g...com szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu piątek, 27 marca 2015 15:12:10 UTC+1 użytkownik Maciej Sobczak napisał:
> > Nie wiem, dlaczego programów napisanych w C++
> > miałoby się nie dać uruchomić z zamiarem sprawdzenia, jak się zachowuje
> > w określonych okolicznościach.
>
> Da się. Ale nie da się stwierdzić, czy te sprawdzone okoliczności wyczerpują
możliwe stany i zachowania sprawdzanego programu, adekwatnie do wszystkich możliwich
sposobów przyszłego użycia.
Da się z łatwością stwierdzić, że zazwyczaj nie wyczerpują.
> Przykładowo, da się napisać test, który "sprawdza" funkcję sortującą i zapewne ktoś
taki test napisał w Javie dla funkcji napisanej dekadę temu. Dało się to napisać i
uruchomić.
>
> Ale rzeczona funkcja nadal była zje-banana, co raczej rzuca cień i rysę na taką
metodę.
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.
> > I przy okazji kilka ciekawostek, które ostatnio przebiegły twittera:
> >
> > "What if you could write a test for a problem and have your compiler
automatically return a correct implementation?":
>
> Fajne. Zwłaszcza jak ktoś napisze zły test. Będzie miał wtedy złą implementację
pasującą idealnie do tego złego testu.
>
> Spuszczamy to z wodą.
A co jeśli ktoś napisze zły test i złą implementację? Taki sam klops.
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.
> Podobnie jak automaty, który generują testy z implementacji. To jest taka sama
ściema. Implementacja i test to są dwa *niezależne* artefakty, które się uzupełniają
właśnie dzięki temu, że są niezależne. Jak ktoś generuje jedno z drugiego, to równie
dobrze mógłby jednego w ogóle nie robić.
> Np. umówmy się, że wtedy nie robimy testów. To bardzo popularna metoda jest.
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.
> > Na tym chyba polega istotowa różnica między dowodem a testowaniem,
> > że dowód wyczerpuje wszystkie możliwości, a testowanie nie.
> > "Kompletne testowanie" byłoby właśnie -- po prostu -- dowodem.
>
> Dokładnie. Stąd właśnie bierze się potencjalny zysk z użycia dowodów, które w
porównaniu do kompletnych testów mogą być tańsze. Bo to, że dowody mogą być droższe
od niekompletnych testów, to jest argument dla Dilberta.
Ja jednak będę trwał na stanowisku, że testy są z założenia niekompletne,
bo obejmują pewne przypadki jednostkowe. I testy jako takie mają pewną
wartość. Podobnie jak program QuickCheck.
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.
Następne wpisy z tego wątku
- 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
- 28.03.15 13:08 Andrzej Jarzabek
- 28.03.15 18:22 Maciej Sobczak
- 28.03.15 19:38 Roman W
- 28.03.15 19:43 Roman W
- 28.03.15 19:50 A.L.
- 28.03.15 19:51 A.L.
Najnowsze wątki z tej grupy
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- 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ą."
Najnowsze wątki
- 2025-10-21 Warszawa => Konsultant Wiodący SAP PP <=
- 2025-10-21 Warszawa => C Programmer <=
- 2025-10-21 Warszawa => Senior Programmer C <=
- 2025-10-21 Łódź => Network Engineer <=
- 2025-10-21 Łódź => System Administrator (Linux) <=
- 2025-10-21 dziś ostatni raz
- 2025-10-21 pizza motorek
- 2025-10-20 oszustwo czy nie
- 2025-10-20 Poznań => Specjalista ds. Marketingu Online (PPC) <=
- 2025-10-20 Warszawa => International Freight Forwarder <=
- 2025-10-20 Warszawa => Dyrektor pionu IT <=
- 2025-10-20 Zakrzewo => Konsultant SAP HCM <=
- 2025-10-19 Superkondensator. Czy to się uda?
- 2025-10-19 HYUANDAI NIE POJEDZIE DALEJ! Potrzebuje PILNIE POMOCY!
- 2025-10-18 BLIK a Sprawa Polska