9
1 Programovací jazyky doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes [email protected] ZPP - Programovací jazyky 2 Obsah Co je to programovací jazyk Překlad a zpracování programu Nástroje pro tvorbu programů Metody popisu programovacích jazyků Typy programovacích jazyků Vývoj programovacích jazyků Studijní program „Informační technologie“ ZPP - Programovací jazyky 3 Programovací jazyk Popis výpočtů, obvykle ve tvaru, jenž umožňuje provedení elektronickým počítačem (program) Standardizovaný nástroj pro komunikaci s počítačem S jakými daty má počítač pracovat? Jak se tato data budou ukládat a přenášet? Které akce a kdy se mají provést? ZPP - Programovací jazyky 4 Proč používáme programovací jazyky? Zjednodušují přenos určitého typu informace Noty v hudbě Matematické formule Elektrotechnická schémata Vyznačují se velkou přesností vyjádření Přirozené jazyky – vynechávání, gramatické chyby, víceznačnost Jsou obvykle proveditelné na počítači Značkovací jazyky (HTML) – data, ne program Specifikační jazyky (λ-kalkul) – teoretický výzkum

Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

Embed Size (px)

Citation preview

Page 1: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

1

Programovací jazykydoc. Ing. Miroslav Beneš, Ph.D.

katedra informatiky FEI VŠB-TUOA-1007 / 597 324 213

http://www.cs.vsb.cz/[email protected]

ZPP - Programovací jazyky 2

Obsah

Co je to programovací jazykPřeklad a zpracování programuNástroje pro tvorbu programůMetody popisu programovacích jazykůTypy programovacích jazykůVývoj programovacích jazyků

Studijní program „Informační technologie“

ZPP - Programovací jazyky 3

Programovací jazyk

Popis výpočtů, obvykle ve tvaru, jenžumožňuje provedení elektronickým počítačem (program)Standardizovaný nástroj pro komunikaci s počítačem

S jakými daty má počítač pracovat?Jak se tato data budou ukládat a přenášet?Které akce a kdy se mají provést?

ZPP - Programovací jazyky 4

Proč používáme programovací jazyky?

Zjednodušují přenos určitého typu informaceNoty v hudběMatematické formuleElektrotechnická schémata

Vyznačují se velkou přesností vyjádřeníPřirozené jazyky – vynechávání, gramatické chyby, víceznačnost

Jsou obvykle proveditelné na počítačiZnačkovací jazyky (HTML) – data, ne programSpecifikační jazyky (λ-kalkul) – teoretický výzkum

Page 2: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

2

ZPP - Programovací jazyky 5

Překlad a zpracování programu

Zdrojový text programu

Překlad asestavení Testování

Chyby při překladu

Neúspěšné testy

Provoz

Chyby za provozu

Ladění

ZPP - Programovací jazyky 6

Nástroje pro tvorbu programůEditorPřekladač / interpret x zpětný překladačSpojovací program (linker)Správa verzí – CVS, Subversion, …Ladicí program (debugger)Nástroje pro ladění výkonu (profiler)Testovací nástroje, generátory testůGenerátor instalačních balíkůNástroje pro internacionalizaci (i18n)

ZPP - Programovací jazyky 7

Integrovaná vývojováprostředí (IDE)

Poskytují více uvedených funkcí současně

Prostředí orientovaná na určitý jazykBorland Pascal, C++, JBuilder, C#BuilderSharpDeveloper, JCreator, NetBeans

