Paradygmaty i języki programowania

Slides:



Advertisements
Podobne prezentacje
Temat 2: Podstawy programowania Algorytmy – 1 z 2 _________________________________________________________________________________________________________________.
Advertisements

Ekonometria WYKŁAD 10 Piotr Ciżkowicz Katedra Międzynarodowych Studiów Porównawczych.
Plan Czym się zajmiemy: 1.Bilans przepływów międzygałęziowych 2.Model Leontiefa.
NIE TAKI KOMPUTER STRASZNY JAK GO MALUJĄ PODSTAWY OBSŁUGI KOMPUTERA.
Nauczanie na odległość Dr inż. Marlena Plebańska.
Niepewności pomiarowe. Pomiary fizyczne. Pomiar fizyczny polega na porównywaniu wielkości mierzonej z przyjętym wzorcem, czyli jednostką. Rodzaje pomiarów.
EWALUACJA PROJEKTU WSPÓŁFINANSOWANEGO ZE ŚRODKÓW UNII EUROPEJSKIE J „Wyrównywanie dysproporcji w dostępie do przedszkoli dzieci z terenów wiejskich, w.
Rachunkowość Wykład 0.
OPTYMALNY CEL I PODSTAWY ROZWOJU SZKOŁY. PRZEDE WSZYSTKIM DZISIEJSZA SZKOŁA POWINNA PRZYGOTOWYWAĆ DO ŻYCIA W DRUGIEJ POŁOWIE XXI WIEKU.
Algorytmy Informatyka Zakres rozszerzony
Wyższa Szkoła Informatyki i Zarządzania w Bielsku-Białej Wydział Informatyki Kierunek: Informatyka Specjalność: Systemy Informatyczne PRACA DYPLOMOWA INŻYNIERSKA.
Model warstwowy OSI Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami programowymi w jednej stacji sieciowej.
Metody Analizy Danych Doświadczalnych Wykład 9 ”Estymacja parametryczna”
BADANIA STATYSTYCZNE. WARUNKI BADANIA STATYSTYCZNEGO musi dotyczyć zbiorowościstatystycznej musi określać prawidłowościcharakteryzujące całą zbiorowość.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
Metody sztucznej inteligencji - Technologie rozmyte i neuronowe 2015/2016 Perceptrony proste nieliniowe i wielowarstwowe © Kazimierz Duzinkiewicz, dr hab.
Definiowanie i planowanie zadań typu P 1.  Planowanie zadań typu P  Zadania typu P to zadania unikalne służące zwykle dokonaniu jednorazowej, konkretnej.
Regresja. Termin regresja oznacza badanie wpływu jednej lub kilku zmiennych tzw. objaśniających na zmienną, której kształtowanie się najbardziej nas interesuje,
Budżetowanie kapitałowe cz. III. NIEPEWNOŚĆ senesu lago NIEPEWNOŚĆ NIEMIERZALNA senesu strice RYZYKO (niepewność mierzalna)
Mikroprocesory.
Test analizy wariancji dla wielu średnich – klasyfikacja pojedyncza
Programowanie Obiektowe – Wykład 1
Kurs języka C++ – organizacja zajęć ( )
W kręgu matematycznych pojęć
Schematy blokowe.
Wyznaczanie miejsc zerowych funkcji
DEFINICJA I ZASTOSOWANIE W JĘZYKU HASKELL
terminologia, skale pomiarowe, przykłady
PROJEKT EDUKACYJNY W GIMNAZJUM STO KATOWICE
Rachunki zdań Tautologiczność funkcji
Model ISO/OSI Wykład 4.
Wykład 1 SSE Podstawowe pojęcia prawa i prawoznawstwa
Liczby pierwsze.
„Prawa Ceteris Paribus i socjo-ekonomiczne mechanizmy”
Człowiek w systemie transportowym
Modele SEM założenia formalne
Rekursje Tak jak w innych językach funkcje mogą odwoływać się same do siebie Możemy regulować głębokość przed stwierdzeniem błędu (MaxRecursion, $RecursionLimit,
Odczytywanie diagramów
Podstawy automatyki I Wykład /2016
Projektowanie wspomagane komputerem
Funkcja – definicja i przykłady
Programowanie obiektowe
Wstęp do Informatyki - Wykład 3
Budowa, typologia, funkcjonalność
KOREKTOR RÓWNOLEGŁY DLA UKŁADÓW Z NIEMINIMALNOFAZOWYMI OBIEKTAMI Ryszard Gessing Instytut Automatyki, Politechnika Śląska Plan referatu Wprowadzenie.
Kurs języka C++ – wykład 13 ( )
Świetlice szkolne w rzeczywistości prawnej
Programowanie obiektowe
BADANIA ZUZYCIA BOCZNEGO SZYN W ROZJAZDACH KOLEJOWYCH
Języki programowania.
Przetwarzanie tekstów i AWK
Instrukcje wyboru.
Zaburzenia mowy a trudności szkolne
Wykład 4 – część pierwsza
Podstawy informatyki Zygfryd Głowacz.
Prowadzący: dr inż. Adam Kozioł Temat:
Dokumentacja rysunkowa
Implementacja rekurencji w języku Haskell
Wyrównanie sieci swobodnych
Język C++ Operatory Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
Prawa ruchu ośrodków ciągłych c. d.
Ministerstwo Rolnictwa i Rozwoju Wsi
Program na dziś Wprowadzenie Logika prezentacji i artykułu
Paradygmaty i języki programowania
Modelowanie obiektowe - system zarządzania projektami
Autor: Magdalena Linowiecka
Paradygmaty i języki programowania
dr Robert Kowalczyk, PWSZ Płock
Zapis prezentacji:

Paradygmaty i języki programowania Wprowadzenie dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Czym jest paradygmat? Paradygmat to przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp. Zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych) właściwy danemu typowi wyrazów. źródło: słownik języka polskiego, PWN dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Czym jest paradygmat programowania? Paradygmat programowania (z ang. programming paradigm), to wzorzec programowania przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach. Paradygmat programowania definiuje sposób patrzenia programisty na przepływ sterowania i wykonywanie programu komputerowego. źródło: www.wikipedia.pl dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Podział paradygmatów Programowanie Imperatywne Deklaratywne Zdarzeniowe Obiektowe Strukturalne Generyczne Współbieżne Funkcyjne Logiczne SQL, XML Proceduralne dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Skąd taki podział? Programowanie imperatywne to paradygmat programowania, który opisuje proces wykonywania jako sekwencję instrukcji zmieniających stan programu. Podobnie jak tryb rozkazujący w lingwistyce wyraża żądania jakichś czynności do wykonania, programy imperatywne składają się z ciągu komend do wykonania przez komputer. Programowanie deklaratywne to paradygmat programowania, w którym programista zamiast definiowania sposobu rozwiązania, czyli sekwencji kroków prowadzących do uzyskania wyniku, opisuje samo rozwiązanie. Innymi słowy programowanie w tych językach polega na opisywaniu tego co nas interesuje a nie jak to zrobić (brak opisu przepływu sterowania). dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie imperatywne vs. deklaratywne dr Robert Kowalczyk WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Przykład – programowanie imperatywne a deklaratywne Imperatywne programowanie: var numbers = [1,2,3,4,5] var doubled = [] for(var i = 0; i < numbers.length; i++) { var newNumber = numbers[i] * 2 doubled.push(newNumber) } console.write(doubled) //=> [2,4,6,8,10] Deklaratywne programowanie var doubled = numbers.map(function(n) { return n * 2 }) console.log(doubled) //=> [2,4,6,8,10] dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Cztery główne paradygmaty Paradygmat programowania Proceduralnego/Strukturalnego Paradygmat programowania Obiektowego Paradygmat programowania Funkcyjnego Paradygmat programowania Logicznego dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie Proceduralne/Strukturalne Paradygmat programowania proceduralnego (z ang. procedural programming), to paradygmat programowania zalecający dzielenie kodu na procedury, czyli fragmenty wykonujące ściśle określone operacje. Procedury nie powinny korzystać ze zmiennych globalnych (w miarę możliwości), lecz pobierać i przekazywać wszystkie dane (czy też wskaźniki do nich) jako parametry wywołania. Paradygmat programowania strukturalnego (z ang. structured programming), to paradygmat zalecający hierarchiczne dzielenie kodu na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia. Chodzi przede wszystkim o nieużywanie (lub ograniczenie) instrukcji skoku (goto). Trzema kluczowy strukturami są: - sekwencja (instrukcja_1; instrukcja_2;…; instrukcja_n), - wybór (if, if...else, switch, case), - powtarzanie (while, repeat, for). Strukturalność zakłócają instrukcje typu: break, continue, które jednak w niektórych przypadkach znacząco podnoszą czytelność kodu i elastyczność kodu. Kluczowe koncepcje: zmienne, typy, procedury i dane abstrakcyjne. Zastosowania: oprogramowanie sieciowe, systemy operacyjne. Języki charakterystyczne dla tych paradygmatów, to m.in.: Fortran (lata 50. XX wieku), Cobol (lata 60. XX wieku), Pascal (lata 70. XX wieku), C (lata 70. XX wieku), C++ (lata 80. XX wieku), i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie Proceduralne/Strukturalne - przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Programowanie Obiektowe Paradygmat programowania obiektowego (ang. object-oriented programming), to paradygmat programowania, w którym programy definiuje się za pomocą obiektów - elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Kluczowe koncepcje: klasy i obiekty, dziedziczenie, enkapsulacja, polimorfizm. Zastosowania: aplikacje WWW i aplikacje desktopowe – współczesny rynek oprogramowania. Języki charakterystyczne dla tego typu paradygmatu, to m.in.: Simula (lata 60. XX wieku), Smalltalk (lata 80. XX wieku), C++ (lata 90. XX wieku), C# (początek XXI wieku), Java (lata 90. XX wieku), i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Obcject-oriented programming - example dr Robert Kowalczyk WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie Funkcyjne Paradygmat programowania funkcyjnego lub paradygmat programowania funkcjonalnego (z ang. functional programming), to paradygmat programowanie będący odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń. Podstawą teoretyczną programowania funkcyjnego był opracowany w latach 30. XX wieku przez Alonzo Churcha rachunek lambda, a dokładnie rachunek lambda z typami. Kluczowe koncepcje: funkcje, rachunek lambda, parametryczny polimorfizm. Zastosowania: teoretyczne, telekomunikacja, obliczenia finansowe. Języki charakterystyczne dla tego typu paradygmatu, to m.in.: Lisp (lata 50. XX wieku), ML (lata 70. XX wieku), Haskell (lata 80. XX wieku), H# (lata 80. XX wieku), Erlang (lata 80. XX wieku) i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk WMiI UŁ Programowanie funkcyjne - przykład dr Robert Kowalczyk WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie funkcyjne - przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie w logice Paradygmat programowania logicznego lub paradygmat programowania w logice (z ang. logic programming), to będąca odmianą programowania deklaratywnego metoda programowania, w której program podawany jest jako pewien zestaw zależności, i relacji zachodzących między tymi zależnościami. Kluczowe koncepcje: fakty, relacje i zapytania. Zastosowania: teoretyczne, sztuczna inteligencja (przetwarzanie języka naturalnego, rozpoznawanie obrazów). Języki charakterystyczne dla tego typu paradygmatu, to m.in.: Gödel (lata 70. XX wieku), Fril (lata 70. XX wieku), Prolog (lata 70. XX wieku), i inne. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie w logice - przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Programowanie w logice – przykład dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Popularność języków – index TIOBE źródło: www.tiobe.com dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Informacje Ogólne Zaliczenie ćwiczeń: kolokwium + referat Zaliczenie wykładu: test (15 pytań zamkniętych + 5 pytań otwartych) Ocena z przedmiotu: 50% ćwiczenia + 50% wykład Wykłady i Ćwiczenia na: www.math.uni.lodz.pl/~kowalcr Dyżur: pokój A327, Czwartek 12.00-14.00 (ewentualnie po zajęciach) dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Wprowadzenie 24 luty 2018 (Robert Kowalczyk) Wiadomości wstępne i przedmiocie Podział referatów Powtórzenie z C++ dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Haskell 0 10 marca 2018 (Robert Kowalczyk) Wprowadzenie do Haskella dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Haskell 1 10 marca 2018 Rozdział 3 Types and Typeclasses (Wieruszewski i Turek) Rozdział 3 Types and Typeclasses Rozdział 4 Syntax in Functions z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Haskell 2 17 marca 2018 Rozdział 5 Recursion (Parczewski i Paturak) Rozdział 5 Recursion Rozdział 6 Higher order functions z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Haskell 3 17 marca 2018 (Blaszczyk i Filipek) Rozdział 7 Modules Rozdział 8 Making Our Own Types and Typeclasses z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Haskell 4 12 maja 2018 (Kania i Zimny) Rozdział 9 Input and Output Rozdział 11 Functors, Applicative Functors and Monoids z książki Learn You a Haskell for Great Good! autorstwa Mirana Lipovaca dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Zadania Haskell 12 maja 2018 (wszyscy) dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Prolog 0 12 maja 2018 (Robert Kowalczyk) Wprowadzenie do Prologa dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Prolog 1 12 maja 2018 Rozdział 1 Tutorial Introduction (Wojtas i Olczykowski) Rozdział 1 Tutorial Introduction Rozdział 2 A Closer Look z książki Programming in Prolog autorstwa William Clocksin, Christopher S. Mellish dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Prolog 2 26 maja 2018 (Fras i Jeziorski) Rozdział 3 Using Data Structures Rozdział 4 Backtracking and the ”Cut” z książki Programming in Prolog autorstwa William Clocksin, Christopher S. Mellish dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Prolog 3 26 maja 2018 Rozdział 5 Input and Output (Sarzalski i Chojnacki) Rozdział 5 Input and Output Rozdział 6 Built-in Predicates z książki Programming in Prolog autorstwa William Clocksin, Christopher S. Mellish dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Prolog 4 26 maja 2018 Rozdział 7 More Example Programs (Biniek i Furmanek i Synowiec) Rozdział 7 More Example Programs z książki Programming in Prolog autorstwa William Clocksin, Christopher S. Mellish dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Zadania Prolog 2 czerwca 2018 (wszyscy) dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

Kolokwium Haskell i Prolog/Egzamin 0 9 czerwca 2018 (wszyscy) dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Literatura do przedmiotu Learn You a Haskell for Great Good! Miron Lipovaca Programming in Prolog William Clocksin, Christopher S. Mellish Strony i książki poświęcone językom programowania: Haskell i Prolog dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ

dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ Dziękuję za Uwagę!!!  dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