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