Překladače 1. Překladače a programovací jazyky © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah:

Slides:



Advertisements
Podobné prezentace
Základy ukládání dat v počítači
Advertisements

VÝVOJ PROGRAMOVACÍCH JAZYKŮ PERSPEKTIVY ELEKTRONIKY 3. Celostátní seminář, 18. března 2003 Ing. Pavel Pokorný UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ Fakulta technologická.
Programovací jazyky a přehled softwaru
Operační systémy jednouživatelské, jednoúlohové - MS DOS (výjimka pro PRINT) jednouživatelské, víceúlohové - MS Windows víceživatelské, víceúlohové - Unixy.
HYPERTEXT PREPROCESSOR. PROGRAMOVÁNÍ. DEFINICE POJMŮ Problém Problém nevyřešený, nežádoucí stav obvykle vyžaduje nějaké řešení Neřešitelný problém Neřešitelný.
Typy programů operační systémy programy pro práci se soubory
Programovací jazyky Programovací jazyky jsou jazyky sloužící k tvorbě počítačových programů Dělení:  nižší  vyšší jazyky primitivní, jejichž instrukce.
Algoritmizace a programování
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Základy informatiky programovací prostředky
Principy překladačů Interpretované jazyky Jakub Yaghob.
Otázka č. 8 Ingrid Vyroubalová.  Veškeré programové vybavení počítače  Určeno pro interakci s uživatelem  Využívá grafické rozhraní (GUI) (MS Office,
25. ALGORITMIZACE A PROGRAMOVÁNÍ
Základy algoritmizace a programování
Štěpán Lískovec, 4.A.  =základní programové vybavení počítače (tj.software)  hlavní úkol:  A, zajistit uživateli možnost ovládat PC  B, vytvořit pro.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
+ZPE Ing.Jan MAYER (Základy programování pro elektrotechniku)
Algoritmy a programování
Implementace Přednáška z předmětu Počítače I Dana Nejedlová
Základy programování a programovací jazyky
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Simulační modely a programové vybavení. Vývoj simulačních programů  Původně pouze strojový kód –Příliš dlouhé, náročné na programátora, obtížné hledání.
Operační systém (OS) ICT Informační a komunikační technologie.
Jazyk PHP Programovací jazyk PHP (Hypertext preprocessor) je skriptovací jazyk, který běží na straně serveru. KLIENT - SERVER Server posílá do vašeho počítače.
OPERAČNÍ SYSTÉMY Správa zdrojů Historie Funkce Ovládání počítače
Informatika I 1. přednáška
Od zadání úlohy k programu Výpočetní systémy I 8. přednáška.
Aplikační programy, programovací jazyky, formáty datových souborů
Vytváření a realizace algoritmů Algoritmy a datové struktury
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Úvod do programování.
1 Programování a p. jazyky Postup při tvorbě programu (systému) –strategie –analýza ( konceptuální modely) Datová Procesní –návrh (i/o, výjimky, algoritmus)
Jazyky pro umělou inteligenci RNDr. Jiří Dvořák, CSc.
Programování POCSI. Programovani/POCSI2 Základní pojmy Akce - děj nad objekty, mající začátek a konec, a mající přesně definovaný účinek. Příkaz - popis.
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
Procedurální (klasické) programování Popisuje algoritmus – postup, jak vyřešit úlohu.
doc. RNDr. Zdeněk Botek, CSc.
České vysoké učení technické Fakulta elektrotechnická Datové typy, výrazy vstup, výstup Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v1.02.
Základní pojmy v informatice Bohumil Bareš. Základní pojmy Data – soubory, jiný výraz pro „informace“, jsou to údaje, které vypovídají o světě, mohou.
Visual Basic - programování
Visual Basic Úvod do programování. Co je to program  Program je řada příkazů, které určují počítači, co má provádět, jak má zacházet s vloženými daty.
IB111 Programování a algoritmizace
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Základy operačních systémů
Programování v jazyce C++
Technika počítačů 3. Mikroprocesory © Milan Keršlágerhttp:// Obsah: ●
Překladače Vnitřní struktura překladače © Milan Keršláger
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 4: Programovací jazyk C Bc. Radek Libovický.
Překladače Optimalizace © Milan Keršláger
Základy programování mikropočítačů První program v jazyce symbolických adres.
CZ.1.07/1.5.00/ Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/ Střední odborná škola elektrotechnická, Centrum odborné přípravy.
Jednočipové počítače v robotických systémech Vypracoval: Ing. Jaroslav Chlubný Kód prezentace: OPVK-TBdV-AUTOROB-ME-3-JCP-JCH-001 Technologie budoucnosti.
Programovací jazyky OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
Překladače 6. Sémantická analýza
Programování mikropočítačů Platforma Arduino
Výukový materiál zpracován v rámci projektu
Vlastnosti souborů Jaroslava Černá.
UNIX 10. Procesy © Milan Keršláger
Výukový materiál zpracován v rámci projektu
Překladače Syntaktická analýza
Výukový materiál zpracován v rámci projektu
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Překladače 2. Vnitřní struktura překladače
Operační systémy Vnitřní struktura překladače
Operační systémy 1.
UNIX 10. Procesy Obsah: algoritmus, program, proces, thread
Překladače 6. Sémantická analýza
Úvod do programovania Ing. Eva Gabonayová 2012.
Informační a komunikační technologie 5. ročník
Informační a komunikační technika
Transkript prezentace:

Překladače 1. Překladače a programovací jazyky © Milan Keršlágerhttp:// Obsah: ● rozdělení a příklady programovacích jazyků ● preprocesor jazyka C, makra, podmíněný překlad ● kompilátory, interprety, hybridní překladače, JIT ● příklady překladačů

Překladač ● též kompilátor ● z anglického to compile – sestavit, zpracovat ● typicky vyšší programovací jazyk → strojový kód – ale obecně jakákoliv transformace vstupu na výstup – např. renderování HTML do grafické podoby – interpret příkazové řádky, interpret GUI,... ● dekompilátor ● opačný postup

Strojový kód ● posloupnost strojových instrukcí ● umístěny v operační paměti (RAM) ● číselný zápis → kód instrukce, operand(y) ● vykonávány procesorem (CPU) ● jazyk symbolických adres (JSA) ● tj. „assembly language“ ● mnemotechnické kódy pro strojové instrukce ● vytváří je výrobce CPU ● překladač do strojového kódu je assembler – tj. „sestavovač“

Programovací jazyk ● slouží k zápisu algoritmu ● matematicky: formální jazyk – množina konečných slov nad určitou abecedou – Ada Lovelace → první programátor (1815 – 1872) ● rozlišení dle míry abstrakce – nižší programovací jazyky (JSA, C) – vyšší programovací jazyky ● dle způsobu překladu a spuštění – kompilované (C, Pascal) – interpretované (Perl, Python, PHP) – kombinované (Java)

Jazyk C ● 1972 – přepis jádra Unixu z JSA do jazyka C ● název: (A – „assembler“), následník jazyka B ● dnes pokládán za nejnižší (vyšší) jazyk ● logika zápisu odpovídá strojovému kódu – nejsou řetězce, používají se ukazatele ● úsporný symbolický zápis ● do jeho příchodu se programovalo v JSA – „jádro OS lze zapsat pouze v JSA“ – malé části jádra jsou dodnes v JSA

Hello world v jazyce C # include int main(void) { printf("Hello, World!\n"); return 0; }

Pascal ● 1971 Niklaus Wirth ● určen pro výuku programování – „většinou je možný a správný jen jeden zápis“ ● 1981 – ISO norma ● různé varianty → Turbo Pascal (Borland) ● program HelloWorld(output); ● begin ● WriteLn('Hello, World!'); ● end.

Další jazyky ● COBOL (1960) ● zápis podobný angličtině ● snížila se přehlednost kódu ● BASIC ● populární v době 8bitových domácích počítačů ● nicméně dodnes Visual BASIC od Microsoftu ● Java, Smalltalk ● objektově orientované jazyky (90. léta) ● Logo, Karel, Baltík → pro děti

Rozdělení prog. jazyků ● procedurální (imperativní) ● strukturované (např. C, BASIC) ● objektově orientované (např. Smalltalk, Java) ● neprocedurální (deklarativní) ● funkcionální (např. Lisp, Haskell) ● logické (např. Prolog, Gödel)

Historie překladačů ● 1950 – něco jako kompilátor (pro jazyk A-0) ● 1957 – 1. kompletní kompilátor pro jazyk Fortran od IBM ● 1960 – 1. multiplatformní kompilátor pro jazyk Cobol ● 1962 – kompilátor přeložen jiným kompilátorem (Lisp) – problém: Co bylo dřív? Vejce nebo slepice? ● 1970 – self-hosting kompilátory (překládají samy sebe) ● 1970 – vznik jazyka Pascal (Niklaus Wirth) ● 1972 – vznik jazyka C (Dennis Ritchie)

Typy překladačů ● kompilátor ● již zmíněno dříve ● transformace programovací jazyk → strojový kód – uložen do spustitelného souboru (provede se jen 1x) – spustitelný soubor je pak spuštěn ● interpret ● jen provádění zdrojového kódu – nevzniká spustitelný soubor – interpretace znovu při každém spuštění kódu ● shelly, skriptovací jazyky, logické prog. jazyky

Kompilátor ● „tradiční zpracování“ ● lze se věnovat zdlouhavým optimalizacím – výsledný kód může být rychlejší ● při běhu v paměti není překladač – nižší nároky na operační paměť ● nevýhodou jsou větší projekty – kompletní přeložení trvá dlouho – musí se čekat na sestavení do cílového kódu

Interpret ● zdrojový kód pokaždé znovu interpretován ● pomalejší start, další běh již relativně rychlý ● zažité pravidlo narušuje Perl – skriptovací jazyk, velmi rychlý start i běh ● za běhu v paměti interpret i interpretovaný program – může být problém na méně výkonných zařízeních ● typicky snadná přenositelnost – různé platformy i interprety se chovají stejně

Hybridní překladače ● někde mezi překladačem a interpretem ● překladač generuje přenositelný mezikód – Java používá bytecode –.NET používá XML ● mezikód je interpretován na cílově platformě ● JIT – mezikód je nejprve přeložen do strojového kódu CPU – řeší problém s rychlostí interpretace – brzdí se start programu

Překladač GCC ● GCC ● 1987 GNU: volně šiřitelná sada překladačů – původně jen C, později i Pascal, Ada, Fortran, C++,... ● dnes pod Free Software Foundation ● DJGPP ● 1989: port GCC pro DOS, 32bitový extender ● MinGW ● 1998: port GCC pro Windows ● odvozeno od Cygwin (POSIX pro Windows)