PF:Moduł Wstęp
Z Studia Informatyczne
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
\emph{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±.