Programovací jazyky Přehled a vývoj 1
Programování a programovací jazyk Historie a současnost programovacích jazyků Objektově orientované a vizuální programování Značkovací a skriptovací jazyky 2
Programování Programování = proces tvorby (psaní) programu Programátor píše program pomocí programovacího jazyka Psaní programu ¹ spuštění programu Program musí být načten v operační paměti (RAM) počítače, aby mohl být spuštěn Zajišťuje OS 3
Programovací jazyk Počítač (CPU) rozumí elektrickým signálům (bity) jazyk strojového kódu Příliš dlouhé a složité Programovací jazyk zápis instrukcí ve zkrácené podobě srozumitelné člověku Speciální program překladač (compiler) nebo interpret (interpreter) převádí instrukce programovacího jazyka do strojového kódu 4
10 PRINT HELLO 20 END 5
Překlad zdrojového kódu programu 10 PRINT HELLO Překladač 1001101 programovacího 1110101 jazyka 0010110 Zdrojový kód programu Zapsáno v BASIC, C, aj. Proces překládání zdrojového kódu Program ve strojovém kódu Obr: quantifactus.wcupa.edu/lab/mis/software.ppt 6
První generace jazyk strojového kódu Nejstarší typ programovacího jazyka Instrukce jsou tvořeny posloupností nul a jedniček (bitů) Jazyk strojového kódu je hardwarově závislý Obtížné hledání chyb 100% využití výkonu použitého procesoru (rychlost) Využití pro psaní ovladačů rychlých periferií a grafické karty 7
Druhá generace jazyk symbolických Jazyk nižší úrovně adres Obecné příkazy (např. načti data, zapiš data ) jsou zkracovány pomocí symbolických názvů Příkazy překládá do strojového kódu procesoru speciální program assembler Jazyk je také hardwarově závislý 8
Třetí generace procedurální jazyky Vyšší úroveň programování (podoba s lidskými jazykem) Příkazy odvozené z anglických slov Programátor zapisuje zdrojový kód; překladač provede interpretaci nebo překlad do objektového kódu (strojového jazyka) Interpret (interpreter): překládá jednotlivé instrukce a vykonává kód okamžitě (např. webový prohlížeč) Překladač (compiler): překládá celý program jako celek a uloží do souboru (např. exe ve Windows); program spouští operační systém později 9
Třetí generace procedurální jazyky Koncepce strukturovaného programování Příklady: Jazyk pro vědecko-technické výpočty (Fortran), hromadné zpracování dat (Cobol), univerzální jazyky (např. C, který se používá dodnes), Pascal, Basic (výuka základů programování) 10
Čtvrtá generace: problémově orientované jazyky Vyšší úroveň programovacích jazyků Využívají mnoho vestavěných funkcí, bývají často napojeny na databázi Snaha o zjednodušení a zrychlení práce programátora PowerBuilder (obecné použití), SQL (databáze), MATLAB (matematická analýza), generátory reportů, generátory aplikací, atd. 11
Porovnání programovacích jazyků Instrukce Sečti 2 a 5 a přiřaď výsledek do proměnné y Programovací jazyk Kód IBM System 370 strojový kód 00000011 00001011 00100100 01000011 00001010 00000011 00000011 00000011 00000011 00000010 00000011 00001001 00000111 00000011 00001001 00000011 00000011 00000011 00000011 00010100 00000011 00000011 00000011 00000011 IBM System 370 assembler Třetí generace FORTRAN COBOL BASIC C, C++ L R2, = F 2 A R2, = F 5 ST R2, Y y = 2 + 5 add 2, 5 giving y let y = 2 + 5; y = 2 + 5; Čtvrtá generace y = 2 + 5 Zdroj: Sawyer, Williams, Using Information Technology, 10e, 2013. 12
Pátá generace: přirozené jazyky Využití pro programování umělé inteligence (artificial intelligence, AI) a neuronových sítí Založeno na funkci běžného lidského jazyka Z části např. v osobních digitálních asistentech (Google Voice, Apple Siri, Microsoft Cortana) 13
Objektově orientované a vizuální programování 14
Objektově orientované a vizuální programování Objektově orientované programování (OOP): Data a instrukce jsou spolu v samostatném objektu, který může být opakovaně využit Objekt: samostatný modul, který obsahuje znovupoužitelný kód Zpráva: instrukce zaslaná objektu, která spustí určitou akci Metoda: instrukce, pomocí které objekt reaguje na příchozí zprávu Zdroj: Sawyer, Williams, Using Information Technology, 10e, 2013. 15
Třída a instance Každý objekt patří do určité třídy (např. dokument aplikace MS Word patří do třídy Documents) Konkrétní výskyt objektu v dané třídě se nazývá instance třídy (např. dokument aplikace MS Word s názvem domaciukol.docx je instancí třídy Documents) 16
Zapouzdření: Základní koncepty OOP Zapouzdření v objektech znamená, že k obsahu objektu se nedostane nikdo jiný, než sám vlastník. Navenek se objekt projeví jen svým rozhraním (operacemi, metodami). Private class, public class, Dědičnost: Jeden objekt může být základem pro jiné objekty; Objekty mohou být uspořádány do hierarchie tříd a podtříd Objekty mohou dědit akce a atributy vzájemně mezi sebou Zdroj: Sawyer, Williams, Using Information Technology, 10e, 201 17
Polymorfismus: Základní koncepty OOP Stejná zpráva určená různým objektům přinese různé výsledky (např. zpráva Zavři může znamenat zavření souboru, nebo ukončení okna; v závislosti na tom, který objekt tuto zprávu obdrží) Zdroj: Sawyer, Williams, Using Information Technology, 10e, 18
C++ Objektově orientovaný jazyk vyvinutý na základě jazyka C Využívá se pro psaní počítačových her a aplikací náročných na CPU a grafiku C# (.NET) Objective-C (pro ios) 19
Java Pozor! Neplést s JavaScript Nejrozšířenější OOP jazyk v praxi Od Sun Microsystems v 90. let. 20. stol., dnes Oracle Podobnost s C++ (rozdíly ve správě paměti a v syntaxi) Bankovní systémy, vývoj aplikací pro Android (nevyužívá Java VM), rozsáhlé aplikace (vysoká míra abstrakce) Využívá Virtual Machine nezávislé na platformě 20
Základy v OOP Vizuální programování Skládání programu z hotových grafických komponent Nutno doprogramovat logiku chování programu Rychlá tvorba funkčních prototypů Např. Visual Basic for Applications (součástí sady MS Office) 21
Značkovací a skriptovací jazyky 22
Značkovací jazyky Neplést s programovacími jazyky! Používá kódovací značky vkládané do textu Informace o významu a vzhledu textu Interpretované jazyky (kód načítá a vykonává interpret např. webový prohlížeč) Zdroj: Sawyer, Williams, Using Information Technology, 10e, 2013. 23
Značkovací jazyky HTML (HyperText Markup Language) Navrženo pro World Wide Web Kódy (značky) určují strukturu, rozvržení a styl stránky Standard HTML pod správou organizace W3C (World Wide Web Consortium) 24
Značkovací jazyky SGML (Structured Generalized Markup Language) Obecněji využitelný značkovací jazyk Určuje syntaxi pro vkládání značek do dokumentů Možnost tvorby vlastních sad značek (dnes např. XML) XML Vychází z SGML Zdroj: Sawyer, Williams, Using Information Technology, 10e, 2013. 25
HTML 5 Vylepšená podoba jazyka HTML Zabudované podpora multimédií (pro bohaté internetové aplikace, RIA) Otevřený standard Vhodné pro webové a mobilní aplikace 26
Skript Seznam příkazů uložených v souboru (např. webová stránka, textový soubor) Spouští se po načtení kódu v interpretu (např. webový prohlížeč, interpret příkazů v OS, aj.) Skriptovací jazyk interpretovaný programovací jazyk 27
Skriptovací jazyky - typy Skriptovací jazyky na straně klienta Skriptovací jazyky na straně serveru Jazyky interpretu příkazů (shell) Ostatní skriptovací jazyky 28
Skriptovací jazyky na straně klienta Kód se spouští v klientském počítači (obvykle webový prohlížeč) Nutnost softwarové podpory (rozšiřující moduly do prohlížeče, tzv. plug-iny) Nikoliv pro JavaScript 29
JavaScript Objektově orientovaný jazyk pro webové prohlížeče Kód se vkládá přímo do webové stránky a spouští se při výskytu příslušné události na stránce (např. klik na tlačítko) Jednotlivé objekty HTML stránky objektový model dokumentu (Document Object Model, DOM) Zdroj: Sawyer, Williams, Using Information Technology, 10e, 2013. 30
Další skriptovací jazyky na straně klienta ActionScript (aplikace v Adobe Flash) VBScript Python 31
Skriptovací jazyky na straně serveru Kód je interpretován na serveru Výsledek (např. webová stránka) se odesílá klientovi Zobrazení výsledku v klientském zařízení (nejčastěji webový prohlížeč) Příklady: Moodle, IS ČZU, Seznam.cz, atd. 32
PHP PHP (zkratka pro PHP: Hypertext Preprocessor) Pro tvorbu dynamických webových stránek napojených na databázi Od 1994 (v 2014 cca 82 % webových serverů 1 ) Obvyklá kombinace Linux + Apache + PHP + MySQL Základní interpret jazyka je freeware, vývojové nástroje mohou být placené 33
ASP (Active Server Pages) ASP.NET Pro tvorbu dynamických webových stránek napojených na databázi Skriptovací technologie od Microsoftu, komerční licence Původní technologie ASP nahrazena ASP.NET Nemají nic společného, programování pomocí C#/VisualBasic v rámci.net frameworku Možnost interpretovaného, nebo kompilovaného překladu (rychlejší), nebo kombinace 34
VBScript Skriptovací jazyk vyvinutý firmou Microsoft Odvozený z Visual Basicu Objektově orientovaný přístup Kompatibilní s OS Windows Například pro správu systému na dálku, administraci sítě, apod. 35 35
Souhrnné otázky 1. Vysvětlete rozdíl mezi algoritmizací a programováním. 2. K čemu slouží programovací jazyk? 3. Vyjmenujte vývojové generace programovacích jazyků a stručně je od sebe odlište. 4. Jaká je úloha překladače zdrojového kódu při tvorbě programu? 5. Jaký je rozdíl mezi interpretovaným a kompilovaným programovacím jazykem? Do které kategorie patří značkovací jazyky? 6. Co je skriptovací jazyk? K čemu se využívá? 7. Uveďte typy skriptovacích jazyků. 8. V čem se liší skriptovací jazyky na straně klienta a na straně serveru? Uveďte příklad. 36