Univerzální prostředíEclipse (Java, C++, C#, …)MS Visual Studio (C++, C#, Jscript, VB, …)

ZPP - Programovací jazyky 8

Eclipse

Page 3: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

3

ZPP - Programovací jazyky 9

JBuilder

ZPP - Programovací jazyky 10

MS VisualStudio

ZPP - Programovací jazyky 11

Překladač

Analýza zdrojového textu, vyhledání chybZákladní stavební prvky – identifikátory, čísla, řetězce, operátory, oddělovače, …Programové konstrukce – deklarace, příkazy, výrazyKontextové vazby – definice/užití, datové typy

Syntéza cílového programu / InterpretaceStrojový jazyk (nebo JSI)Jazyk virtuálního procesoru (JVM, CLR)

ZPP - Programovací jazyky 12

PřekladačInkrementální překlad

Umožňuje po drobné opravě přeložit jen změněnou částMožnost provádění drobných změn během laděníprogramu

Just-in-time překladGenerování instrukcí virtuálního procesoru (Java VM - .class, .NET CLR – jazyk IL)Překlad až v okamžiku volání podprogramuOptimalizace podle konkrétního procesoru

Page 4: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

4

ZPP - Programovací jazyky 13

Popis programovacího jazyka

Syntaxe - struktura jazykových konstrukcíTextové jazyky (C, Pascal, Java)Grafické jazyky (vývojové diagramy, UML)

a > 10

x := x + 5

if a > 10 then beginx := x + 5;

end

ano

ne

ZPP - Programovací jazyky 14

Popis programovacího jazykaSémantika – význam jazykových konstrukcí

Statická sémantika – v době překladuDynamická sémantika – v době běhu

Příklad: Co znamená X + 1 ?X je celé číslo: Přičti k hodnotě proměnné X jedničku.X je řetězec: Převeď konstantu 1 na řetězec a připoj na konec řetězce uloženého v proměnné X.X je objekt: Zavolej metodu "operator +“s parametrem 1.X je reální číslo: Převeď 1 na reálné číslo 1.0 a přičti k hodnotě proměnné X.

ZPP - Programovací jazyky 15

Syntaktický diagram

Gramatikapříkaz → if podmínka then příkaz zbytekzbytek → else příkaz

| ε

Metody popisu syntaxe

if podmínka then příkaz else příkaz

ZPP - Programovací jazyky 16

Metody popisu sémantiky

Slovní popisNepřesný

Formální popisOperační sémantika

Význam konstrukce popíšeme pomocí jednodušších operací

Denotační sémantikaVýznam konstrukce popíšeme pomocí funkcí

Page 5: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

5

ZPP - Programovací jazyky 17

Typy programovacích jazykůImperativní jazyky

Posloupnost příkazů měnících stav výpočtuMožnost opakovaného přiřazení do proměnné

Deklarativní jazykyPosloupnost podmínekPočítač musí najít postup, jak je dodržet

Funkcionální jazyky – ML, Haskell, LISPLogické jazyky – PROLOG, CLP, Gödel, MercuryDotazovací jazyky - SQL

ZPP - Programovací jazyky 18

Vývoj programovacích jazykůStrojové jazyky

Posloupnost instrukcí v číselném tvaruJazyky symbolických instrukcí / adres

Pojmenované instrukcePojmenované adresy – proměnné, návěští skokůMakrodefinice

AutokódySložitější příkazyPříklad: MAT (Minsk autokód – CTI, PIS, JDI NA, …)

Vyšší programovací jazyky

ZPP - Programovací jazyky 19

První programovací jazykykolem 1946 Konrad Zuse – Plankalkul

použit také pro šachyrukopis publikován až v roce 1972, nebyl nikdy implementován

1949 John Mauchly - Short Codeprvní počítačový jazyk skutečně použitý na elektronickém zařízeníurčen pro zadávání rovnic"ručně kompilovaný" jazyk

1951 Grace Murray Hopperprosazovala vytvoření vyšších jazykůpracovala na návrhu prvního překladačezavedla pojem "počítačový virus"

ZPP - Programovací jazyky 20

FORTRAN (1954-57)FORmula TRANslator - John Backus, IBM

problémově orientovaný, strojově značně nezávislý, optimalizace (nutná v konkurenci s JSI)realizace překladače si vyžádala 18 člověkoroků -jeden z největších projektů v té době

V současnosti stále nejpoužívanější jazyk v oblasti vědeckotechnických výpočtů! (ISO: 1997)

Page 6: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

6

ZPP - Programovací jazyky 21

FORTRANCC Vypocet funkce faktorialC

INTEGER FUNCTION FACT(N)IMPLICIT NONEINTEGER N, I, FF = 1DO 10 I = 1,N

F = F * I10 CONTINUE

FACT = FEND

PROGRAM P1IMPLICIT NONEINTEGER N, F, FACTREAD(*,*) NF = FACT(N)WRITE(*,*) "Fact = ", FEND

ZPP - Programovací jazyky 22

LISP (1958-59)

LISt Processing - John McCarthy, M. I. T.první funkcionální jazyk - implementace lambda-kalkulumožnost imperativního stylu programování

dosud se používá i jako skriptovací jazyk v aplikacích (AutoCAD, emacs, …)

ZPP - Programovací jazyky 23

LISP(defun quicksort (vec l r)

(let ((i l)(j r)(p (svref vec (round (+ l r) 2))))

(while (<= i j)(while (< (svref vec i) p) (incf i))(while (> (svref vec j) p) (decf j))(when (<= i j)(rotatef (svref vec i) (svref vec j))(incf i)(decf j)))

(if (> (- j l) 1) (quicksort vec l j))(if (> (- r i) 1) (quicksort vec i r)))

vec)

ZPP - Programovací jazyky 24

Algol 60 (1958-60)

Algorithmic Language - J. Backus, P. Naurbloková struktura, složené příkazy, rekurzesyntax poprvé popsána formálně gramatikou(BNF)koncem 60. let se stal nejpopulárnějším jazykem v Evropě – např. i ve výuce

základ mnoha dalších programovacích jazyků

Page 7: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

7

ZPP - Programovací jazyky 25

ALGOL 60begin

integer N;ReadInt(N);

beginreal array Data[1:N];real sum, avg;integer i;sum:=0;for i:=1 step 1 until N do

begin real val;ReadReal(val);Data[i]:=if val<0 then -val else val

end;for i:=1 step 1 until N do

sum:=sum + Data[i];avg:=sum/N;PrintReal(avg)

endend

ZPP - Programovací jazyky 26

COBOL (1960)COmmon Business Oriented Language

pro vytváření rozsáhlých programů k vládním a obchodním účelůmformalizovaný anglický text, čitelný pro manažeryzavedl propracované záznamové strukturyvytvořen konferencí CODASYL (Conference of Data Systems and Languages)

Dosud se používá zejména ve finančních institucích (ISO:2002, XML 2006)

ZPP - Programovací jazyky 27

COBOLIDENTIFICATION DIVISION.PROGRAM-ID. Iter.AUTHOR. Michael Coughlan.

DATA DIVISION.WORKING-STORAGE SECTION.

01 Num1 PIC 9 VALUE ZEROS.01 Num2 PIC 9 VALUE ZEROS.01 Result PIC 99 VALUE ZEROS.01 Operator PIC X VALUE SPACE.

PROCEDURE DIVISION. Calculator.PERFORM 3 TIMES

DISPLAY "Enter First Number : "ACCEPT Num1DISPLAY "Enter Second Number : "ACCEPT Num2DISPLAY "Enter operator (+ or *) : "ACCEPT OperatorIF Operator = "+" THEN

ADD Num1, Num2 GIVING ResultEND-IFIF Operator = "*" THEN

MULTIPLY Num1 BY Num2 GIVING ResultEND-IFDISPLAY "Result is = ", Result

END-PERFORM.STOP RUN.

ZPP - Programovací jazyky 28

BASIC (1964)Beginners All-Purpose Symbolic Instruction Code

John G. Kemeny, Thomas E. Kurz, DartmouthUniversityprvní implementace je kompilátor (1. 5. 1964 04:00)1975 Tiny BASIC běží na mikropočítači s 2KB RAM1977 Bill Gates, Paul Allen – Altair BASIC

1991 - VisualBasic, VBA, VBScript2003 - VB.NET

Page 8: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

8

ZPP - Programovací jazyky 29

Pascal (1968-71)Niklaus Wirth, ETH Zurichjednoduchý jazyk, určen pro výuku programováníP-kód – instrukce virtuálního procesoru, specializované procesory pro P-kód

Borland Turbo Pascal (Anders Hejlsberg)Borland Delphi -> Kylix

ZPP - Programovací jazyky 30

Další jazyky

1980-83 Ada1972 C1972 Smalltalk1982-85 C++1994-95 Java2000-02 C#

ZPP - Programovací jazyky 31

C#using System; using System.Windows.Forms; using System.Drawing;public class Sample : Form {

[STAThread]public static int Main(string[] args) {

Application.Run(new Sample());return 0;

}public Sample() {

Button btn = new Button();btn.Text = "OK";Controls.Add(btn);

}}

ZPP - Programovací jazyky 32

Skriptovací jazyky

Slouží obvykle k rozšíření nějaké aplikace

Operační systém – sh, command.com

WWW server – Perl, PHP

WWW prohlížeč – JavaScript, VBScript

Page 9: Programovací jazyky z ř z ů z ů z ů - cs.vsb.cz · PDF filezSharpDeveloper, JCreator, NetBeans ... zGrafické jazyky (vývojové diagramy, UML) a > 10 x : ... Syntaktický diagram

9

ZPP - Programovací jazyky 33

PHP// připojení k serveru a výběr databázemysql_connect("localhost","uzivatel","heslo");mysql_select_db("databaze");

// dotaz$h = mysql_query("SELECT * FROM uzivatele

WHERE jmeno='$jmeno'");

// vytvoření objektu z výsledného řádku$uz = mysql_fetch_object($h);if( !$uz )

die "Uživatel neexistuje";if( $uz->heslo != $heslo )

die "Špatné heslo";

ZPP - Programovací jazyky 34

Studijní program „Informační technologie“

Úvod do programování (Java)Programování v C/C++Programování v C#Programovací technikyProgramovací jazyky a překladačeSeminář z programování

Funkcionální a logické programování