35
Programovací jazyky doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB- TUO A-1007 / 597 324 219 http://www.cs.vsb.cz/saloun [email protected]

Programovac í jazyk y

Embed Size (px)

DESCRIPTION

Programovac í jazyk y. doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 219 http ://www.cs.vsb.cz/ saloun petr.saloun @vsb.cz. Obsah. Co je to programovac í jazyk Překlad a zpracování programu Nástroje pro tvorbu programů Metody popisu programovacích jazyků - PowerPoint PPT Presentation

Citation preview

Page 1: Programovac í jazyk y

Programovací jazyky

doc. RNDr. Petr Šaloun, Ph.D.katedra informatiky FEI VŠB-TUO

A-1007 / 597 324 219http://www.cs.vsb.cz/saloun

[email protected]

Page 2: Programovac í jazyk y

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“

(text převzat od doc. Beneše)

Page 3: Programovac í jazyk y

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?

Page 4: Programovac í jazyk y

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

Page 5: Programovac í jazyk y

ZPP - Programovací jazyky 5

Překlad a zpracování programu

Zdrojový text programu

Překlad a sestavení

Testování

Chyby při překladu

Neúspěšné testy

Provoz

Chyby za provozu

Ladění

Page 6: Programovac í jazyk y

ZPP - Programovací jazyky 6

Nástroje pro tvorbu programů

Editor Př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)

Page 7: Programovac í jazyk y

ZPP - Programovací jazyky 7

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

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

Prostředí orientovaná na určitý jazyk Borland Pascal, C++, JBuilder, C#Builder SharpDeveloper, JCreator, NetBeans

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

Page 8: Programovac í jazyk y

ZPP - Programovací jazyky 8

Eclipse

Page 9: Programovac í jazyk y

ZPP - Programovací jazyky 9

JBuilder

Page 10: Programovac í jazyk y

ZPP - Programovací jazyky 10

MS Visual Studio

Page 11: Programovac í jazyk y

ZPP - Programovací jazyky 11

Překladač

Analýza zdrojového textu, vyhledání chyb Základní stavební prvky – identifikátory, čísla,

řetězce, operátory, oddělovače, … Programové konstrukce – deklarace, příkazy,

výrazy Kontextové vazby – definice/užití, datové typy

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

Page 12: Programovac í jazyk y

ZPP - Programovací jazyky 12

Překlad C++

Page 13: Programovac í jazyk y

ZPP - Programovací jazyky 13

Překladač

Inkrementální překlad Umožňuje po drobné opravě přeložit jen

změněnou část Možnost provádění drobných změn během ladění

programu Just-in-time překlad

Generování instrukcí virtuálního procesoru (Java VM - .class, .NET CLR – jazyk IL)

Překlad až v okamžiku volání podprogramu Optimalizace podle konkrétního procesoru

Page 14: Programovac í jazyk y

ZPP - Programovací jazyky 14

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 begin x := x + 5;end

ano

ne

Page 15: Programovac í jazyk y

ZPP - Programovací jazyky 15

Popis programovacího jazyka

Sémantika – význam jazykových konstrukcí Statická sémantika – v době překladu Dynamická 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.

Page 16: Programovac í jazyk y

ZPP - Programovací jazyky 16

Syntaktický diagram

Gramatika

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

zbytek else příkaz

| ε

Metody popisu syntaxe

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

Page 17: Programovac í jazyk y

ZPP - Programovací jazyky 17

Metody popisu sémantiky

Slovní popis Nepřesný

Formální popis Operační sémantika

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

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

Page 18: Programovac í jazyk y

ZPP - Programovací jazyky 18

Typy programovacích jazyků

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

Deklarativní jazyky Posloupnost podmínek Počítač musí najít postup, jak je dodržet

Funkcionální jazyky – ML, Haskell, LISP Logické jazyky – PROLOG, CLP, Gödel, Mercury Dotazovací jazyky - SQL

Page 19: Programovac í jazyk y

ZPP - Programovací jazyky 19

Vývoj programovacích jazyků

