27
Start ezyki programowania Okre´ slenie j ˛ ezyka programowania Paradygmaty programowania ezyki i paradygmaty programowania Tadeusz Chmaj Instytut Teleinformatyki ITI PK Kraków marzec 2012 Tadeusz Chmaj Wyklad I

Jezyki i paradygmaty programowania - Instytut Teleinformatykimars.iti.pk.edu.pl/~chmaj/CC++/w01.pdf · elementy C++ - rozszerzenia C, podstawy podejscia´ obiektowego Literatura zalecana

Embed Size (px)

Citation preview

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jezyki i paradygmaty programowania

Tadeusz Chmaj

Instytut TeleinformatykiITI PK Kraków

marzec 2012

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Sprawy Organizacyjne

Dane kontaktowe: Tadeusz Chmaj

e-mail: [email protected]: wtorki – 14:45 – 15:45budynek „Houston”, p.102, Instytut Teleinformatyki

Organizacja kursu:

dwusemestralny kurs, wykład+lab.semestr I - zaliczenie na podst. oceny z laboratoriumsemestr II - zaliczenie + egzamin pisemnymozliwosc zwolnienia z egzaminu dla osób, które uzyskajazaliczenie na:

conajmniej 4.5 w tym semestrze5.0 w nastepnym semestrze

obecnosc na wykładach - zalecana

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Zakres wykładu - I semestr

Plan wykładu - I semestrprzeglad jezyków i paradygmatów programowaniajezyk C - przykład jezyka imperatywnego – dokładneomówienieelementy C++ - rozszerzenia C, podstawy podejsciaobiektowego

Literatura zalecana - I semestr

B. Kernighan, D. Ritchie, Jezyk ANSI CJ.Grebosz, Symfonia C++S. Prata, Szkoła programowania, jezyk C++

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Spis rzeczy

1 Start

2 Jezyki programowaniaDefinicja, historiaKomputery programowalneJezyki niskiego i wysokiego poziomu

3 Okreslenie jezyka programowaniaJak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

4 Paradygmaty programowaniaCo to jest paradygmat programowaniaGłówne paradygmaty programowania

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Definicja, historiaKomputery programowalneJezyki niskiego i wysokiego poziomu

Co to jest jezyk programowania?

jezyk programowania – sztuczny jezyk, zaprojektowanytak, by sterowac maszyna, w szczególnosci komputerempierwsze takie jezyki - wczesniejsze niz komputery –sterowanie krosien Jacquarda lub pianoli;rok 1833 - Charles Babbage - projekt maszynyanalitycznej, wykorzystanie rozwiazania JackardaAda Lovelace - pierwsze programy na maszyne Babbige’apierwsze elektroniczne maszyny obliczeniowe (MARK I,ENIAC) - nie były w pełni programowalne; algorytmrealizowany przez odpowiednia konfiguracje sprzetowa(system połaczen)rok 1945 - John von Neumann, First Draft, raport IAS,propozycja nowej architektury komputera

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Definicja, historiaKomputery programowalneJezyki niskiego i wysokiego poziomu

Architektura von Neumanna

cel: programowalna maszyna uniwersalnaczesci składowe maszyny:

jednostka centralna, procesor (CPU),pamiec,urzadzenia wejscia i wyjscia (input/output)systemu połaczen wyzej wymienionych podukładów(magistrala)

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Definicja, historiaKomputery programowalneJezyki niskiego i wysokiego poziomu

Zasada działania

procesor wyposazony w zdolnosc wykonywania pewnejilosci elementarnych rozkazóworganizacja procesora:

sterowanie wykonanie rozkazów – jednostka sterujaca(control unit)operacje arytmetyczno-logiczne: jednostkaartytmmetyczno-logiczna (ALU)podukład pamieci przechowujacej dane dla ALU orazwyniki obliczen: rejestry

główna cecha modelu von Neumanna – pomysł programu:program - ciag rozkazów opisujacych kroki jakie trzebawykonackluczowy punkt

program wraz z danymi przechowywany w pamieciwykonywany sekwencyjnie rozkaz po rozkaziemoze modyfikowac pamiec

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Definicja, historiaKomputery programowalneJezyki niskiego i wysokiego poziomu

Wykonanie progamu

Model pamieci

pamiec – ciag ponumerowanych komórek, z których kazdamoze przechowac dane lub rozkazynumer komórki(adres) - jednoznacznie ja okresla

prosty program - komórki 0, 1, 2, 3 - rozkazy; 4, 5. 6 - daneTadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Definicja, historiaKomputery programowalneJezyki niskiego i wysokiego poziomu

Jezyki niskiego poziomu

