-
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
- 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ą."
- 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
Najnowsze wątki
- 2025-07-18 celnicy pobili policjanta
- 2025-07-18 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-18 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=
- 2025-07-18 Białystok => Kotlin Developer <=
- 2025-07-18 Warszawa => Sales Director (Cloud solutions) <=
- 2025-07-18 Spalinowa trauma
- 2025-07-18 Polska => Senior Key Account Manager <=
- 2025-07-18 Białystok => Programista Kotlin <=
- 2025-07-18 Szczecin => Key Account Manager IT <=
- 2025-07-18 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-18 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-18 Lublin => Delphi Programmer <=
- 2025-07-18 Lublin => Programista Delphi <=
- 2025-07-17 Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- 2025-07-17 Andrzej Duda ułaskawił Roberta Bąkiewicza od zarzutu zapchnięcia ze schodów aktywistki Babci Kasi