Upload
hamilton-haley
View
38
Download
4
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
Programovací jazyky
doc. RNDr. Petr Šaloun, Ph.D.katedra informatiky FEI VŠB-TUO
A-1007 / 597 324 219http://www.cs.vsb.cz/saloun
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)
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
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í
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)
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, …)
ZPP - Programovací jazyky 8
Eclipse
ZPP - Programovací jazyky 9
JBuilder
ZPP - Programovací jazyky 10
MS Visual Studio
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)
ZPP - Programovací jazyky 12
Překlad C++
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
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
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.
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
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í
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
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
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"
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)
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
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, …)
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)
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ů
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
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)
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.
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
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
ZPP - Programovací jazyky 31
Další jazyky
1980-83 Ada 1972 C 1972 Smalltalk 1982-85 C++ 1994-95 Java 2000-02 C#
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); }}
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
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";
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í