Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Programovací jazykyIng. Marek Běhálek
Katedra informatiky FEI VŠB-TUOA-1018 / 597 324 251
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
ZPP - Programovací jazyky 5
Životní cyklus softwarového produktu
Rozhodnutí o vytvoření produktuSpecifikace požadavkůAnalýza a návrh aplikaceImplementaceTestování a laděníDokumentaceInstalaceMarketing, prodej a podporaÚdržbaUkončení prodeje a podpory
ZPP - Programovací jazyky 6
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 7
Nástroje pro tvorbu programůEditorPřekladač / interpret x zpětný překladačSpojovací programSpráva verzíNástroje pro sestavení projektuTestovací nástroje, generátory testůLadicí programyNástroje pro ladění výkonuNástroje pro tvorbu dokumentaceTvorba instalačních balíkůDalší nástroje:
Internacionalizace (i18n)...
ZPP - Programovací jazyky 8
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 9
Eclipse
ZPP - Programovací jazyky 10
JBuilder
ZPP - Programovací jazyky 11
MS VisualStudio
ZPP - Programovací jazyky 12
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 13
Typy překladače
Kompilační překladač
Interpretační překladač
ZPP - Programovací jazyky 14
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
ZPP - Programovací jazyky 15
Překlad C++
ZPP - Programovací jazyky 16
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 17
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 18
Metody popisu syntaxe
Syntaktický diagram
Gramatikapříkaz → if podmínka then příkaz zbytekzbytek → else příkaz
| ε
if podmínka then příkaz else příkaz
ZPP - Programovací jazyky 19
Metody popisu sémantikySlovní popis
Nepř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í
Axiomatická sémantika
ZPP - Programovací jazyky 20
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 21
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 22
Vývoj přístupů k tvorběprogramů (1)
Monolitické programyupřednostnění úspornosti kódu na úkor srozumitelnosti a přehlednosti
Strukturované metodyhierarchie, abstrakcedynamické knihovny (DLL)vzdálené volání procedur (RPC)modulární programování (Modula-2)
ZPP - Programovací jazyky 23
Vývoj přístupů k tvorběprogramů (2)
Objektově orientované technologiezapouzdření – „černá skříňka“děděnípolymorfismusznovupoužitelnost
Komponentní technologierozhranístandardy
ZPP - Programovací jazyky 24
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 25
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 26
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 27
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 28
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 29
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ů
ZPP - Programovací jazyky 30
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 dobegin 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 31
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 32
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 33
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
ZPP - Programovací jazyky 34
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 35
Další jazyky
1980-83 Ada1972 C1972 Smalltalk1982-85 C++1994-95 Java2000-02 C#
ZPP - Programovací jazyky 36
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 37
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 38
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 39
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í