move czy add – mnemoniki rozkazów maszynowych(rozumianych i wykonywanych bezposrednio przezprocesor)programowanie w takim stylu - wymaga znajomosciarchitektury maszyny (listy rozkazów, rodzaju iprzeznaczenia rejestrów, rozkładu pamieci, sposóbu jejadresowaniataki rodzaj programowania – programowanie w jezykuniskiego poziomu (w asemblerze)asembler - silnie powiazany ze sprzetem

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Definicja, historiaKomputery programowalneJezyki niskiego i wysokiego poziomu

Jezyki wysokiego poziomu

zwykle – uzywamy jezyka wysokiego poziomu (Fortran,Basic, Pascal, C); główne powody:

prosty i łatwo interpretowany przez człowieka kod, np.:suma := a+bnie odnosi sie bezposrednio do sprzetu (a raczej dopewnych abstrakcji z niego wywiedzionych)pozwala skupic sie na rozwiazaniu problemu a nie nadopasowywaniu do wymagan sprzetuproblem – taki kod nie jest rozumiany przez procesor

dla jezyków wysokiego poziomu – przed wykonaniemkoniecznosc przekształcenia (translacji) kodu na ciagrozkazów maszynowychmozliwe sposoby transkacji: kompilacja lub interpretacjatranslator - zalezny od sprzetu - jego wykonanie to czescimplementacji jezyka

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Jezyk programowania - definicja formalna

w teorii jezyków formalnych: A- alfabet (niepusty zbiórdopuszczalnych symboli)A∗ zbiór wszystkich mozliwych napisów jaki moznautworzyc z symboli wzietych z Ajezyk L - dowolny podzbiór zbioru wszystkich napisów A∗,L ⊂ A∗;wiekszosc tak okreslonych jezyków na ogół jest zupełnienieinteresujacapotrzeba bardziej konstruktywnego podejsciaodbywa sie to poprzez okreslenie składni i semantykijezyka

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Opis jezyka

składnia (syntax) – zbiór reguł okreslajacych kombinacjesymboli uwazanych za poprawne w danym jezyku (“jakajest dozwolona form”),czyli okreslajacych:

jak zapisujemy deklaracjejak tworzymy poleceniajak wygladaja struktury sterujace (np. instrukcjewarunkowe, petle) itp.

semantyka – okresla znaczenie tych dopuszczalnychprzez składnie form (“co one robia”)

Przykład: okreslenie prostej instrukcji warunkowej w C

składnia: if “(” wyrazenie “)” instrukcjasemantyka: oblicz wyrazenie i jezeli reprezentuje prawde,wykonaj instrukcje

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Opis składni

mozliwy scisły, formalny opis składnietap pierwszy - ustalenie zbioru dostepnych symbolietap drugi - okreslenie zbioru poprawnych leksemów(leksem - najmniejsza czesc jezyka programowania, któralogicznie nie moze byc podzielona na mniejsze kawałki -np. identyfikatory, słowa kluczowe, operatory)etap trzeci - okreslenie reguł tworzenia poprawnychskładniowo składowych jezyka (deklaracji, wyrazen,instrukcji, programów)do opisu składni jezyków programowania czesto uzywa sienotacji BNF (Backus-Naur Form)

składnia - zbiór reguł postaci:<symbol> ::= <definicja symbolu>symbole, które moga byc po lewej - symbole nieterminalnesymbole tylko po prawej - symbole terminalne

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Notacja BNF

Dodatkowe symbole i konwencje, upraszczajace zapis:

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Notacja BNF - przykład

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Jak mierzyc popularnosc jezyka?

Istnieja setki jezyków programowaniaKtórych warto sie uczyc?Jedna z przesłanek - popularnosc jezykaStosowane kryteria pomiaru popularnosci:

Analiza ofert pracy dla programistówIlosc ksiazek wydawanych dotyczacych danego jezykaOszacowanie ilosci linii kodu napisanego w danym jezykuZliczanie odwołan do nazwy jezyka znalezionych przezprzegladarki

Trudnosci w realizacji takich pomiarów:niejednoznacznosc kryteriówefekty historyczne - legacy software - Gartner Group data

w 1997 80 % swiatowego bussinesu uzywałooprogramowania w COBOLU;szacowany rozmiar tego oprogramowania 200 mld linii

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Wyniki pomiarów - TIOBE index

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Jak okreslamy jezyk?SkładniaPopularnosc jezyków programowania

Wyniki pomiarów - SourceForge index

Wnioski - kazdy wyciaga sam ...

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Paradygmat - co to takiego?

paradygmat - modne słowo pochodzenia greckiego(πα%εδειγµα);

podstawowe znaczenie: wzorzec, przykład na cos;znaczenie szersze: ogólny sposób działania, rozumowania,pojmowania rzeczy w danej dziedzinie

paradygmat programowania: zestaw typowych dla danejgrupy jezyków mechanizmów udostepnionychprogramiscie oraz zbiór sposobów interpretacji tychmechanizmów przez semantyke jezykaparadygmat programowania - ogół oczekiwanprogramistywobec jezyka programowania i komputera, na którymbedzie działał programsposób postrzegania rzeczywistosci (tak maszyny i jejdziałania, jak tez swiata zewnetrznego) okreslony przezdany jezyk programowania

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Z punktu widzenia maszyny

mamy stan maszyny okreslony przez zawartosc pamieci istan procesora (rejestry, liczniki rozkazów)program - zapisany w pamieci wraz z danymi ciagrozkazówmaszyna wykonuje kolejne rozkazy, stan maszyny ulegazmianomkoniec, gdy stan maszyny osiaga zakładana postactakie podejscie do programowania - paradygmatimperatywny - naturalny sposób podejscia dla jezykówniskiego poziomu

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Z punktu widzenia człowieka - programisty

dla człowieka wygodniejsze inne podejscie:nie wdajemy sie w szczegóły wykonaniapodajemy, co chcemy osiagnacnie okreslamy dokładnie jak

takie podejscie - paradygmat deklaratywnyparadygmaty imperatywny vs. deklaratywny – główna ospodział w podejsciu do programowaniarózne jezyki programowania pozwalaja na realizacjeróznych rozwiazan posrednich

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Paradygmat imperatywny

pierwotne podejscie do programowania realizowany wsposób czysty przez jezyki niskiego poziomujezyki wysokiego poziomu (Fortran, Pascal, C) - uzywajapewnych abstrakcji ale ciagle odpowiadaja paradygmatowiimperatywnemuprzykład programu:

program pierwszy;var i, n, s: integer;beginread(n);s := 1;for i := 2 to n dos := s * i;

write(s)end.

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Paradygmat imperatywny - warianty

paradygmat programowania strukturalnego- zaleca hierarchiczne dzielenie kodu na bloki strukturalne,z jednym punktem wejscia i jednym lub wieloma punktamiwyjscianieuzywanie (lub ograniczenie) instrukcji skoku (goto)własciwe struktury: instrukcja warunkowe (if, if...else), petle(while, repeat), instrukcje wyboru (if...else if ...else)

paradygmat programowania proceduralnegpdzielimy program na oddzielne elementy kodu - procedury(podprogramy, funkcje)moga one byc wielokrotnie wywoływane z róznymiparammetramimozliwe wywołania rekursywne

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Paradygmat objektowy

program - zbiór porozumiewajacych sie obiektówobiekty - kontenery zawierajace dane oraz funkcje(metody) do ich przekształcaniakluczowe cechy tego podejscia:

enkapsulacja - selektywne udostepnienie elementówskładowych obiektów swiatu zewnetrznemudziedziczenie - mozliwosc tworzenia obiektów bardziejskomplikowane na bazie prostszych oraz tworzeniahierarchii powiazanych klaspolimorfizm - umozliwia wybór sposobu działania odaktualnego typu obiektu

public class Hello {public static void main(String[] args) {

System.out.println("Hello, I am James B.");}

}

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Paradygmat programowania funkcyjnego

rodzaj programowania deklaratywnegoopis rzeczywistosci, program - funkcje (“wszystko jestfunkcja”)brak zmiennych (nie ma efektów ubocznych), tradycyjnierozumianych petliprogram powstaje jako złozenie funkcji, wazna rola rekursjitworzenie funkcji wyzszego rzedu (których argumentami iwynikiem moga byc inne funkcje

(DEFINE (suma m n)(IF (> m n)0(+ m (suma (+ m 1) n))

))

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Paradygmat programowania w logice

rodzaj programowania deklaratywnego – nie “wydajemyrozkazów”, tylko opisujemy, co wiemy i co chcemy uzyskacprogram = zbiór zaleznosci (przesłanki) i pewnestwierdzenie (cel)wykonanie programu – próba udowodnienia celu w oparciuo podane przesłankiobliczenia – 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).

Tadeusz Chmaj Wykład I

StartJezyki programowania

Okreslenie jezyka programowaniaParadygmaty programowania

Co to jest paradygmat programowaniaGłówne paradygmaty programowania

Jezyki – paradygmaty

Popularne jezyki i realizowane przez nie paradygmaty:

Tadeusz Chmaj Wykład I