Thread View: pl.comp.lang.funkcyjne
4 messages
4 total messages
Started by rajm
Mon, 17 Jul 2006 11:32
Jak testować?
Author: rajm
Date: Mon, 17 Jul 2006 11:32
Date: Mon, 17 Jul 2006 11:32
18 lines
1413 bytes
1413 bytes
Witam, W jaki sposób testujecie aplikacje funkcyjne? (np. lispowe właśnie). Chodzi mi o testy typu whitebox. W typowych, imperatywnych językach (np. obiektowych) to wiadomo; Są testy pokrycia kodu, są asercje, do większych kawałków wykonuje się testy jednostkowe np. JUnitem. Obiekty dostają coś na wejściu, patrzymy co zwracają na wyjściu. W przypadku softu lispowego, czy ogólnie pisanego deklaratywnie specyfika działania jest zgoła inna. Są na to jakieś oddzielne narzędzia czy metodyki? Moglibyście coś polecić? Może kakieś frameworki? Pozdrawiam -- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Jak testować?
Author: Tomasz Zielonka
Date: Tue, 18 Jul 2006 12:54
Date: Tue, 18 Jul 2006 12:54
44 lines
2259 bytes
2259 bytes
rajm wrote: > Witam, > > W jaki sposób testujecie aplikacje funkcyjne? (np. lispowe właśnie). Chodzi mi > o testy typu whitebox. > > W przypadku softu lispowego, czy ogólnie pisanego deklaratywnie specyfika > działania jest zgoła inna. Mówiąc o "sofcie lispowym" prawdopodobnie myślisz o oprogramowaniu pisanym w Common Lisp lub Scheme. Języki te nie wymuszają programowania deklaratywnego, a jedynie w pewnym stopniu wspierają ten styl. Cały czas masz dostęp do mnóstwa imperatywnych mechanizmów, możesz więc używać technik znanych z języków imperatywnych. Jeśli chodzi o programowanie funkcyjne, to nie jestem tu ekspertem, ale... > W typowych, imperatywnych językach (np. obiektowych) to wiadomo; Są testy > pokrycia kodu, nie znam takich narzędzi dla języków funkcyjnych > są asercje, też są asercje > do większych kawałków wykonuje się testy jednostkowe np. JUnitem. też można, oczywiście nie JUnitem. Do Haskell'a jest bardzo ciekawy system QuickCheck, który opiera się na automatycznym generowanie testowych danych i sprawdzaniu zadanych własności. > Obiekty dostają coś na wejściu, patrzymy co zwracają > na wyjściu. Analogicznie, funkcje dostają coś na wejściu, patrzymy co zwracają na wyjściu ;-) Z funkcjami jest to nawet bardziej naturalne, zdziwiło mnie stwierdzenie, że "obiekty dostają coś na wejściu". Obiekty mają też stan. Best regards Tomasz
Re: Jak testować?
Author: Tomasz Zielonka
Date: Tue, 18 Jul 2006 12:57
Date: Tue, 18 Jul 2006 12:57
8 lines
1058 bytes
1058 bytes
Tomasz Zielonka wrote: [...] Chciałem jeszcze napisać o kilku rzeczach, ale przedwcześnie wysłałem posta. Postaram się dodać dziś wieczorem. Best regards Tomasz
Re: Jak testować?
Author: Tomasz Zielonka
Date: Wed, 19 Jul 2006 05:49
Date: Wed, 19 Jul 2006 05:49
28 lines
2141 bytes
2141 bytes
Tomasz Zielonka wrote: > Tomasz Zielonka wrote: > [...] > > Chciałem jeszcze napisać o kilku rzeczach, ale przedwcześnie wysłałem > posta. Postaram się dodać dziś wieczorem. Warto się zastanowić dlaczego w ogóle testujemy programy. Robimy to dlatego, że nie jesteśmy pewni ich poprawności. Jednym z celów rozwoju języków funkcyjnych jest dostarczenie narzędzi, które pozwalają uzyskać większą pewność poprawności programu. Sporą pomocą jest już sam styl funkcyjny, unikający niepotrzebnego stanu i efektów ubocznych, bliższy matematyce niż strukturze komputera. Oprócz tego ważne są dobre możliwości modularyzacji kodu, osiągane m.in. przez funkcje wyższego rzędu, funkcje jako wartości, leniwość. Większość języków funkcyjnych w jakimś stopniu ułatwia dowodzenie własności programów. Przy braku efektów ubocznych można przekształcać programy tak prosto jak wyrażenia matematyczne (bo tym faktycznie są programy w niektórych JF). W językach z bogatym statycznym systemem typów można przenieść część niezmienników programu na poziom typów, dzięki czemu zachowanie tych niezmienników będzie sprawdzane podczas kompilacji, statycznie. Pozdrawiam Tomasz
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads