|
|
Linia 1: |
Linia 1: |
| Jaki jest cel programowania? | | 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±.
| |
Jaki jest cel programowania?