Upload
trinhdieu
View
223
Download
0
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