PF:Moduł Wstęp: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
Jaki jest cel programowania? | <br/>=== Porównanie paradygmatu funkcyjnego i imperatywnego ===<br/>Jaki jest cel programowania? | ||
Pisz±c program staramy się osi±gn±ć jaki¶ cel. | |||
Jak w każdej działalno¶ci, dobrze jest najpierw uzmysłowić sobie | |||
co chcemy osi±gn±ć, a dopiero potem starać się to osi±gn±ć --- | |||
inaczej możemy uzyskać niezamierzone rezultaty. | |||
Cel, do którego d±żymy zwykle opisuje się w tzw.\ specyfikacji. | |||
Specyfikacja może być mniej lub bardziej formalna. | |||
Je¶li jest sformalizowana, to nasz cel ma zwykle postać | |||
relacji między danymi, a wynikami. | |||
Program, który tworzymy powinien mie¶cić się w ramach okre¶lonych | |||
przez specyfikację. | |||
Weryfikacja poprawno¶ci programu polega na sprawdzeniu, że faktycznie | |||
tak jest. | |||
Paradygmat funkcyjny polega na tym, że pisz±c program tworzymy | |||
pojęcia matematyczne, coraz bardziej skomplikowane, aż do | |||
osi±gnięcia celu. | |||
Pojęcia te maj± postać stałych i funkcji, st±d nazwa | |||
''programowanie funkcyjne''.Oczywi¶cie tworzone funkcje s± wykonywalne, tzn.\ dostarczaj±c | |||
argumentów możemy obliczyć ich warto¶ci. | |||
Weryfikacja programu funkcyjnego polega na udowodnieniu, że | |||
tworzone przez nas funkcje zawieraj± się w relacjach okre¶lonych | |||
przez specyfikacje (i s± okre¶lone na odpowiednich dziedzinach). | |||
Charakterystyczne dla programowania funkcyjnego jest również to, | |||
że funkcje s± ,,obywatelami pierwszej kategorii'', tzn.\ | |||
przysługuj± im wszystkie te prawa, co innym warto¶ciom. | |||
W tej chwili nie jest jeszcze jasne o jakie prawa może chodzić. | |||
Można jednak ¶miało powiedzieć, że jest to jedna z fundamentalnych | |||
zasad programowania funkcyjnego. | |||
Porównajmy paradygmat funkcyjny i imperatywny. | |||
Programowanie imperatywne jest powszechnie znane. | |||
Na czym jednak polega paradygmat imperatywny? | |||
W naszych programach zwykle staramy się wymodelować istotny dla nas | |||
fragment otaczaj±cego nas ¶wiata. | |||
¦wiat ten, składa się (na codzienny użytek) z przedmiotów. | |||
Przedmiotom tym odpowiadaj± w programach imperatywnych | |||
zmienne lub obiekty. | |||
Przedmioty w ¶wiecie rzeczywistym zmieniaj± się wraz z upływem czasu. | |||
Podobnie więc, zmienne i obiekty obdarzone s± stanem, który może | |||
się zmieniać w czasie. | |||
Dane s± to pewne przedmioty, na których należy wykonywać okre¶lone | |||
czynno¶ci, w wyniku których przeistocz± się one w wyniki. | |||
Upływ czasu w ¶wiecie rzeczywistym jest modelowany przez upływ czasu | |||
w komputerze, a zmiany stanów s± realizowane przez przypisania. | |||
Pojęcie czasu nie jest tak bardzo obecne w programach funkcyjnych. | |||
Oczywi¶cie, aby użyć pojęcia musimy je najpierw zdefiniować, a | |||
żeby uzyskać wynik funkcji musimy najpierw dostarczyć argumentów. | |||
W ,,czystym'' programowaniu funkcyjnym nie występuje jednak | |||
pojęcie zmiennej, ani przypisania. | |||
Nie ma też pętli, jako konstrukcji zwi±zanych z czasem i zmian±. |
Wersja z 14:09, 14 lip 2006
=== Porównanie paradygmatu funkcyjnego i imperatywnego ===
Jaki jest cel programowania?
Pisz±c program staramy się osi±gn±ć jaki¶ cel.
Jak w każdej działalno¶ci, dobrze jest najpierw uzmysłowić sobie
co chcemy osi±gn±ć, a dopiero potem starać się to osi±gn±ć ---
inaczej możemy uzyskać niezamierzone rezultaty.
Cel, do którego d±żymy zwykle opisuje się w tzw.\ specyfikacji.
Specyfikacja może być mniej lub bardziej formalna.
Je¶li jest sformalizowana, to nasz cel ma zwykle postać
relacji między danymi, a wynikami.
Program, który tworzymy powinien mie¶cić się w ramach okre¶lonych
przez specyfikację.
Weryfikacja poprawno¶ci programu polega na sprawdzeniu, że faktycznie
tak jest.
Paradygmat funkcyjny polega na tym, że pisz±c program tworzymy pojęcia matematyczne, coraz bardziej skomplikowane, aż do osi±gnięcia celu. Pojęcia te maj± postać stałych i funkcji, st±d nazwa programowanie funkcyjne.Oczywi¶cie tworzone funkcje s± wykonywalne, tzn.\ dostarczaj±c argumentów możemy obliczyć ich warto¶ci. Weryfikacja programu funkcyjnego polega na udowodnieniu, że tworzone przez nas funkcje zawieraj± się w relacjach okre¶lonych przez specyfikacje (i s± okre¶lone na odpowiednich dziedzinach).
Charakterystyczne dla programowania funkcyjnego jest również to, że funkcje s± ,,obywatelami pierwszej kategorii, tzn.\ przysługuj± im wszystkie te prawa, co innym warto¶ciom. W tej chwili nie jest jeszcze jasne o jakie prawa może chodzić. Można jednak ¶miało powiedzieć, że jest to jedna z fundamentalnych zasad programowania funkcyjnego.
Porównajmy paradygmat funkcyjny i imperatywny. Programowanie imperatywne jest powszechnie znane. Na czym jednak polega paradygmat imperatywny? W naszych programach zwykle staramy się wymodelować istotny dla nas fragment otaczaj±cego nas ¶wiata. ¦wiat ten, składa się (na codzienny użytek) z przedmiotów. Przedmiotom tym odpowiadaj± w programach imperatywnych zmienne lub obiekty. Przedmioty w ¶wiecie rzeczywistym zmieniaj± się wraz z upływem czasu. Podobnie więc, zmienne i obiekty obdarzone s± stanem, który może się zmieniać w czasie. Dane s± to pewne przedmioty, na których należy wykonywać okre¶lone czynno¶ci, w wyniku których przeistocz± się one w wyniki. Upływ czasu w ¶wiecie rzeczywistym jest modelowany przez upływ czasu w komputerze, a zmiany stanów s± realizowane przez przypisania.
Pojęcie czasu nie jest tak bardzo obecne w programach funkcyjnych. Oczywi¶cie, aby użyć pojęcia musimy je najpierw zdefiniować, a żeby uzyskać wynik funkcji musimy najpierw dostarczyć argumentów. W ,,czystym programowaniu funkcyjnym nie występuje jednak pojęcie zmiennej, ani przypisania. Nie ma też pętli, jako konstrukcji zwi±zanych z czasem i zmian±.