Strojové jazyky Posloupnost instrukcí v číselném tvaru

Jazyky symbolických instrukcí / adres Pojmenované instrukce Pojmenované adresy – proměnné, návěští skoků Makrodefinice

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

Vyšší programovací jazyky

Page 20: Programovac í jazyk y

ZPP - Programovací jazyky 20

První programovací jazyky

kolem 1946 Konrad Zuse – Plankalkul použit také pro šachy rukopis publikován až v roce 1972, nebyl nikdy implementován

1949 John Mauchly - Short Code první 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 Hopper prosazovala vytvoření vyšších jazyků pracovala na návrhu prvního překladače zavedla pojem "počítačový virus"

Page 21: Programovac í jazyk y

ZPP - Programovací jazyky 21

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 22: Programovac í jazyk y

ZPP - Programovací jazyky 22

FORTRANCC Vypocet funkce faktorialC INTEGER FUNCTION FACT(N) IMPLICIT NONE INTEGER N, I, F F = 1 DO 10 I = 1,N F = F * I10 CONTINUE FACT = F END

PROGRAM P1 IMPLICIT NONE INTEGER N, F, FACT READ(*,*) N F = FACT(N) WRITE(*,*) "Fact = ", F END

Page 23: Programovac í jazyk y

ZPP - Programovací jazyky 23

LISP (1958-59)

LISt Processing - John McCarthy, M. I. T. první funkcionální jazyk - implementace

lambda-kalkulu možnost imperativního stylu programování

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

Page 24: Programovac í jazyk y

ZPP - Programovací jazyky 24

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)

Page 25: Programovac í jazyk y

ZPP - Programovací jazyky 25

Algol 60 (1958-60)

Algorithmic Language - J. Backus, P. Naur bloková struktura, složené příkazy, rekurze syntax 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 26: Programovac í jazyk y

ZPP - Programovací jazyky 26

ALGOL 60begin integer N; ReadInt(N);

begin real 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

Page 27: Programovac í jazyk y

ZPP - Programovací jazyky 27

COBOL (1960)

COmmon Business Oriented Language pro vytváření rozsáhlých programů k vládním a

obchodním účelům formalizovaný anglický text, čitelný pro manažery zavedl propracované záznamové struktury vytvoř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)

Page 28: Programovac í jazyk y

ZPP - Programovací jazyky 28

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 Num1 DISPLAY "Enter Second Number : " ACCEPT Num2 DISPLAY "Enter operator (+ or *) : " ACCEPT Operator IF Operator = "+" THEN ADD Num1, Num2 GIVING Result END-IF IF Operator = "*" THEN MULTIPLY Num1 BY Num2 GIVING Result END-IF DISPLAY "Result is = ", Result END-PERFORM. STOP RUN.

Page 29: Programovac í jazyk y

ZPP - Programovací jazyky 29

BASIC (1964)

Beginners All-Purpose Symbolic Instruction Code John G. Kemeny, Thomas E. Kurz, Dartmouth

University první implementace je kompilátor (1. 5. 1964 04:00) 1975 Tiny BASIC běží na mikropočítači s 2KB RAM 1977 Bill Gates, Paul Allen – Altair BASIC

1991 - VisualBasic, VBA, VBScript 2003 - VB.NET

Page 30: Programovac í jazyk y

ZPP - Programovací jazyky 30

Pascal (1968-71)

Niklaus Wirth, ETH Zurich jednoduchý 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

Page 31: Programovac í jazyk y

ZPP - Programovací jazyky 31

Další jazyky

1980-83 Ada 1972 C 1972 Smalltalk 1982-85 C++ 1994-95 Java 2000-02 C#

Page 32: Programovac í jazyk y

ZPP - Programovací jazyky 32

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); }}

Page 33: Programovac í jazyk y

ZPP - Programovací jazyky 33

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 34: Programovac í jazyk y

ZPP - Programovací jazyky 34

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";

Page 35: Programovac í jazyk y

ZPP - Programovací jazyky 35

Studijní program „Informační technologie“

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

Funkcionální a logické programování