Języki programowania

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

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

Język programowania PASCAL

Podstawy programowania

Programowanie współbieżne i rozproszone

Programowanie RAD Delphi

Język programowania. Andrzej Bobyk


Programowanie komputerów

Wstęp do programowania

Podstawy programowania wykład

Język ludzki kod maszynowy

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

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

Algorytmy od problemu do wyniku

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

Języki i paradygmaty programowania. I. Wprowadzenie

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

Technologie informacyjne - wykład 12 -

Historia modeli programowania

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

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

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Podstawy Programowania. Języki programowania

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Języki i metodyka programowania

Podstawy informatyki (3)

Podstawy programowania. Wprowadzenie

Wprowadzenie do programowania

Podstawy programowania w języku C

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

Szablony funkcji i szablony klas

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Języki programowania deklaratywnego

Programowanie w języku C++ Podstawowe paradygmaty programowania

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Programowanie obiektowe

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Środowiska i platformy programistyczne

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

Podstawy Programowania Obiektowego

Wykład 1 Inżynieria Oprogramowania

Wykład 1 Wiadomości wstępne

Programowanie obiektowe. Wprowadzenie

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

Praktyka Programowania

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

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Wykład 1 Informacje Podstawowe

Krótka historia języków programowania

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

dr inż. Paweł Myszkowski Wykład nr 5 ( )

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Król Łukasz Nr albumu:

Jerzy Nawrocki, Wprowadzenie do informatyki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Podstawy Informatyki Języki programowania

O (o)programowaniu. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Wykład 0 Informacje Podstawowe

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

ForPascal Interpreter języka Pascal

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

KONSTRUKCJA KOMPILATORÓW

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

Metody Kompilacji Wykład 1 Wstęp

Języki programowania zasady ich tworzenia

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

Programowanie obiektowe

INFORMATYKA Pytania ogólne na egzamin dyplomowy

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

Technologie cyfrowe semestr letni 2018/2019

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Pascal - wprowadzenie

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Wykład 1 Informacje Podstawowe

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma studiów: Stacjonarne. audytoryjne. Wykład Ćwiczenia

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

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

Programowanie w języku Python. Grażyna Koba

Paradygmaty programowania

Modelowanie i Programowanie Obiektowe

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

Języki programowania imperatywnego

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

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr I

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

I rok. semestr 1 semestr 2 15 tyg. 15 tyg. Razem ECTS. laborat. semin. ECTS. konwer. wykł. I rok. w tym. Razem ECTS. laborat. semin. ECTS. konwer.

Cel stosowania metod i środków informatyki

Wstęp do Informatyki i Programowania

Informatyka. Prowadzący: Dr inż. Sławomir Samolej D102 C, tel: , WWW: ssamolej.prz-rzeszow.

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

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Programowanie obiektowe

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

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

