-
1. Data: 2015-03-23 15:12:22
Temat: poprawność algorytmu
Od: j...@p...onet.pl
Uczyli mnie na studiach dowodzenia poprawności algorytmów w logice Hoare'a. Jednak
poprawności trudniejszych algorytmów człowiem nie dowiedzie, a automatyzacja jest
niemożliwa, bo nie da się zautomatyzować generowania niezmienników. Testowanie
dowiedzie występowania błędów, ale nie dowiedzie że ich nie ma. Zaprogramowałem
pewien algorytm w PHP5+MySQL i nie jestem pewien czy jest poprawny. Czy są jeszcze
jakieś metody weryfikacji poprawności algorytmów poza dowodzeniem i testowaniem?
-
2. Data: 2015-03-23 15:37:07
Temat: Re: poprawność algorytmu
Od: "M.M." <m...@g...com>
On Monday, March 23, 2015 at 3:12:25 PM UTC+1, j...@p...onet.pl wrote:
> Uczyli mnie na studiach dowodzenia poprawności algorytmów w logice Hoare'a. Jednak
poprawności trudniejszych algorytmów człowiem nie dowiedzie, a automatyzacja jest
niemożliwa, bo nie da się zautomatyzować generowania niezmienników. Testowanie
dowiedzie występowania błędów, ale nie dowiedzie że ich nie ma. Zaprogramowałem
pewien algorytm w PHP5+MySQL i nie jestem pewien czy jest poprawny. Czy są jeszcze
jakieś metody weryfikacji poprawności algorytmów poza dowodzeniem i testowaniem?
A ręczne wpisywanie niezmienników?
Pozdrawiam
-
3. Data: 2015-03-23 16:15:57
Temat: Re: poprawność algorytmu
Od: j...@p...onet.pl
> A ręczne wpisywanie niezmienników?
Sugerujesz że są programy które po podaniu specyfikacji wejścia i wyników oraz
podaniu niemienników dowodzą automatycznie poprawności?
-
4. Data: 2015-03-23 16:17:52
Temat: Re: poprawność algorytmu
Od: j...@p...onet.pl
> Czy są jeszcze jakieś metody weryfikacji poprawności algorytmów poza dowodzeniem i
testowaniem?
Przegląd kodu przez innego programistę w moim przypadku nie wchodzi w grę, bo mój
zleceniodawca by się nie zgodził. Program muszę pisać sam.
-
5. Data: 2015-03-23 17:30:27
Temat: Re: poprawność algorytmu
Od: Maciej Sobczak <s...@g...com>
W dniu poniedziałek, 23 marca 2015 16:15:58 UTC+1 użytkownik j...@p...onet.pl
napisał:
> > A ręczne wpisywanie niezmienników?
>
> Sugerujesz że są programy które po podaniu specyfikacji wejścia i wyników oraz
podaniu niemienników dowodzą automatycznie poprawności?
Są.
Problemem (największym) pozostaje ręczne pisanie niezmienników z zachowaniem
ciągłości logicznej pomiędzy wszystkimi elementami tak, aby automat dowodzący tej
ciągłości nie zgubił - a to będzie zależało od samego automatu.
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
6. Data: 2015-03-23 21:41:08
Temat: Re: poprawność algorytmu
Od: "M.M." <m...@g...com>
On Monday, March 23, 2015 at 5:30:32 PM UTC+1, Maciej Sobczak wrote:
> W dniu poniedziałek, 23 marca 2015 16:15:58 UTC+1 użytkownik
j...@p...onet.pl napisał:
> > > A ręczne wpisywanie niezmienników?
> >
> > Sugerujesz że są programy które po podaniu specyfikacji wejścia i wyników oraz
podaniu niemienników dowodzą automatycznie poprawności?
Nie wiem jak to zabrzmialo, ale nic takiego nie zamierzałem sugerować.
Po prostu ręczne nafaszerowanie programu asercjami, to pomocna metoda
w usuwaniu błędów.
>
> Są.
>
> Problemem (największym) pozostaje ręczne pisanie niezmienników z zachowaniem
ciągłości logicznej pomiędzy wszystkimi elementami tak, aby automat dowodzący tej
ciągłości nie zgubił - a to będzie zależało od samego automatu.
>
Mógłbym rzucić okiem na jakieś przykłady?
Pozdrawiam
-
7. Data: 2015-03-24 09:11:14
Temat: Re: poprawność algorytmu
Od: g...@g...com
W dniu poniedziałek, 23 marca 2015 15:12:25 UTC+1 użytkownik j...@p...onet.pl
napisał:
> Uczyli mnie na studiach dowodzenia poprawności algorytmów w logice Hoare'a. Jednak
poprawności trudniejszych algorytmów człowiem nie dowiedzie, a automatyzacja jest
niemożliwa, bo nie da się zautomatyzować generowania niezmienników. Testowanie
dowiedzie występowania błędów, ale nie dowiedzie że ich nie ma. Zaprogramowałem
pewien algorytm w PHP5+MySQL i nie jestem pewien czy jest poprawny. Czy są jeszcze
jakieś metody weryfikacji poprawności algorytmów poza dowodzeniem i testowaniem?
PHP nie jest pod tym wzgledem najbardziej fortunnym systemem, ale mozesz
sobie recznie wypisac sygnatury typow dla zmiennych i funkcji i sprawdzic,
czy program jest prawidlowo napisany na poziomie typow.
Wydaje mi sie tez, ze w tej sytuacji najkorzystniej byloby po prostu
napisac sprytne testy obejmujace wszystkie warunki brzegowe, a jesli masz
taka mozliwosc, to rowniez wygenerowac dostatecznie duze losowe dane testowe
i sprawdzic, czy program zachowuje sie prawidlowo
-
8. Data: 2015-03-24 17:28:42
Temat: Re: poprawność algorytmu
Od: Maciej Sobczak <s...@g...com>
W dniu poniedziałek, 23 marca 2015 21:41:10 UTC+1 użytkownik M.M. napisał:
> > Są.
> >
> > Problemem (największym) pozostaje ręczne pisanie niezmienników z zachowaniem
ciągłości logicznej pomiędzy wszystkimi elementami tak, aby automat dowodzący tej
ciągłości nie zgubił - a to będzie zależało od samego automatu.
> >
> Mógłbym rzucić okiem na jakieś przykłady?
Tutaj:
http://docs.adacore.com/spark2014-docs/html/ug/
a konkretnie tutaj:
http://docs.adacore.com/spark2014-docs/html/ug/gnatp
rove.html
a konkretnie szukaj słów "Loop_Invariant".
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
-
9. Data: 2015-03-25 06:47:31
Temat: Re: poprawność algorytmu
Od: Andrzej Jarzabek <a...@g...com>
On 23/03/2015 16:17, j...@p...onet.pl wrote:
>> Czy są jeszcze jakieś metody weryfikacji poprawności algorytmów
>> poza dowodzeniem i testowaniem?
>
> Przegląd kodu przez innego programistę w moim przypadku nie wchodzi w
> grę, bo mój zleceniodawca by się nie zgodził. Program muszę pisać
> sam.
A zleceniodawca wymaga formalnego dowodu poprawności programu?
-
10. Data: 2015-03-25 20:05:06
Temat: Re: poprawność algorytmu
Od: j...@p...onet.pl
> A zleceniodawca wymaga formalnego dowodu poprawności programu?
nie wymaga, ale jeśli mój algorytm będzie niepoprawny to zostanie poważnie naruszona
reputacja jego firmy