Języki i paradygmaty programowania

Podobne dokumenty
Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Języki i paradygmaty programowania. I. Wprowadzenie

Programowanie w języku C++ Podstawowe paradygmaty programowania

Języki programowania zasady ich tworzenia

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Modelowanie i Programowanie Obiektowe

Historia modeli programowania

Wstęp do Informatyki dla bioinformatyków

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie komputerów

Paradygmaty programowania

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Metodyka i Technika Programowania 1

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Paradygmaty programowania

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Języki programowania deklaratywnego

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Podstawy programowania

Java EE produkcja oprogramowania

Programowanie Obiektowe i C++

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

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

Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Podstawy Programowania Algorytmy i programowanie

Algorytm. Krótka historia algorytmów

Technologie cyfrowe semestr letni 2018/2019

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Informatyczna Wieża Babel, czyli o różnych językach programowania. Informatyczna Wieża Babel, czyli o różnych językach programowania

Technologie informacyjne - wykład 12 -

Język programowania PASCAL

Wykład 1 Informacje Podstawowe

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Podstawy programowania wykład

Wykład 1 Wiadomości wstępne

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Programowanie Obiektowe i C++ Marcin Benke

Języki programowania imperatywnego

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Definicje. Algorytm to:

Programowanie obiektowe - 1.

Algorytm. Krótka historia algorytmów

Programowanie w języku C++ Grażyna Koba

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Ocenianie ciągłe (praca przy Formująca tablicy oraz przy komputerze) pisemne, końcowe zaliczenie pisemne

Wykład 1 Informacje Podstawowe

KARTA KURSU. Wstęp do programowania

Algorytmy od problemu do wyniku

Architektura komputerów

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Podstawy programowania w języku C

Metody Kompilacji Wykład 1 Wstęp

elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Wykład 4. Algorytmy i programy. Algorytmy + struktury danych = programy. Niklaus Wirth. Algorytm = logika + sterowanie.

Języki i metodyka programowania

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Algorytm. Definicja i algorytmu METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE

Metody Programowania

Wykład 8: klasy cz. 4

Szablony funkcji i szablony klas

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Wstęp do Informatyki. Program, proces tworzenia programu Środowisko programistyczne Języki programowania

Programowanie w języku Python. Grażyna Koba

Wstęp do programowania

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Algorytmizacja i programowanie. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

PARADYGMATY PROGRAMOWANIA Wykład 4

Materiały do laboratorium MS ACCESS BASIC

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

KARTA MODUŁU KSZTAŁCENIA

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Algorytm. a programowanie -

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

LEKCJA TEMAT: Zasada działania komputera.

Języki i paradygmaty programowania

Podstawy Programowania Obiektowego

Praktyka Programowania

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Style programowania - krótki przeglad

Transkrypt:

Języki i paradygmaty programowania Instytut Teleinformatyki ITI PK Kraków marzec 2012

Sprawy Organizacyjne Dane kontaktowe: e-mail: tchmaj@pk.edu.pl konsultacje: wtorki 14:45 15:45 budynek Houston, p.102, Instytut Teleinformatyki Organizacja kursu: dwusemestralny kurs, wykład+lab. semestr I - zaliczenie na podst. oceny z laboratorium semestr II - zaliczenie + egzamin pisemny możliwość zwolnienia z egzaminu dla osób, które uzyskaja zaliczenie na: conajmniej 4.5 w tym semestrze 5.0 w następnym semestrze obecność na wykładach - zalecana

Zakres wykładu - I semestr Plan wykładu - I semestr przeglad języków i paradygmatów programowania język C - przykład języka imperatywnego dokładne omówienie elementy C++ - rozszerzenia C, podstawy podejścia obiektowego Literatura zalecana - I semestr B. Kernighan, D. Ritchie, Język ANSI C J.Grębosz, Symfonia C++ S. Prata, Szkoła programowania, język C++

