Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Programovací jazyky doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 219

Podobné prezentace


Prezentace na téma: "Programovací jazyky doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 219"— Transkript prezentace:

1 Programovací jazyky doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 /

2 ZPP - Programovací jazyky2 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)

3 ZPP - Programovací jazyky3 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?

4 ZPP - Programovací jazyky4 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

5 ZPP - Programovací jazyky5 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í

6 ZPP - Programovací jazyky6 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)

7 ZPP - Programovací jazyky7 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, …)

8 ZPP - Programovací jazyky8 Eclipse

9 ZPP - Programovací jazyky9 JBuilder

10 ZPP - Programovací jazyky10 MS Visual Studio

11 ZPP - Programovací jazyky11 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)

12 ZPP - Programovací jazyky12 Překlad C++

13 ZPP - Programovací jazyky13 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

14 ZPP - Programovací jazyky14 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

15 ZPP - Programovací jazyky15 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.

16 ZPP - Programovací jazyky16 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

17 ZPP - Programovací jazyky17 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í

18 ZPP - Programovací jazyky18 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

19 ZPP - Programovací jazyky19 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

20 ZPP - Programovací jazyky20 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"

21 ZPP - Programovací jazyky21 FORTRAN ( ) 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)

22 ZPP - Programovací jazyky22 FORTRAN C C Vypocet funkce faktorial C INTEGER FUNCTION FACT(N) IMPLICIT NONE INTEGER N, I, F F = 1 DO 10 I = 1,N F = F * I 10 CONTINUE FACT = F END PROGRAM P1 IMPLICIT NONE INTEGER N, F, FACT READ(*,*) N F = FACT(N) WRITE(*,*) "Fact = ", F END

23 ZPP - Programovací jazyky23 LISP ( ) 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, …)

24 ZPP - Programovací jazyky24 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)

25 ZPP - Programovací jazyky25 Algol 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ů

26 ZPP - Programovací jazyky26 ALGOL 60 begin 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) end

27 ZPP - Programovací jazyky27 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)

28 ZPP - Programovací jazyky28 COBOL IDENTIFICATION 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.

29 ZPP - Programovací jazyky29 BASIC (1964) Beginners All-Purpose Symbolic Instruction Code John G. Kemeny, Thomas E. Kurz, Dartmouth University první implementace je kompilátor ( :00) 1975 Tiny BASIC běží na mikropočítači s 2KB RAM 1977 Bill Gates, Paul Allen – Altair BASIC VisualBasic, VBA, VBScript VB.NET

30 ZPP - Programovací jazyky30 Pascal ( ) 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

31 ZPP - Programovací jazyky31 Další jazyky Ada 1972C 1972Smalltalk C Java C#

32 ZPP - Programovací jazyky32 C#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); }

33 ZPP - Programovací jazyky33 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

34 ZPP - Programovací jazyky34 PHP // připojení k serveru a výběr databáze mysql_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";

35 ZPP - Programovací jazyky35 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í


Stáhnout ppt "Programovací jazyky doc. RNDr. Petr Šaloun, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 219"

Podobné prezentace


Reklamy Google