
















Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Istnieje pojęcie paradygmaty programowania i na początek warto ... Paradygmat programowania to ogół oczekiwań programisty wobec języka programowania i ...
Typologia: Prezentacje
1 / 24
Ta strona nie jest widoczna w podglądzie
Nie przegap ważnych części!
Mirosław Głowacki 1 ,^2 (^1) Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki Stosowanej i Modelowania (^2) Uniwersytet im. Jana Kochanowskiego w Kielcach Wydział Matematyczno-Przyrodnmiczy Instytut Fizyki Zakład Informatyki
Październik 2017
(^1) Pojęcie paradygmatu
(^2) Podstawowe paradygmaty programowania
(^3) Programowanie imperatywne
(^4) Programowanie funkcyjne
(^5) Programowanie w logice
(^6) Programowanie obiektowo zorientowane
(^7) Paradygmaty a języki programowania
Powinniśmy zapewne zacząć od wyjaśnienia, o czym będzie mowa w niniejszym wykładzie. Istnieje pojęcie paradygmaty programowania i na początek warto przyjrzeć się znaczeniu słowa paradygmat , często nadużywanemu przez filozofów, lingwistów i informatyków Otóż, jak podaje Słownik Języka Polskiego PWN, paradygmat to:
przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp.
lub
zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny.
Jak te definicje mają się do programowania? Trudno powiedzieć - sięgnijmy jeszcze do greckich korzeni słowa. Greckie παραδειγμα oznacza wzorzec bądź przykład. Czyżby chodziło więc o typowy, wzorcowy sposób pisania programów? Niezupełnie chodzi raczej o zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer. Zatem
Paradygmat programowania to ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program.
Przyjrzyjmy się czterem zasadniczym przykładom. Przykłady te, obejmujące najbardziej powszechne paradygmaty programowania.
Programowanie imperatywne Programowanie funkcyjne Programowanie w logice Programowanie obiektowo orientowane
(^1) Pojęcie paradygmatu
(^2) Podstawowe paradygmaty programowania
(^3) Programowanie imperatywne
(^4) Programowanie funkcyjne
(^5) Programowanie w logice
(^6) Programowanie obiektowo zorientowane
(^7) Paradygmaty a języki programowania
Poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan. Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci. Abstrakcją komórek pamięci są zmienne. Języki wysokiego poziomu — takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego.
program silnia;
var i, n, s: integer;
begin
read(n); s := 1; for i := 2 to n do s := s * i; write (s)
end.
Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma żadnych efektów ubocznych. Nie ma też imperatywnych z natury, tradycyjnie rozumianych pętli (te wymagają np. zmiennych do sterowania ich przebiegiem). Konstruowanie programów to składanie funkcji, zazwyczaj z istotnym wykorzystaniem rekurencji. Charakterystyczne jest również definiowanie funkcji wyższego rzędu, czyli takich, dla których argumentami i których wynikami mogą być funkcje (a nie tylko „proste” dane jak liczby lub napisy).
Jako przykład może tu posłużyć implementacja algorytmu szybkiego sortowania quickSort w języku Haskel :
quickSort :: (Ord a) => [a] -> [a] quickSort [] = [] quickSort (x:xs) = let smallerSorted = quickSort [a | a <- xs, a <= x] biggerSorted = quickSort [a | a <- xs, a > x] in smallerSorted ++ [x] ++ biggerSorted
Jeszcze bardziej zwięzły program wg tego samego algorytmu:
quickSort [] = [] quickSort (x:xs) = quickSort [b | b<-xs, b<=x] ++ [x] ++ quickSort [b | b<-xs, b>x]
Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel). Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki. Obliczenia wykonywane są niejako „przy okazji” dowodzenia celu. Podobnie jak w programowaniu funkcyjnym, nie „wydajemy rozkazów”, a jedynie opisujemy, co wiemy i co chcemy uzyskać.
ojciec(jan, jerzy). ojciec(jerzy, janusz). ojciec(jerzy, jozef).
dziadek(X, Z) :- ojciec(X, Y), ojciec(Y, Z).
?- dziadek(X, janusz).
:- oznacza „ jeśli” lub „wtedy gdy” ?- oznacza „czy”. Stałe: rozpoczynają się z małej litery, a zmienne z dużej.
W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje. Dane składowe klasy obiektów stanowią o stanie obiektów będących ich instancjami, a funkcje składowe klasy umożliwiają zmianę tego stanu. Ważną cechą jest tu powiązanie danych (czyli stanu) z operacjami na nich (czyli poleceniami) w całość, stanowiącą odrębną jednostkę — obiekt. Cechą nie mniej ważną jest mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących.
Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie.
Nawet jeśli pogląd ten uznamy za przejaw pewnej egzaltacji, to niewątpliwie programowanie obiektowe zdobyło ogromną popularność i wypada je uznać obecnie za paradygmat dominujący.