PF:Moduł Wstęp

Z Studia Informatyczne
Wersja z dnia 13:15, 14 lip 2006 autorstwa Przemek (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

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±.