Spis rzeczy 1 Start 2 Definicja, historia Komputery programowalne Języki niskiego i wysokiego poziomu 3 Jak określamy język? Składnia Popularność języków programowania 4 Co to jest paradygmat programowania Główne paradygmaty programowania

Co to jest język programowania? Definicja, historia Komputery programowalne Języki niskiego i wysokiego poziomu język programowania sztuczny język, zaprojektowany tak, by sterować maszyna, w szczególności komputerem pierwsze takie języki - wcześniejsze niż komputery sterowanie krosien Jacquarda lub pianoli; rok 1833 - Charles Babbage - projekt maszyny analitycznej, wykorzystanie rozwiazania Jackarda Ada Lovelace - pierwsze programy na maszynę Babbige a pierwsze elektroniczne maszyny obliczeniowe (MARK I, ENIAC) - nie były w pełni programowalne; algorytm realizowany przez odpowiednia konfigurację sprzętowa (system połaczeń) rok 1945 - John von Neumann, First Draft, raport IAS, propozycja nowej architektury komputera

Architektura von Neumanna Definicja, historia Komputery programowalne Języki niskiego i wysokiego poziomu cel: programowalna maszyna uniwersalna części składowe maszyny: jednostka centralna, procesor (CPU), pamięć, urzadzenia wejścia i wyjścia (input/output) systemu połaczeń wyżej wymienionych podukładów (magistrala)

Zasada działania Start Definicja, historia Komputery programowalne Języki niskiego i wysokiego poziomu procesor wyposażony w zdolność wykonywania pewnej ilości elementarnych rozkazów organizacja procesora: sterowanie wykonanie rozkazów jednostka sterujaca (control unit) operacje arytmetyczno-logiczne: jednostka artytmmetyczno-logiczna (ALU) podukład pamięci przechowujacej dane dla ALU oraz wyniki obliczeń: rejestry główna cecha modelu von Neumanna pomysł programu: program - ciag rozkazów opisujacych kroki jakie trzeba wykonać kluczowy punkt program wraz z danymi przechowywany w pamięci wykonywany sekwencyjnie rozkaz po rozkazie może modyfikować pamięć

Wykonanie progamu Definicja, historia Komputery programowalne Języki niskiego i wysokiego poziomu Model pamięci pamięć ciag ponumerowanych komórek, z których każda może przechować dane lub rozkazy numer komórki(adres) - jednoznacznie ja określa prosty program - komórki 0, 1, 2, 3 - rozkazy; 4, 5. 6 - dane

