PF:Moduł Wstęp: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przemek (dyskusja | edycje)
Nie podano opisu zmian
Przemek (dyskusja | edycje)
Linia 1: Linia 1:
=== Porównanie paradygmatu funkcyjnego i imperatywnego ===
=== Porównanie paradygmatu funkcyjnego i imperatywnego ===
<br/>Jaki jest cel programowania?
Jaki jest cel programowania?
Pisz±c program staramy się osi±gn±ć jaki¶ cel.
Pisząc program staramy się osiągnąć jakiś cel.
Jak w każdej działalno¶ci, dobrze jest najpierw uzmysłowić sobie
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±ć ---
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 d±żymy zwykle opisuje się w tzw.\ specyfikacji.
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ć
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 mie¶cić się w ramach okre¶lonych
Program, który tworzymy powinien mieścić się w ramach określonych
przez specyfikację.
przez specyfikację.
Weryfikacja poprawno¶ci programu polega na sprawdzeniu, że faktycznie
Weryfikacja poprawności programu polega na sprawdzeniu, że faktycznie
tak jest.
tak jest.


Paradygmat funkcyjny polega na tym, że pisz±c program tworzymy
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.
osiągnięcia celu.
Pojęcia te maj± postać stałych i funkcji, st±d nazwa
Pojęcia te mają postać stałych i funkcji, stąd nazwa
''programowanie funkcyjne''.Oczywi¶cie tworzone funkcje wykonywalne, tzn.\ dostarczaj±c
''programowanie funkcyjne''.Oczywiście tworzone funkcje wykonywalne, tzn.\ dostarczając
argumentów możemy obliczyć ich warto¶ci.  
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 zawieraj± się w relacjach okre¶lonych
tworzone przez nas funkcje zawierają się w relacjach określonych
przez specyfikacje (i s± okre¶lone na odpowiednich dziedzinach).
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 ,,obywatelami pierwszej kategorii'', tzn.\
że funkcje ,,obywatelami pierwszej kategorii'', tzn.\
przysługuj± im wszystkie te prawa, co innym warto¶ciom.
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 ¶miało powiedzieć, że jest to jedna z fundamentalnych
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 otaczaj±cego nas ¶wiata.
fragment otaczającego nas świata.
¦wiat ten, składa się (na codzienny użytek) z przedmiotów.
Świat ten, składa się (na codzienny użytek) z przedmiotów.
Przedmiotom tym odpowiadaj± w programach imperatywnych
Przedmiotom tym odpowiadają w programach imperatywnych
zmienne lub obiekty.
zmienne lub obiekty.
Przedmioty w ¶wiecie rzeczywistym zmieniaj± się wraz z upływem czasu.
Przedmioty w świecie rzeczywistym zmieniają się wraz z upływem czasu.
Podobnie więc, zmienne i obiekty obdarzone stanem, który może
Podobnie więc, zmienne i obiekty obdarzone stanem, który może
się zmieniać w czasie.
się zmieniać w czasie.
Dane to pewne przedmioty, na których należy wykonywać okre¶lone
Dane to pewne przedmioty, na których należy wykonywać określone
czynno¶ci, w wyniku których przeistocz± się one w wyniki.
czynności, w wyniku których przeistoczą się one w wyniki.
Upływ czasu w ¶wiecie rzeczywistym jest modelowany przez upływ czasu
Upływ czasu w świecie rzeczywistym jest modelowany przez upływ czasu
w komputerze, a zmiany stanów realizowane przez przypisania.  
w komputerze, a zmiany stanów 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
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 zwi±zanych z czasem i zmian±.
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ą.