wstęp (podstawowe pojęcia związane z programowaniem, przegląd języków programowania, sieci działań, ogólne zasady programowania zorientowanego

Transkrypt:

Języki programowania

historia Programowanie w języku maszynowym komputera (1-sza generacja) Wprowadzenie nazw mnemonicznych kody operacji, identyfikatory argumenty; ręczne tłumaczenie Asembler program tłumaczący język asemblerowy (2-ga generacja) Język asemblerowy - wady zależny od architektury konkretnego komputera Programowanie małymi kroczkami Języki programowania 3trzeciej generacji Wysokopoziomowe konstrukcje pierwotne, dające się zaimplementować w postaci ciągu rozkazów maszynowych

Wczesne języki programowania trzeciej generacji FORTRAN (FORmula TRANslator)- zastosowania naukowe i inżynieryjne COBOL (Commom Busines-Oriented Language) zastosowania biznesowe (siły morskie USA)

TRANSLATOR Program umożliwiający wykonanie programu napisanego w języku różnym od języka maszynowego Kompilator program źródłowy program wynikowy Interpreter program wykonujący program; rozpoznanie każdej instrukcji + wykonanie Asembler - kompilator

Języki trzeciej generacji uniezależnienie od konkretnego komputera Jeden program różne kompilatory różne platformy W praktyce brak ścisłych ustaleń dot. definicji języka problemy z przenoszeniem oprogramowania wprowadzenie standardów Środowiska programistyczne

Paradygmaty programowania Różne ścieżki rozwoju języków programowania funkcyjny Lisp, ML, Scheme obiektowy SIMULA, Smaltalk,C++, Ada95, Visual Basic, Java imperatywny Fortran, Cobol, Algol, basic, APL, C, Pascal,Ada deklaratywny GPSS, Prolog

Paradygmat imperatywny (proceduralny) Znalezienie algorytmu rozwiązującego problem Dane, ciąg poleceń, wyniki Zgodny z cyklem maszynowym JC (pobierz, dekoduj, wykonaj)

Paradygmat deklaratywny Pytanie: Na czym polega problem Zadanie programisty: precyzyjny opis problemu Zaimplementowanie ogólnego algorytmu rozwiązywania problemów Początkowo języki specjalnego przeznaczenia; wąska klasa zastosowań Symulowanie systemów ekonomicznych, politycznych, fizycznych

Paradygmat funkcyjny Konstruowanie czarnych skrzynek: we; wy Program w Lisp ie: (podziel (sumuj liczby) (zlicz liczby)) (pierwszy(sortuj lista)) Modularne konstruowanie programów

Paradygmat obiektowy OOP Object Oriented Programming Dane obiekty implementowane oddzielnie, zawierające zestaw funkcji do ich obsługi Komunikacja między modułami przesyłanie komunikatów CORBA Common Object Request Broker Architecture

Paradygmaty programowania Wpływ paradygmatu programowania na proces rozwiązywania problemów Paradygmaty tworzenia oprogramowania

Paradygmaty programowania Programowanie liniowe - wszystko w jednym worku, go to! Programowanie strukturalne - moduły operujące na lokalnych danych i zmiennych, komunikacja przez przekazywanie parametrów, każdy moduł testowany osobno Wada: zmiana struktur danych wymaga zmiany wielu modułów Programowanie zorientowane obiektowo Programowanie funkcyjne

Style programowania Top-down Bottom-up Cykl życia (life cycle) programu: projekt programu (program design) napisanie programu uruchamianie (edycja - poprawianie, translacja, wykonanie) testowanie, rozwijanie, naprawianie i pielęgnacja (maintanence) programu. Narzędzia do tworzenia oprogramowania: edytory kompilatory i interpretery debugery programy wspomagające tworzące środowisko pracy

Klasyfikacja języków programowania Języki bliskie kodu maszynowego Języki imperatywne Języki deklaratywne Języki proceduralne Języki funkcyjne Języki definicyjne - kolejne podstawienia interpretowane są jako definicje Języki logiczne - oparte na logice matematycznej, programy traktowane są jako formuły logiczne Języki ograniczeń (constraint) - problemy są w nich specyfikowane nie w sposób jawny lecz przez podanie zbioru ograniczeń Języki obiektowo zorientowane Języki programowania współbieżnego - dla komputerów o wielu procesorach Języki przepływu danych (dataflow) - dla komputerów o eksperymentalnej architekturze, sterowanych nie tyle kolejnymi instrukcjami co przepływem danych Języki czwartej generacji (4GL) - języki bardzo wysokiego poziomu, używają graficznych systemów dialogu z użytkownikiem lub opisu w języku naturalnym Języki zapytań baz danych - do zapisywania i wydobywania informacji z baz danych Metajęzyki - służące do opisu innych języków programowania

1952 asemblery 1957 Fortran John Backus,IBM, Fortran II, Fortran IV (1966), Fortran 77 (1977), Fortran 90 (1991) 1960 LISP J.McCarthy 1960 Algol Algol 60, Algol 68 1960 COBOL COBOL 85 1962 APL K. Iverson, Harvard 1962 Simula 1964 Basic 1964 PL1 1971 Prolog 1972 C Dennis Ritchie, Bell Labs, C*, Visual C 1975 Pascal N. Wirth 1979 Modula-2 N. Wirth 1980 d-base III, III+, IV, V 1983 Smaltalk 1983 Ada..Ada 95 1986 C++ Bjarne Stroustrup, AT&T, 1988 Mathematica Oparta na SMP 1995 Java SunLabs,

Fortran 1957r Obliczenia naukowe, techniczne Biblioteki matematyczne Analiza numeryczna, statystyka C. Dijkstra, tak pisał o Fortranie w 1972 roku:... wady ujawniły się dopiero po 10 latach intensywnego używania, ludzie go projektujący godni są podziwu... jednak im prędzej zapomnimy, że FORTRAN kiedykolwiek istniał, tym lepiej, bo jako nośnik myśli nie jest on już wystarczający: marnuje nasze władze umysłowe, jest zbyt ryzykowny i dlatego zbyt drogi by go używać....

Pascal 196x ; 1971, Niklaus Wirth Następca Algolu Narzędzie do nauki programowania Rozbudowane struktury danych

C Dennis Ritchie 1972 Pierwotnie język do tworzenia systemów operacyjnych (unix, PDP11) Cechy języka wysokiego oraz niskiego poziomu Nie związany z żadnym systemem ani sprzętem "Pisanie programów w C jest jak szybki taniec z brzytwami na śliskiej podłodze".

Ada 1980 Departament obrony USA Augusta Ada Lovelace z d. Byron (1815-1852) Projektowanie systemów czasu rzeczywistego Równoległe wykonywanie pewnych czynności Obsługa sytuacji wyjątkowych Wbudowane systemy komputerowe Ada 95 paradygmat obiektowy

Rozszerzenie C C++ Paradygmat obiektowy

199xr C,C++ Java Przenoszenie w sieci programów wykonywalnych - aplety

Sztuczna inteligencja LISP, Prolog, powłoki systemów ekspertowych DBMS SQL (Structured Query Language) języki baz danych: Oracle, Ingres, Informix, Paradox, dbase, FoxPro, MS Access... 4GL CA-Visual Objects Delphi Clarion Magic Programowanie wizualne (VPL) Języki symulacyjne Programowanie współbieżne Modelowanie matematyczne (Matlab, Mathcad, Mathematica) Programowanie www Java script CGI CSS PHP Perl Tcl/Tk DHTML CASE Computer Aided Software Engineering,

Podstawowe elementy języków programowaia (imperatywnych i obiektowych) Instrukcje Deklaratywne ( deklaracje) Imperatywne Komentarze Zmienne, stałe, literały const stala=1999;

Typy danych Definiują sposób interpretacji danych oraz możliwe operacje Liczby całkowite integer (notacja uzupełnieniowa do 2) Liczby rzeczywiste real (postać zmiennopozycyjna) Znaki character (kod ASCII, unicode) Wartości logiczne boolean true, false

Deklaracje zmiennych Fortran: REAL promien,obwod,pole INTEGER i,j Pascal: var promien,obwod,pole: real; i,j: integer C, C++, Java; float promien,obwod,pole; int i,j;

Fortran: Struktury danych tablica jednorodna INTEGER wynik(5,2) Pascal: var wynik: array[1..5,1..2]of integer; C: int wynik[5][2]; Java; int wynik[][]=new int [5][2]; 1,1 1,2 2,1 2,2 3,1 3,2 4,1 4,2 5,1 5,2

Struktury danych tablica niejednorodna Pascal: var osoba: record nazwisko: packed array [1..8] of char; wiek: integer; end C: struct {char nazwisko [8]; int wiek; osoba; } osoba.wiek

Instrukcje przypisania C, C++, Java i=i+1; Ada, Pascal i:=i+1; fortran razem=poczatek//koniec // - konkatenacja + - dodawanie lub konkatenacja- zależnie od typu argumentów (np. Java) przeciążenie

Instrukcje sterujące Imperatywne zmiana kolejności wykonywania instrukcji goto fortran if (w) I1; else I2; if w then I1 else I2 pascal if (w) {I1; I2; ;I n } else {J1;J2; ;Jn} C, C++, Java if w then begin I1;I2; ;I n ;end else begin J1;J2; ;J n ;end

Instrukcje sterujące Imperatywne zmiana kolejności wykonywania instrukcji do {I1;I2} while (w) repeat I1 until w while (w) {I1;I2} for(w1;w2;w3)i1; switch(w1) { case s1: I1; case s2: I2; default: I3; } while w do begin I1; I2 end; for z:=w1 to w2 do I1; case w1 of s1: I1; s2: I2; end

komentarze //komentarz /*komentarz*/ { komentarz } C komentarz

Procedury i funkcje moduł wywołujący Parametry: formalne aktualne procedura Przekazywanie: CALL procedura przez wartość przez referencję procedura;

Instrukcje we/wy readln (wartosc); writeln(wartosc); scanf( %d,&wartosc); printf( %d,wartosc;) cin>> wartosc; Cout << wartosc;

translacja Program źródłowy -> program wynikowy FAZY TRANSLACJI: Analiza leksykalna tworzy ciąg tokenów (leksemów) Analiza składniowa - rozpoznaje gramatyczną strukturę programu Generowanie kodu - Tworzenie programu w języku maszynowym

Język Podstawa - słownik symbole Ciągi słów zdania Składnia zbiór reguł Semantyka znaczenie L=L(T, N, P, S) L język; T słownik symboli końcowych N zbiór symboli pomocniczych P zbiór produkcji (reguł syntaktycznych) S symbol początkowy; S Є N

Notacja BNF Backus-Naur-Form metasymbole ::= { } Przykład: A::=x (B) B::=AC C::={+A} +,x,(,) symbole końcowe zdania: x (x) (x+x) ((x))

Diagramy składniowe A::=x (B) B::=AC C::={+A} A ( B ) x A ( A A + ) B A C x C A +

program p1; var i,j: integer; begin j:=i+1; end. Analiza leksykalna: program p1 ; var i j integer begin := +1 end. Analiza składniowa: drzewo rozbioru składniowego, tabela symboli: := id2 + nazwa leksem typ id1 i integer id2 j integer MOV id1, R1 ADD R1, #1.0 MOV R1, id2 id1 1

wyrażenie składnik + wyrażenie - x składnik składnik * / wyrażenie x+y x*y x*y-z x+y*z x x/y+(x+y) y z

x*y-z w drzewo składniowe s - w s * w s x s z y

if W1 then if W2 then I1 else I2 if-then-else if Wyr then Instr else Instr if (w1) if(w2) I1; else I2; if Wyr instrukcja then instrukcja if Wyr then instrukcja instrukcja else instrukcja if (w1) { if(w2) I1; } else I2; w1 w1 if Wyr then instrukcja else instrukcja w2 I1 I2 if Wyr w2 then I2 instrukcja I1

Konsolidacja i ładowanie Linker program łączący połączenie programów wynikowych w moduł wynikowy Program ładujący umieszcza moduł w pamięci

Programowanie obiektowe obiekt + metody(funkcje składowe) klasa - typ obiektu wzorzec do tworzenia obiektów komunikat reprezentuje operację wykonaną na obiekcie metoda określa sposób wykonania komunikatu dziedziczenie własność umożliwiająca klasie pochodzącej uzyskiwanie pól i metod klasy rodzicielskiej polimorfizm każda klasa może mieć własne wersje metod kapsułkowanie pewne elementy obiektu - prywatne

Programowanie czynności współbieżnych Przetwarzanie równoległe, współbieżne Procesy, zadania, wątki tworzenie nowych procesów komunikacja; synchronizacja

Programowanie deklaratywne bazuje na logice formalnej dedukcja logiczna ; rezolucje P OR Q Przesłanka: P Rezolucja->wniosek: Q ZASADA REZOLUCJI P OR Q R OR Q P OR R -rezolwenta zdania postaci klauzulowej (OR) P Q Q OR P

Prolog PROgramowanie w LOGice cykliczne stosowanie zasady rezolucji zbiór zdań początkowych (predykaty) dedukcja FAKTY: szybszy(żółw, ślimak). szybszy(kot, żółw). REGUŁY: stałe zmienne szybszy(x,y) AND szybszy(x,z) szybszy(x,z) logika szybszy(x,z) :- szybszy(x,y),szybszy(y,z) - Prolog ZAPYTANIA: szybszy(kot, żółw). szybszy(kot, ślimak). szybszy(w, żółw). szybszy(v,ślimak). szybszy(w, V).

Programowanie zdarzeniowe sterowane zdarzeniami program jest cały czas bombardowany zdarzeniami (events), na które musi odpowiedzieć przepływ sterowania w programie jest niemożliwy do przewidzenia z góry dominujący typ programowania GUI - zdarzenia - naciśnięcia myszy, klawiszy, żądania odświeżenia, różne zdarzenia sieciowe

Programowanie komponentowe rosnąca złożoność systemów informatycznych konieczność skrócenia czasu ich budowy potrzeba klarownej strukturalizacji procesu wytwarzania oprogramowania oraz podniesienia jego jakości wynik ewolucji obiektowego podejścia do projektowania i implementacji aplikacji - wyposażenie obiektów aplikacji w predefiniowane usługi zapewniające realizacje szeregu standardowych funkcjonalności jak np.: możliwość zdalnej komunikacji, transakcyjność, bezpieczeństwo, trwałość danych, mechanizmy łączenia, samotestowanie, samoinstalacja, etc dążenie do odseparowania usług, które można uznać za systemowe od funkcjonalności danej aplikacji znacząca redukcja złożoności budowy aplikacji wymaga opracowania interfejsów łączenia funkcjonalność aplikacji z częścią systemową stanowiącą środowisko wykonania komponentów programowanie imperatywne oraz deklaratywne

budowa serwera aplikacji

Systemy komponentowe strony serwerowej powstały w wyniku uogólnienia systemów opartych na koncepcji standardu CORBA [ORF1996] oraz usług systemowych opracowanych w ramach architektury OMA zwanych Common CORBA Service Po stronie klienta zasadniczy wpływ na ukształtowanie się komponentów warstwy prezentacji posiadały technologie związane z tworzeniem stron WWW oraz budową web serwerów. technologie środowisk komponentowych CCM (CORBA Component Model) OMG EJB (Enterprice Java Beans) SUN COM+ (Common Component Model).NET Microsoft