Języki niskiego poziomu Definicja, historia Komputery programowalne Języki niskiego i wysokiego poziomu move czy add mnemoniki rozkazów maszynowych (rozumianych i wykonywanych bezpośrednio przez procesor) programowanie w takim stylu - wymaga znajomości architektury maszyny (listy rozkazów, rodzaju i przeznaczenia rejestrów, rozkładu pamięci, sposóbu jej adresowania taki rodzaj programowania programowanie w języku niskiego poziomu (w asemblerze) asembler - silnie powiazany ze sprzętem

Języki wysokiego poziomu Definicja, historia Komputery programowalne Języki niskiego i wysokiego poziomu zwykle używamy języka wysokiego poziomu (Fortran, Basic, Pascal, C); główne powody: prosty i łatwo interpretowany przez człowieka kod, np.: suma := a+b nie odnosi się bezpośrednio do sprzętu (a raczej do pewnych abstrakcji z niego wywiedzionych) pozwala skupić się na rozwiazaniu problemu a nie na dopasowywaniu do wymagań sprzętu problem taki kod nie jest rozumiany przez procesor dla języków wysokiego poziomu przed wykonaniem konieczność przekształcenia (translacji) kodu na ciag rozkazów maszynowych możliwe sposoby transkacji: kompilacja lub interpretacja translator - zależny od sprzętu - jego wykonanie to część implementacji języka

Jak określamy język? Składnia Popularność języków programowania Język programowania - definicja formalna w teorii języków formalnych: A- alfabet (niepusty zbiór dopuszczalnych symboli) A zbiór wszystkich możliwych napisów jaki można utworzyć z symboli wziętych z A język L - dowolny podzbiór zbioru wszystkich napisów A, L A ; większość tak określonych języków na ogół jest zupełnie nieinteresujaca potrzeba bardziej konstruktywnego podejścia odbywa się to poprzez określenie składni i semantyki języka

Opis języka Start Jak określamy język? Składnia Popularność języków programowania składnia (syntax) zbiór reguł określajacych kombinacje symboli uważanych za poprawne w danym języku ( jaka jest dozwolona form ),czyli określajacych: jak zapisujemy deklaracje jak tworzymy polecenia jak wygladaj a struktury sterujace (np. instrukcje warunkowe, pętle) itp. semantyka określa znaczenie tych dopuszczalnych przez składnię form ( co one robia ) Przykład: określenie prostej instrukcji warunkowej w C składnia: if ( wyrażenie ) instrukcja semantyka: oblicz wyrażenie i jeżeli reprezentuje prawdę, wykonaj instrukcję

Opis składni Start Jak określamy język? Składnia Popularność języków programowania możliwy ścisły, formalny opis składni etap pierwszy - ustalenie zbioru dostępnych symboli etap drugi - okreslenie zbioru poprawnych leksemów (leksem - najmniejsza część jezyka programowania, która logicznie nie moze byc podzielona na mniejsze kawałki - np. identyfikatory, słowa kluczowe, operatory) etap trzeci - określenie reguł tworzenia poprawnych składniowo składowych języka (deklaracji, wyrażeń, instrukcji, programów) do opisu składni języków programowania często używa się notacji BNF (Backus-Naur Form) składnia - zbiór reguł postaci: <symbol> ::= <definicja symbolu> symbole, które moga być po lewej - symbole nieterminalne symbole tylko po prawej - symbole terminalne

Notacja BNF Start Jak określamy język? Składnia Popularność języków programowania Dodatkowe symbole i konwencje, upraszczajace zapis:

Notacja BNF - przykład Jak określamy język? Składnia Popularność języków programowania

Jak mierzyć popularność języka? Istnieja setki języków programowania Których warto się uczyć? Jedna z przesłanek - popularność języka Stosowane kryteria pomiaru popularności: Jak określamy język? Składnia Popularność języków programowania Analiza ofert pracy dla programistów Ilość ksiażek wydawanych dotyczacych danego języka Oszacowanie ilości linii kodu napisanego w danym języku Zliczanie odwołań do nazwy języka znalezionych przez przegladarki Trudności w realizacji takich pomiarów: niejednoznaczność kryteriów efekty historyczne - legacy software - Gartner Group data w 1997 80 % światowego bussinesu używało oprogramowania w COBOLU; szacowany rozmiar tego oprogramowania 200 mld linii

Wyniki pomiarów - TIOBE index Jak określamy język? Składnia Popularność języków programowania

Jak określamy język? Składnia Popularność języków programowania Wyniki pomiarów - SourceForge index Wnioski - każdy wyciaga sam...

Paradygmat - co to takiego? Co to jest paradygmat programowania Główne paradygmaty programowania paradygmat - modne słowo pochodzenia greckiego (παϱεδειγµα); podstawowe znaczenie: wzorzec, przykład na coś; znaczenie szersze: ogólny sposób działania, rozumowania, pojmowania rzeczy w danej dziedzinie paradygmat programowania: zestaw typowych dla danej grupy języków mechanizmów udostępnionych programiście oraz zbiór sposobów interpretacji tych mechanizmów przez semantykę języka paradygmat programowania - ogół oczekiwańprogramisty wobec języka programowania i komputera, na którym będzie działał program sposób postrzegania rzeczywistości (tak maszyny i jej działania, jak też świata zewnętrznego) określony przez dany język programowania

Z punktu widzenia maszyny Co to jest paradygmat programowania Główne paradygmaty programowania mamy stan maszyny określony przez zawartość pamięci i stan procesora (rejestry, liczniki rozkazów) program - zapisany w pamięci wraz z danymi ciag rozkazów maszyna wykonuje kolejne rozkazy, stan maszyny ulega zmianom koniec, gdy stan maszyny osiaga zakładana postać takie podejście do programowania - paradygmat imperatywny - naturalny sposób podejścia dla języków niskiego poziomu

Co to jest paradygmat programowania Główne paradygmaty programowania Z punktu widzenia człowieka - programisty dla człowieka wygodniejsze inne podejście: nie wdajemy się w szczegóły wykonania podajemy, co chcemy osiagn ać nie określamy dokładnie jak takie podejście - paradygmat deklaratywny paradygmaty imperatywny vs. deklaratywny główna oś podział w podejściu do programowania rózne języki programowania pozwalaja na realizację różnych rozwiazań pośrednich

Paradygmat imperatywny Co to jest paradygmat programowania Główne paradygmaty programowania pierwotne podejście do programowania realizowany w sposób czysty przez języki niskiego poziomu języki wysokiego poziomu (Fortran, Pascal, C) - używaja pewnych abstrakcji ale ciagle odpowiadaja paradygmatowi imperatywnemu przykład programu: program pierwszy; var i, n, s: integer; begin read(n); s := 1; for i := 2 to n do s := s * i; write(s) end.

Co to jest paradygmat programowania Główne paradygmaty programowania Paradygmat imperatywny - warianty paradygmat programowania strukturalnego - zaleca hierarchiczne dzielenie kodu na bloki strukturalne, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia nieużywanie (lub ograniczenie) instrukcji skoku (goto) właściwe struktury: instrukcja warunkowe (if, if...else), pętle (while, repeat), instrukcje wyboru (if...else if...else) paradygmat programowania proceduralnegp dzielimy program na oddzielne elementy kodu - procedury (podprogramy, funkcje) moga one być wielokrotnie wywoływane z różnymi parammetrami możliwe wywołania rekursywne

Paradygmat objektowy Co to jest paradygmat programowania Główne paradygmaty programowania program - zbiór porozumiewajacych się obiektów obiekty - kontenery zawierajace dane oraz funkcje (metody) do ich przekształcania kluczowe cechy tego podejścia: enkapsulacja - selektywne udostępnienie elementów składowych obiektów światu zewnętrznemu dziedziczenie - możliwosć tworzenia obiektów bardziej skomplikowane na bazie prostszych oraz tworzenia hierarchii powiazanych klas polimorfizm - umożliwia wybór sposobu działania od aktualnego typu obiektu public class Hello { public static void main(string[] args) { System.out.println("Hello, I am James B."); } }

Co to jest paradygmat programowania Główne paradygmaty programowania Paradygmat programowania funkcyjnego rodzaj programowania deklaratywnego opis rzeczywistości, program - funkcje ( wszystko jest funkcja ) brak zmiennych (nie ma efektów ubocznych), tradycyjnie rozumianych pętli program powstaje jako złożenie funkcji, ważna rola rekursji tworzenie funkcji wyższego rzędu (których argumentami i wynikiem moga być inne funkcje (DEFINE (suma m n) (IF (> m n) 0 (+ m (suma (+ m 1) n)) ) )

Co to jest paradygmat programowania Główne paradygmaty programowania Paradygmat programowania w logice rodzaj programowania deklaratywnego nie wydajemy rozkazów, tylko opisujemy, co wiemy i co chcemy uzyskać program = zbiór zależności (przesłanki) i pewne stwierdzenie (cel) wykonanie programu próba udowodnienia celu w oparciu o podane przesłanki obliczenia efekt uboczny dowodu ojciec(jan, jerzy). ojciec(jerzy, janusz). ojciec(jerzy, józef). dziadek(x, Z) :- ojciec(x, Y), ojciec(y, Z).?- dziadek(x, janusz).

Języki paradygmaty Co to jest paradygmat programowania Główne paradygmaty programowania Popularne języki i realizowane przez nie paradygmaty: