Schopnosti překladačů vybraných strukturovaných jazyků
|
|
- Jiří Čech
- před 9 lety
- Počet zobrazení:
Transkript
1 Mendelova univerzita v Brně Provozně ekonomická fakulta Schopnosti překladačů vybraných strukturovaných jazyků Diplomová práce Vedoucí práce: Ing. Pavel Haluza Bc. Stratos Zerdaloglu Brno 2012
2 2
3 Na tomto místě bych chtěl poděkovat Ing. Pavlu Haluzovi za vedení diplomové práce a cenné rady při její tvorbě.
4 4
5 Prohlašuji, že jsem tuto diplomovou práci vyřešil samostatně s použitím literatury, kterou uvádím v seznamu. V Brně dne 23. května
6 6
7 7 Abstract Zerdaloglu, S. The abilities of compilers of selected structured languages. Diploma thesis. Brno, This thesis deals with analysis and capability testing of currently used compilers C and Pascal. Properties of compilers and their development environments were evaluated using properly selected and designed test samples. Features evaluated included time and memory demand, responses to various errors in source code or support for selected language elements. Results of individual tests were analyzed, commented, and clearly interpreted. Key words compiler, structured language, Pascal, testing samples, syntax error Abstrakt Zerdaloglu, S. Schopnosti překladačů vybraných strukturovaných jazyků. Diplomová práce. Brno, Diplomová práce se zabývá analýzou a testováním schopností v současnosti používaných překladačů jazyka C a Pascal. Za pomoci vhodně vybraných a navržených testovacích vzorků je hodnocena řada vlastností překladačů a jejich vývojových prostředí. K hodnocením vlastnostem patří časová a paměťová náročnost, reakce na různé typy chyb ve zdrojovém kódě nebo podpora vybraných prvků jazyka. Výsledky jednotlivých testů jsou analyzovány, komentovány a přehledně interpretovány. Klíčová slova překladač, strukturovaný jazyk, Pascal, testovací vzorky, syntaktická chyba
8 8
9 OBSAH 9 Obsah 1 Úvod a cíl práce 11 2 Přehled literatury 12 3 Programování Programovací paradigmata Strukturované programovací jazyky Chyby v programech Překladače Úvod do překladačů Princip práce překladače Jazyk symbolických adres Integrovaná vývojová prostředí Vybrané překladače a vývojová prostředí jazyka Pascal Vybrané překladače a vývojová prostředí jazyka C Časová a prostorová složitost Testování vlastností překladačů Testovací vzorky Hodnotící a porovnávací kritéria Využité nástroje a testovací prostředí Syntaktické a sémantické chyby Běhové a logické chyby Paměťová a časová náročnost Efektivita strojového kódu Dokumentace a podpora Specifika daného jazyka Shrnutí a interpretace výsledků Časová a paměťová náročnost Reakce na chyby Dokumentace Podpora vybraných prvků jazyka Diskuse 59 8 Závěr 61 9 Literatura 62
10 10 OBSAH
11 1 ÚVOD A CÍL PRÁCE 11 1 Úvod a cíl práce V dnešní době nám počítače stále více pomáhají usnadňovat a řešit úlohy z nejrůznějších oblastí našeho běžného života. Bez počítačů bychom se již velmi těžko obešli. Pomohou nám spočítat obtížné matematické problémy, dokáží uchovat takové množství dat, na jejichž zapamatování by nám nestačily ani tisíce našich životů. To vše nám zajistí potřebný software, bez kterého by počítač byl jen mrtvé železo. Naprostá většina softwaru je vytvořena pomocí jednoho z vyšších programovacích jazyků. Programovací nebo skriptovací jazyk je v současnosti jeden z nejpoužívanějších prostředků pro tvorbu algoritmů. Samotný programovací jazyk ale pro tvorbu výsledného programu nestačí, protože procesor počítače vyšší programovací jazyk nedokáže přímo zpracovat. Procesor je schopný zpracovat pouze strojový kód, který lze definovat jako posloupnost instrukcí prováděných procesorem počítače. Programování přímo ve strojovém kódu je pracné a v praxi se již nepoužívá. Nevýhodou je zejména používání nepřehledných číselných kódů. Z toho důvodu se dnes pro tvorbu softwaru uplatňují vyšší programovací jazyky, které programátorovi ulehčí mnoho času. Překladače následně přeloží zdrojový kód do spustitelné podoby na dané platformě. Dnes existuje pro různé programovací jazyky a odlišné platformy řada překladačů, které se od sebe liší různými vlastnostmi. Zejména různou podporou implementace daného programovacího jazyka. Pokud se věnujeme programování hlouběji, je znalost principů překladačů vhodná až nezbytná. Práce si klade za cíl analyzovat vlastnosti překladačů vybraných strukturovaných programovacích jazyků s důrazem na stanovení časové a prostorové složitosti. Snahou je zmapování možností současných překladačů strukturovaných programovacích jazyků z technického i uživatelského pohledu. Vlastnosti překladačů budou testovány na nejrůznějších vzorcích a algoritmech daného jazyka. Práce v určitém smyslu doplňuje obhájenou diplomovou práci Ing. Martina Ventruby, která se zabývala analýzou schopností překladačů objektově orientovaných programovacích jazyků (Ventruba, 2011).
12 12 2 PŘEHLED LITERATURY 2 Přehled literatury Oblast překladačů a programovacích jazyků je velice široká, a tak k ní existuje velké množství literatury v českém nebo anglickém jazyce. Z kapitoly překladačů má svůj velký význam publikace Automata and Languages: Theory and Applications od profesora Alexandera Meduny, která poskytuje podrobné teoretické zázemí překladačů a formálních jazyků (Meduna, 2000). Z publikací napsaných v českém jazyce určitě stojí za zmínku kvalitní skripta doktorky Šárky Vavrečkové ze Slezské univerzity v Opavě (Vavrečková, 2008), která obsahují čtivě a přehledně zpracovanou danou problematiku zejména podrobné rozdělení překladačů. Překladačům se věnuje i rozsáhlý seriál o překladačích na portálu Abclinuxu (Vyskočil, 2006), který je k dispozici v elektronické podobě. Informace o konkrétních překladačích jsou dostupné zpravidla pouze na webových stránkách daných produktů. Starší, ale neméně kvalitní literaturou je kniha s názvem Kompilátory číslicových počítačů od Davida Griese (Gries, 2007). Kniha seznamuje čtenáře postupně s problematikou gramatik a jazyků a věnuje se také principům překladačů a jejich optimalizaci. Z oblasti programování a algoritmizace nelze vynechat několikasvazkové světoznámé dílo Umění programování od počítačového vědce Donalda Knutha (Knuth, 2008), který se zabývá algoritmy, matematickou analýzou a obecnou informatikou. Další potřebné teoretické podklady pro práci lze nalézt přímo v samotných publikacích programovacích jazyků. Cenné informace a podrobně popsaný jazyk C zahrnuje publikace Učebnice jazyka C od Pavla Herouta (Herout, 1981), která obsahuje podrobné kroky od základů přes pokročilé techniky v popsaném programovacím jazyku. Srovnáváním a hodnocením překladačů objektových programovacích jazyků se zabýval ve své diplomové práci Martin Ventruba (Ventruba, 2011). Komplexnější analýzou schopností překladačů strukturovaných programovacích jazyků se však žádná literatura příliš nezabývá. Problematiku srovnání dílčích částí překladačů řeší některé zahraniční elektronické vědecké publikace, které se zaměřují většinou pouze na konkrétní prvky překladačů, ale neřeší problematiku komplexněji.
13 3 PROGRAMOVÁNÍ 13 3 Programování Programování je činnost, která zahrnuje návrh algoritmu, psaní zdrojového kódu, testování a údržbu softwarového díla. Algoritmus je základním pojmem a stavebním kamenem veškerého soudobého programování. Do roku 1950 bylo programování spojováno s Euklidovým algoritmem, který slouží ke zjištění největšího společného dělitele dvou čísel. Dnešní význam slova algoritmus je poněkud obecnější. Algoritmus je možno definovat jako konečnou množinu pravidel, které popisují posloupnost operací pro řešení určitého typu problému. Algoritmus musí splňovat několik důležitých vlastností: konečnost, určitost, vstup, výstup, efektivita. Algoritmus musí skončit po konečném počtu kroků. Počet kroků může být libovolně velký, ale musí být konečný. Procedura, která tuto vlastnost porušuje, ale jinak odpovídá charakteristice algoritmu, se nazývá výpočetní metoda. Všechny kroky daného algoritmu musí být definovány a jeho operace jednoznačně popsány. Z toho důvodu se pro zápis algoritmu používají programovací jazyky, kde každý příkaz má jednoznačně definovaný význam. Vstupy jsou veličiny, které si algoritmus přebírá před vlastním zahájením z určené množiny objektů. Algoritmus může mít jeden nebo více výstupů. Výstupy lze opět označit jako veličiny, které mají zadaný vztah ke vstupům. Další podstatnou vlastností algoritmů je efektivita. Operace, které algoritmus provádí, by měly být v rozumné míře jednoduché. Problematikou efektivity algoritmů, tzn. metodami, jak z několika známých algoritmů řešících konkrétní problém vybrat ten nejlepší, se zabývají odvětví informatiky nazývané teorie složitosti. (Knuth, 2007) 3.1 Programovací paradigmata Programovací paradigmata jsou vyzkoušené a ověřené techniky, které vedou k tvorbě kvalitního softwaru. Obsahují programovou strukturu a metodiku zpracování. Tedy jinými slovy, jakým způsobem dané dílo vytvořit co nejlépe a nejefektivněji. Naivní paradigma Naivní paradigma je nejčastěji používáno programátory začátečníky. Typickou charakteristickou vlastností je nekoncepčnost a chaotický způsob přístupu. Programovací jazyky, podporující naivní paradigma, jsou prakticky nestrukturované, nepodporují modularitu a též se vyznačují minimální datovou abstrakcí. Klasickým příkladem takového jazyka je programovací jazyk BASIC. (Skoupil, 1994)
14 14 3 PROGRAMOVÁNÍ Funkcionální paradigma Funkcionální paradigma představuje na rozdíl od procedurálního paradigmatu princip v postupném aplikování funkcí. Nepoužívá se přiřazovací příkaz a jazyk je založen na funkcích a rekurzích. Funkcionální paradigma se vyjadřuje pomocí funkcionálních programovacích jazyků. Mezi nejznámější můžeme zařadit jazyk Lisp nebo Haskell. Tyto jazyky přistupují k programu obdobně jako k matematickému výrazu, který vyhodnocují deterministicky. Program nedisponuje žádným implicitním stavem a má pouze stavy explicitní. V programu nezáleží na tom, v jakém pořadí se jednotlivé příkazy provedou, ale pouze na dodržení daných závislostí. Funkcionální programovaní se vyznačuje vysokou mírou abstrakce a využívá se taktéž v umělé inteligenci. (Skoupil, 1994) Ukázka výpočtu faktoriálu: (defun fact (n) (if (zerop n) 1 (* n (fact (- n 1))))) Objektové paradigma Objektové paradigma je v současné době jeden z nejpoužívanějších přístupů vůbec. Základními kameny jsou prvky, které se nazývají objekty. Objekty modelují prvky reality. Každý objekt má uložen o sobě informace, které se definují jako atributy. Průběh výpočtu je uskutečňován jako zasílání zpráv mezi objekty. Abstrakce objektu, která zahrnuje podobné typy objektů, se nazývá třída (class). Typickými zástupci čistě objektových jazyků jsou Smalltalk, Java nebo Python. Řada moderních jazyků umožňuje kombinovat přístup strukturovaný a objektový, jako např. C++ nebo Java. (Skoupil, 1994) Základní vlastnosti objektů: dědičnost, polymorfismus, zapouzdření. Ukázka návrhu třídy: class Konto { private: int cislouctu; double stavkonta; public: void pridejcastku(double vklad); // definice veřejných metod void vybercastku(double vyber); double vratstavkonta();
15 3.1 Programovací paradigmata void prictiuroky(); }; Logické paradigma U logického paradigmatu je samotný program ve formě určité množiny pravidel, které se označují jako klauzule. Systém se na základě těchto klauzulí programu snaží dané tvrzení dokázat. Logické paradigma má velký význam zejména v oblasti umělé inteligence (znalostní systémy). Typickým zástupcem je jazyk Prolog. (Skoupil, 1994) Paralelní paradigma Paralelní paradigma je poměrné mladý způsob programování a rozvinul se zejména s nástupem více-procesových operačních systémů. Principem je dekompozice algoritmu na více úloh, které jsou zpracovávány souběžně odlišnými procesory. Paralelní programování má dnes uplatnění zejména v oblasti vědy a výzkumu. Důležitou součástí paralelního programování jsou vlákna. Dají se definovat jako lehčí varianta procesů a umožňují efektivněji využít systémové zdroje. Podporu paralelního programovaní najdeme např. u jazyků Java nebo C# (Skoupil, 1994). Procedurální paradigma Procedurální paradigma se někdy také označuje jako imperativní nebo klasické. Strukturovaný přístup používáme v životě při řešení úkolů a běžných životních situacích. Používání tohoto přístupu v těchto situacích je intuitivní a přirozené, takže se nad ním většinou nezamýšlíme. Například při hledání informací na internetu, vyhledávání informací v tištěném telefonním seznamu nebo jízdním řádu. Složitý problém si rozdělíme na menší části a činnosti vykonáváme postupně. To je podstatou strukturovaného přístupu. Popsaný přístup se uplatňuje ve strukturovaném programování. Strukturované programování je součástí imperativního programování, jehož typickými zástupci jsou jazyky C a Pascal. Počátek strukturovaného programování lze datovat vzniku článku z roku 1967, kterému se věnoval Edsger W. Dijkstra, který se zabýval odstraněním příkazem skoku (Goto) ve struktuře programu. Obecně lze strukturované programování definovat jako rozdělení algoritmu na dílčí úlohy, které jsou vykonávány postupně. Používají se vybrané řídicí struktury.
16 16 3 PROGRAMOVÁNÍ Používané řídící struktury: výběr použití rozhodovacích příkazů, sekvence provádění příkazu postupně, tak jak jdou za sebou, opakování použití cyklů. Trendy v programování Existuje řada zarytých odpůrců a příznivců různých přístupů. Zejména mezi strukturovaným a objektovým programováním svádí příznivci každého z nich nelítostné názorové souboje. Ti konzervativnější uznávají pouze strukturovaný přístup, inovátoři zase spíše ten objektový. V současné době se nejvíce vyvíjí objektové programování v kombinaci s paralelním paradigmatem. Většina jazyků, které vznikly v pozdější době, jsou z drtivé části objektové. Samotné programování se nyní přibližuje více reálnému světu a je ulehčováno řadou automatizovaných nástrojů, takže programátor není nucen psát stále dokola ty samé kusy kódu. Moderní vývojová prostředí obsahují již řadu přednastavených šablon a knihoven, které stačí při tvorbě programu jen použít. To samozřejmě platí pro vývoj vysokoúrovňových uživatelských aplikací. Pro vývojáře operačních systémů, překladačů či tvorby knihoven, je stále nutná hluboká znalost programování a potřebných procesů. Na poli webových aplikací si v devadesátých letech prošly velkým rozmachem tzv. WYSIWYG editory, které dokázaly z návrhu vygenerovat kompletní HTML kód. Nejpopulárnější zástupce těchto programů byl MS Frontpage. Tyto editory ale generovaly velké množství kódu a to i nepotřebného, takže zdrojový kód stránky byl mnohokrát vyšší a obsahoval spoustu zbytečných značek. Za tyto vlastnosti, kterými disponovaly skoro všechny editory, byly často kritizovány. Běžným uživatelům však umožňovaly tvorbu webových stránek i bez znalosti značkovacích jazyků. V oblasti klasického vývoje aplikací se čím dál více uplatňuje vizuální programování, kde se při vývoji používá možností různých frameworků. Vkládáním obrázkových elementů a jejich úpravou lze částečně vytvořit potřebnou aplikaci a popřípadě doprogramovat další části kódu. Typickým zástupcem je programovací jazyk Lab- VIEW, který se používá pro vývoj testovacích, měřicích a řídících aplikací. 3.2 Strukturované programovací jazyky Programovací jazyk Pascal Programovací jazyk Pascal je strukturovaný jazyk určený zejména pro výuku programování. V současné době se používá jeho objektová nástavba Object Pascal integrovaná do vývojového prostředí Delphi, které je určeno pro OS Windows. Dostal jméno podle známého francouzského filosofa, matematika a fyzika Blaise Pascala. Základy jazyka Pascal vznikly v roce 1970 a jeho autorem je Niklaus Wirth. (Moore, 2009)
17 3.2 Strukturované programovací jazyky 17 Byl založen na základě blokové struktury programovacího jazyku Algol. Cílem bylo nejen vytvořit programovací jazyk, který má přehlednou syntaxi a je tím pádem vhodný pro výukové účely, ale také aby byl prakticky použitelný na tehdejších počítačích. Standard jazyka Pascal byl zveřejněn v roce 1983 a je označován jako ISO Další významnou implementací je prostředí Turbo Pascal, který vylepšuje komfort původního standardu. Jazyk Pascal je silně typový strukturovaný programovací jazyk. (Moore, 2009) Programovací jazyk C Jazyk C byl vytvořen v Bellových laboratořích AT&T. Za autora tohoto jazyka je možné považovat Denise Ritchieho. Cílem bylo vytvořit jazyk pro snadnou a přenositelnou implementaci operačního systému Unix. Na vývoji jazyka se dále podíleli velkou měrou Brian Kernighan a Ken Thompson. (Rohovský, 2008) Za přímého předchůdce programovacího jazyka C je považován jazyk B, který vyvinul Ken Thompson. Uvažovalo se o něm původně jako o kandidátovi pro přepis Unixového jádra, ale tato možnost byla zamítnuta z důvodu malé rychlosti pro psaní jádra operačního systému. Měl také problémy s adresováním. (Rohovský, 2008) Jazyk C lze charakterizovat jako univerzální programovací jazyk nízké úrovně. Patří mezi imperativní jazyky. Má úsporné vyjadřování, je strukturovaný a disponuje velkým počtem operátorů. Jazyk C byl navržen a implementován v operačním systému UNIX, který je z velké části v C také napsán. První standard jazyka C pocházel od autorů Briana W. Kernigha a Denis M. Ritchie. Dnes se tento standard označuje jako K&R. Dalším standardem je ANSI C, který vznikl v roce 1988 a z předchozího standardu vychází. Definuje přesnou specifikaci množiny knihovních funkcí a hlavičkových souborů. Standard ANSI C podporuje naprostá většina současných kompilátorů. Na konci devadesátých let došlo k vydání dokumentu ISO 9899:1999 (obvykle nazývaný C99), který rozšiřuje původní standard ANSI C o některé další prvky. (Herout, 1981) Rozšíření jazyka C ve standardu C99: on-line komentáře, podpora dalších knihoven, další datové typy např. long long int, variadická makra, nové knihovní funkce, klíčové slovo restrict. Vzhledem k univerzálnosti a přenositelnosti jazyka mezi různé architektury, není proto problém psát programy přenositelné na úrovni zdrojových kódů mezi různými Unixy a překladači. V jazyce C je napsána řada překladačů a systémových knihoven. V současné době se jazyk C uplatňuje právě pro vytváření nízkoúrovňových přenositelných programů, které absentují grafické uživatelské rozhraní (GUI).
18 18 3 PROGRAMOVÁNÍ Pro tvorbu desktopových aplikací se dnes využívá zejména jazyk C++, který z jazyka C vychází a rozšiřuje ho hlavně o objektový přístup. Syntaxi jazyka C převzaly i jiné soudobé programovací jazyky jako na Java, Perl a PHP. Za nevýhodu jazyka C může být považován volný přístup do paměti, a tak špatně napsaný kód může způsobit přetečení zásobníku. 3.3 Chyby v programech Syntaktické chyby Jedná se o chyby, které porušují pravidla definovaného jazyka. Vznikají z nepozornosti či roztržitosti programátora. Ve strukturovaném programování to často bývají překlepy, opomenutá interpunkční znaménka, nedefinované proměnné, či neukončené bloky zdrojového kódu. Tento typ chyby je kontrolován částí překladače nazývané syntaktický analyzátor, tudíž nelze pokračovat v překladu. Výstup chyby poskytuje chybová konzole rozhraní kompilátoru. Oznamování chyb se jednotlivými kompilátory liší. Cílem testování bude zejména hodnocení srozumitelnosti výstupu daného překladače pro programátora na nejrůznějších vzorcích a typech syntaktických chyb. (Pecinovský, 2008) Sémantické chyby Další časté chyby, které se u programování mohou vyskytnout, jsou chyby sémantické. Častou sémantickou chybou je vůbec nebo chybně nadeklarovaná proměnná. V případě práce s různými datovými typy, např. sčítání řetězce a čísla typu integer ohlásí překladač chybu nebo varování. (Vavrečková, 2008) Běhové a logické chyby Běhové chyby se vyskytují při běhu programu. Program se za určitých okolností dostane do nestandardního stavu a ohlásí chybu, případně se objeví výjimka. Běhové chyby se vyskytují zejména v jazycích s dynamickou typovou kontrolou. Nejčastěji se běhové chyby vyskytují v nedůsledné kontrole datových typů, kdy proměnná při běhu programu nabude neočekávané hodnoty a program dále nemůže pracovat. Tyto chyby se velmi špatně odhalují a často se objevují až při ostrém nasazení produktu do praxe. Principem logických chyb je jiná funkce výsledného programu, než byla původně programátorem zamýšlena. Logické chyby v kódu nemají vliv na samotný překlad ten proběhne správně, ale program se chová výsledně jinak, než bylo očekáváno. Jako příklady logických chyb lze uvést nekonečný cyklus, špatně definovanou podmínku, zapomenutí volání určitého bloku kódu atd. Proti logickým chybám je třeba důkladného testování všech funkcí programu. (Pecinovský, 2008)
19 4 PŘEKLADAČE 19 4 Překladače 4.1 Úvod do překladačů Každý, kdo za svůj život napsal počítačový program v některém z vyšších programovacích jazyků, se musel setkat s pojmem překladač. Zdrojovému kódu v některém z programovacích jazyků samotný počítač nerozumí. Je tedy potřeba ho přeložit do takové podoby, aby mohl být spouštěn na běžném pracovním počítači. Překladač dokáže převést zdrojový kód ve vyšším programovacím jazyce do strojového kódu. Tudíž bychom ho mohli označit jako důležitý most mezi zdrojovým kódem, čitelným člověkem a posloupnosti instrukcí, čitelných procesory. Překladač je tedy počítačový program, který k libovolnému zdrojovému programu v nějakém jazyce vytvoří adekvátní počítačový program v cílovém jazyce. (Vavrečková, 2008) Základní rozdělení překladačů dle typu překladu: kompilátory, interprety. Základní rozdíl mezi kompilátorem a interpretem spočívá v tom, že u kompilace se zdrojový kód ve vyšším programovacím jazyku jednorázově převede na program, složený ze strojových instrukcí daného počítače. Program je nezávislý na svém zdroji a může být samostatně opakovaně spouštěn. Výstupem kompilace je binární soubor spustitelný na výsledném operačním systému (EXE, COM). U interpretu se zdrojový text nebude překládat do žádného jiného tvaru, a tudíž ani do takového tvaru, který by bylo možné spustit. Interpret postupně vykonává příkazy ve zdrojovém kódu vyššího programovacího jazyka a zajišťuje jejich provádění. Typickými zástupci interpretovaných jazyků jsou skriptovací jazyky PHP, Perl, Python a další. Každý způsob generovaní programů má své výhody a nevýhody. Výhodou interpretu je přenositelnost zdrojového kódu, malá závislost na platformě a také efektivnější vývoj. Velkou nevýhodou je provádění výsledného programu. Spuštění kompilovaného kódu je několikanásobně rychlejší, než provádění programu pomocí interpretu. (Peterka, 2011) V případě programování v jazyce C nebo Pascal po napsání zdrojového kódu se program přeloží a spustí se výsledný binární soubor. Pokud provedeme ve zdrojovém kódu nějaké změny, opět musíme spustit proces kompilace znovu. Pokaždé proběhnou všechny kroky překladu uvedené výše lexikální analýza, syntaktická analýza, sémantická kontrola. V některých případech je přehlednější využít konverzační překladač. Toho se využívá pouze u jednoduchých jazyků. Princip konverzačního překladače spočívá v tom, že programátor postupně píše příkazy do zdrojového kódu a ty jsou ihned zpracovávány. Využití je zejména při výuce programování, kdy překladač okamžitě poskytne zpětnou vazbu zejména hlášení o chybě, kdy ihned
20 20 4 PŘEKLADAČE víme, kde vznikla. V praxi se konverzační interpret používá např. u programovacích jazyků Karel nebo Logo, které jsou určeny pro začátečníky v programování. (Vavrečková, 2008) 4.2 Princip práce překladače Překladač se skládá z několika klíčových částí, které zajišťují jeho použití. Funkční principy překladače jsou níže rozebrány. Lexikální analýza Lexikální analýza spočívá v postupném čtení jednotlivých znaků vstupního zdrojového textu programu a vytváří z nich lexikální symboly programu (např. čísla, identifikátory, klíčová slova) a jednoznakové nebo víceznakové omezovače a oddělovače. Pro ukládaní identifikátorů a jmen návěští jsou používány tabulky symbolů. Lexikální analyzátor je tvořen deterministickým konečným automatem, který vznikl sjednocením, zřetězením a iterací automatů pro dané jazyky. Výstupy lexikální analýzy se nazývají tokeny, sekvence znaků zdrojového kódu se někdy označují jako lexémy. (Vavrečková, 2008) Syntaktická analýza Cílem syntaktické analýzy za použití výstupních symbolů lexikální analýzy je sestavení syntaktické struktury programu. Syntaktická analýza je vyjádřena derivačním stromem (Vavrečková 2008). Derivační strom je znázornění konstrukce věty pomocí pravidel bezkontextové gramatiky. Kořenem stromu je počáteční neboli startovací symbol gramatiky. Koncové listy stromů obsahují buď terminální symboly nebo prázdné slovo ɛ. Listy stromu, čtené zleva doprava, v jakékoliv fázi představují v zadané gramatice větnou formu. (Vavrečková 2008) Rozlišují se dvě metody syntaktické analýzy: metoda zdola nahoru, metoda shora dolů. U metody shora dolů začíná analýza kořenem derivačního stromu a postup procesu je směrem k listům při současné aplikaci a výběru vybraných pravidel gramatiky. Pří aplikaci metody zdola nahoru se postupuje od listů směrem ke startovacímu symbolu. U nedeterministických gramatik je potřeba aplikovat syntaktickou analýzu s návraty. (Rybička, 2005) V případě neúspěchu syntaktické analýzy ohlásí překladač syntaktickou chybu (syntax error) a překlad není úspěšně dokončen.
21 4.2 Princip práce překladače 21 Sémantická analýza Další a neméně důležitou částí překladače je sémantická kontrola, která je implementována jako sémantický analyzátor. Jak již napovídá význam slova sémantika, tak účelem sémantické analýzy je přiřadit význam jednotlivým symbolům. Sémantický analyzátor postupně prochází symboly, které poskytne syntaktická analýza a přiřazuje jim významy. Zároveň zjišťuje, zda daný objekt byl deklarován nebo již použit. Objekty jsou míněny funkce, procedury, proměnné atd. V praxi to znamená, že překladač kontroluje práci programu s datovými typy. Pokud se programátor pokusí sečíst dva různé datové typy např. datový typ integer a datový typ řetězec, překladač prostřednictvím sémantického analyzátoru vypíše u některých programovacích jazyků chybové hlášení. Výstupem sémantické analýzy je intermediární kód, který je dále zpracováván. Je obvykle přeložen do cílového kódu. Intermediární kód může být ve více variantách. Jedna z variant je tříadresový kód, který má dobrou podporu optimalizace, a tak se častěji využívá v kompilačních překladačích. Naopak grafová reprezentace je výhodnější pro interpretační překladač, protože výrazy jsou ve formě sémantického stromu, který lze vyhodnocovat průchodem postorder. Mezikód, který je vhodný jak pro překladač tak pro interpret, se označuje jako zásobníkový kód. Zásobníkový kód je založen na postfixu, kde se operátory nacházejí až za operandy. Výhodou je také absence závorek. (Vavrečková, 2008) Obr. 1: Schéma kompilačního překladače
22 22 4 PŘEKLADAČE Průchody překladače Před objasněním principu průchodů překladače je nezbytné popsat, jakým způsobem mohou být překladače konstruovány. Překladač lze navrhnout několika způsoby, většina překladačů bývá rozdělena na dvě části. Část závislá na vstupním jazyce se nazývá front-end a druhá část, která závisí na cílové architektuře, se označuje jako back-end. Překlad nemusí probíhat přímo, může využívat tzv. mezikód (bytekód), tzn. že kód je nejprve překládán do mezikódu a poté je teprve převeden do strojového jazyka. Kód slouží pak jako mezistav, který pak může být převeden na více architektur. Překladače lze dál rozdělit na dvě skupiny dle počtů průchodů: jednoprůchodové, víceprůchodové. Jak bylo vysvětleno v předchozí kapitole, překlad probíhá postupně za pomocí lexikální, syntaktické a sémantické analýzy. Lze ale rozlišit, zda všechny tyto kroky proběhnou v jedné fázi, nebo zda se rozdělí do více průchodů překladu. Nemusí platit, že jeden průchod bude odpovídat například lexikální analýze a druhý průchod syntaktické analýze. Jednoprůchodové překladače se vyznačují tím, že všechny součástí překladače se spustí postupně během jednoho průchodu překladu. Výhodou tohoto řešení je absence mezikódu, který by se musel uchovávat v paměti, a pak s ním dále do budoucna počítat. Jednoprůchodový překlad je vhodný pro jednoduché jazyky, které není třeba příliš důkladně optimalizovat. Víceprůchodový překladač naproti tomu musí uchovávat vytvořený mezikód pro další průchody překladu. Výhodou víceprůchodových překladačů je to, že při překladu zabírá místo v paměti pouze některá část překladače např. lexikální analýza. Víceprůchodové překladače vylepšují možnosti optimalizace zejména složitých a rozsáhlých algoritmů. (Vavrečková, 2008) 4.3 Jazyk symbolických adres V nedávné minulosti neexistovaly programovací jazyky, jak je známe dnes. Vzhledem k faktu, že tvořit programy v číselných kódech bylo značně neefektivní a náročné, začal se od padesátých let minulého století používat jazyk symbolických adres (JSA). Jazyk symbolických instrukcí je nízkoúrovňový programovací jazyk, který je založen na strojových instrukcích. Programy, napsané v JSA, jsou svázané s daným procesorem, a tak jsou obtížně přenositelné na jiné platformy. Překladač, který jazyk symbolických instrukcí převede do strojového kódu, se nazývá Assembler. Jazyky symbolických instrukcí se používaly do devadesátých let minulého století, kdy je vytlačily vyšší programovací jazyky (C, Basic, Pascal atd.), které do programování přinesly více abstrakce a zjednodušení tvorby algoritmů. K nejznámějším překladačům JSA patří např. Flat Assembler nebo Netwide Assembler.
23 4.4 Integrovaná vývojová prostředí 23 Skladba programu v JSA: překladové direktivy, metoda shora dolů, strojové instrukce, definice obsahu paměti, makra, návěští, podmínkové bloky, definice překladových symbolů. Program, který naopak převádí strojový kód zpět do jazyka symbolických adres, se nazývá disassembler. Dokáže přeložit binární podobu programu do částečně čitelného kódu. Tato funkce se používá zejména tehdy, není-li přístup k původním zdrojovým kódům a je potřeba proniknout do principu práce programu. Tato technika bývá využita počítačovými crackery např. pro prolomení různých softwarových ochran. Typickým příkladem je vytvoření neoficiálního patche pro zkušební verzi softwaru zjištěním daných podmínek. Disassemblery ale také využívají výrobci antivirů, kteří tuto techniku uplatňují pro zkoumání počítačových virů. K volně šiřitelným disassemblerům patří Netwide Disasssembler. Následuje ukázka kódu získaného z disassembleru programem Netwide Disassembler ze vzorku jednoduchého programu jazyka C BDA 696E005F4A imul bp,[bp+0x0],word 0x4a5f 00001BDF 765F jna 0x1c BE1 52 push dx 00001BE imul si,[gs:ebx+0x74],word 0x BE9 43 inc bx 00001BEA 6C insb 00001BEB 61 popaw 00001BEC 7373 jnc 0x1c BEE gs jnc 0x1bf BF1 5F pop di 00001BF2 696E imul bp,[bp+0x69],word 0x Integrovaná vývojová prostředí V soudobých programovacích jazycích jsou samotné překladače součástí integrovaných vývojových prostředí (IDE). Integrované vývojové prostředí je programový balík sestávající z několika částí. Zahrnuje obvykle editor zdrojového kódu, překladač, linker a debugger. O principu překladačů a jejich struktuře již bylo zmiňováno v předchozích částech práce. Editor zdrojového kódu se skládá z pokročilejšího textového editoru, uzpůsobeného pro tvorbu zdrojových kódů. Samozřejmostí bývá
24 24 4 PŘEKLADAČE zvýrazňování syntaxe, popřípadě automatické doplňování znaků. V neposlední řadě bývá součástí IDE prostředí také vizuální programování, které umožní poskládat logické prvky programu a poté následně prostředí vygeneruje zdrojový kód pro překlad programu. Programátor se tak nemusí zdržovat rutinními operacemi. V práci jsou zkoumána prostředí jazyka Pascal a C. (Integrovaná vývojová prostředí, 2012) Typy vývojových prostředí: typové, universální. Typová vývojová prostředí jsou vázána na konkrétní jazyk a tvoří jeden celek. Příkladem může být Free Pascal IDE, Pelles C IDE atd. Naproti tomu universální vývojová prostředí mohou pracovat s více programovacími jazyky. Typickými zástupci jsou prostředí Netbeans a Eclipse, která pracují pod více operačními systémy. Obr. 2: IDE Pelles C Linker Pro řadu programátorů je funkce linkeru velkou neznámou. Běžný vývojář po napsání zdrojového kódu vybere možnost překladu a ve výstupu se mu objeví až výsledný spustitelný soubor v binární podobě. Tak jednoduché to ale není. Po překladu zdrojového kódu se vytvoří výsledný binární soubor, který ovšem sám o sobě není na dané platformě spustitelný. Jedná se o tzv. mezikód, někdy také označovaný jako object code. Nyní přichází na řadu linker, který převede tento mezikód do spustitelné podoby. Nejdůležitější úlohou linkerů je spojování mezikódů do jednoho spustitelného souboru linkování. Tímto způsobem mohou být sdíleny jednotlivé části kódu
25 4.4 Integrovaná vývojová prostředí 25 mezi moduly. Linker se tedy stará o umisťování objektů v adresním prostoru daného programu za použití relokačního kódu a obsluhuje vyhledávání symbolů v ostatních objektových modulech. Relokační strojový kód obsahuje přesměrování absolutních skoků, načtení a uložení. U dnešních operačních systému se uplatňuje především dynamické linkování, které adresaci nespecifikovaných symbolů provede až při spuštění binárního programu, kde se teprve provede finální sestavení programu. Vzhledem ke skutečnosti, že dnes lze již překládat velmi velké zdrojové kódy většiny jazyků, slouží linker především pro připojování knihoven k hlavnímu programu. (Peterka, 2011) Většina překladačů má možnost volby, zda má být spuštěna pouze kompilace nebo kompilace včetně samotného linkování. Součástí integrovaných prostředí je i samostatné linkování objektových modulů do výsledné spustitelné binární podoby. Debugger Při programování se určitě každému z nás stalo, že udělal v kódu nějakou chybu. Jak již vypovídá sám název, debugger má za cíl poskytnout vývojáři srozumitelný chybový výstup, který mu ulehčí vývoj programu. Chybová hlášení, se kterými se nesporně setkal již každý programátor, jsou nedílnou součástí každého ladění. O tyto funkce se stará právě již zmiňovaný debugger. Většina vývojových prostředí má integrovaný debugger, který tyto funkce vykonává. Existují ale také externí debuggery, často výkonnější než ty integrované. Jako příklad open-sourcového debuggeru lze uvést GNU Debugger, který podporuje i vzdálené debuggování. Utilita Make Překladač provádí samotnou kompilaci, optimalizaci a ladění zdrojových kódů. Pokud jsou ale překládány velké projekty, ruční překlad zdrojových programů je značně neefektivní. Pro kompilaci větších celků se hojně využívá program Make, který je dostupný prakticky na všech unixových platformách. Utilita Make potřebuje ke svému běh soubor Makefile, kde jsou popsány závislosti souborů na jiných souborech nebo knihovnách. Makefile tedy snadno dokáže řešit vazby programů na další zdrojové nebo hlavičkové soubory. Makefile je obyčejný textový soubor. Příklad struktury Makefile: # program: main.o net.o gui.o $(CC) -o $@ main.o net.o gui.o main.o: main.c net.h gui.h net.o: net.c net.h gui.o: gui.c gui.h
26 26 4 PŘEKLADAČE Pro vlastní projekty je možné si takový soubor vyrobit dle specifikace. Pro kompilaci větších projektů se používá automatického skriptu./configure, který prozkoumá daný operační systém z hlediska umístění knihoven a vygeneruje soubor Makefile pro konkrétní softwarovou platformu. Teprve poté se spouští překladová utilita Make, která provede kompilaci a linkování. Utilita Make se používá zejména v Linuxových operačních systémech, kde kompilace je často jedinou možností instalace softwaru. Ve vývojových prostředích se využívá pro kompilaci projektů, kde se spouští zcela automaticky po přeložení softwarového projektu. Optimalizace Optimalizace programu je proces přeuspořádání a změny operací pomocí překladače tak, aby bylo možno dosáhnout efektivnějšího cílového programu. Optimalizační metody lze rozdělit do dvou kategorií. První kategorií jsou metody, které se používají při transformování zdrojového programu a nezávisí na cílovém jazyku. Do druhé kategorie logicky pak patří metody, které jsou jistým způsobem závisle ná použitém programovacím jazyku. Překladačů se bezesporu týká první zmíněná kategorie. (Gries, 1981) Čtyři základní metody optimalizace: předvýpočet, odstraňování přebytečných informací, přesouvání operací mimo cyklus, redukce síly násobení v cyklech. U předvýpočtu se už během kompilace vykonají operace programu, které už jsou v daném čase známé, a tak se ušetří čas v průběhu samotného programu. Metoda předvýpočtu se používá nejčastěji pro aritmetické operátory. Odstraňování přebytečných informací je další používanou metodou optimalizace. Operace se v daném bloku považuje za nadbytečnou, pokud před ní existuje stejná operace a žádná proměnná, na které závisí tato operace, se nemění jinou operací, které by to mohla ovlivnit. Tato operace je pak považována za redundantní a v rámci optimalizace dojde k její eliminaci. Obdobně funguje také optimalizace cyklů, kde se invariantní operace přesouvají mimo cyklus. (Gries, 1981) Řada současných překladačů má možnost nastavení konkrétní optimalizace nejčastěji to bývá optimalizace k velikosti výsledného souboru, popřípadě času kompilace. Velké optimalizační možnosti v tomto směru má překladač GCC jazyka C.
27 4.4 Integrovaná vývojová prostředí 27 Preprocesor Preprocesor lze definovat jako speciální program používaný v jazycích C a C++ pro zpracovávání maker a symbolických konstant. Preprocesor provádí pouze textové náhrady definovaných symbolů v textu a umožňuje podmíněný překlad. Preprocesorové příkazy začínají znakem mřížky (#) #define nebo #ifndef. Preprocesor je součástí překladu zdrojového kódu. (Němec, 2005) Základní rozdělení preprocesorů: lexikální preprocesor, syntaktický preprocesor, universální preprocesor. Lexikální preprocesor je nejnižší stupeň preprocesoru. Ke své práci využívá pouze lexikální analýzu. Syntaktické preprocesory jsou sofistikovanější programy a používají se pro přizpůsobení jazyka. Univerzální preprocesory naopak nejsou svázány s jedním kompilátorem a jazykem. Nejpoužívanějším preprocesorem je preprocesor jazyka C, který se používá pro připojování hlavičkových souborů a tvorbu maker. Preprocesor přijde na řadu ještě před vlastním překladem a linkováním a provádí úpravy na úrovni textu. Může vypouštět komentáře, nahrazovat symboly nebo vkládat soubory. Preprocesor také usnadňuje podmíněný překlad a jsou díky němu výsledné programy přenositelnější. Na druhou stranu ovšem i překlad malého programu po načtení potřebných knihoven je relativně dlouhý, protože includování standardní knihovny přinese několik stránek vygenerovaného kódu navíc. (Němec, 2005) Ukázka využití preprocesoru pro podmíněný překlad: #define LADENI /* nějaký kód */ #ifdef LADENI printf("proměnná je..."); #endif JIT Překladače JIT (Just-in-time) patří ke speciálním metodám překladu, které využívají různé techniky pro zrychlení běhů programů, které jsou přeložené do mezikódu. Program je v době překladu převáděn rovnou do nativního strojového kódu. To má výhodu pro spouštění programů na různých platformách, kde pak výsledný program dokáže běžet několikanásobně rychleji, než kdyby byl již předkompilován. Výsledný program pak může využít i rozšířené instrukce použitého procesoru. (Peterka, 2009)
28 28 4 PŘEKLADAČE Nevýhodou JIT může být pak delší spuštění programu, protože se musí provést na počátku spuštění překlad. Čím více je daný kód optimalizován, tím lepší a efektivnější kód je možné získat, ale také pak delší dobu trvá počáteční spuštění. Z toho důvodu se rozšířily optimalizátory JIT překladů, které kombinují kompilační a interpretační překlad pro rychlejší spouštění. (Peterka, 2009) Používané metody JIT: vkládání těl metod, odstranění mrtvého kódu, rozbalování smyček. Princip JIT překladu nachází uplatnění zejména u objektového programovacího jazyka Java, kde je hojně využíván. Refaktoring Mnoho programátorů po napsání zdrojového kódu programu nebo většího projektu kontroluje zdrojový kód a zjednodušují a zefektivňují zdrojový kód, například odstraňováním duplicit. Pokud se ale jedná o velký projekt, čištěním by vývojář trávil nekonečné hodiny. Na řadu tedy přichází automatizovaný refaktoring. (Fowler, 2003) Refaktoring je v programování poměrně nová věc. Své využití má zejména v objektových programovacích jazycích. Principem refaktoringu jsou změny v softwarovém produktu, které nemají vliv na chování kódu, ale zlepšují jeho strukturu, efektivitu a strukturu. Refaktoring tedy probíhá až poté, co je zdrojový kód napsán. Probíhá ve velké míře automaticky, a tak rizika vzniku chyb jsou velmi malá. Pro uvedení do problematiky refaktoringu je zde uveden přehled nejčastějších situacích, kdy refaktorovat: (Fowler, 2003) duplicitní kód, dlouhá metoda, velká třída, dlouhý seznam parametrů. Řadu postupů a technik refaktoringu lze definovat a algoritmizovat, takže se refaktoring může provádět automaticky. Podporu refaktoringu nabízí některá již zmiňovaná vývojová prostředí např. Eclipse. 4.5 Vybrané překladače a vývojová prostředí jazyka Pascal V následujících odstavcích jsou vyjmenovány a krátce popsány testované a hodnocené překladače. Informace byly čerpány převážně z oficiálních webových stránek překladačů a z jejich dokumentace. Za každým překladačem je odkaz na oficiální nebo komunitní stránky každého z nich.
29 4.5 Vybrané překladače a vývojová prostředí jazyka Pascal 29 Free Pascal ( Free Pascal je jeden z nejznámějších open-source překladačů programovacího jazyka Pascal a Object Pascal, který se stále vyvíjí. Na oficiální webových stránkách projektu lze překladač stáhnout pro různé platformy a operační systémy. Tvůrci Free Pascalu se snaží o maximální kompatibilitu s jazykovými implementacemi Turbo Pascal a také s Delphi od společnosti Borland. Je kompatibilní s prvky jazyka Delphi. Irie Pascal ( Irie Pascal patří k těm méně známým překladačům programovacího jazyka Pascal, které zahrnují plnou implementaci jazyka Pascal konkrétně Standard Pascal (ISO/IEC 7185). Jedná se o komerční překladač, který poskytuje společnost Irie Tools. Na oficiálních webových stránkách je k dispozici zkušební verze. Omezení spočívá ve velikosti generovaného programu a generovaný program po jednom dni přestane pracovat. Výsledný program může být generován buď klasicky do strojového kódu v případě Windows do souboru s příponou EXE nebo do tzv. bytekódu souborů s příponou ivm. Zajímavou funkcí je podpora serverových aplikací generováním výsledných cgi skriptů. Irie Pascal patří k multiplatformním překladačům. Překladač včetně IDE je dostupný pro operační systémy Windows, OS Linux (Red Hat), Solaris, Free BSD. Virtual Pascal ( Virtual Pascal je další z řady volně dostupných kompilátorů Pascalu. Byl navržen Vitaly Miryanovem a je určen primárně pro operační systém Windows. Byla doplněna podpora také pro MS-DOS, OS/2 nebo Linux. Prostředí Virtual Pascalu disponuje kromě kompilátorů také vývojovým prostředím. Vývoj byl ukončen v roce Na svém webu autoři uvádí, že vytváří velmi malé spustitelné soubory nebo také disponuje možností editace kódu při překladu. Vývoj Virtual Pascalu byl již ukončen v roce Turbo Pascal ( Turbo Pascal je jednou z nejznámějších implementací Pascalu od společnosti Borland, často používanou ve výuce. Obsahuje komplexní vývojové prostředí určeno pro MS-DOS samotný kompilátor, debugger, textový editor a linker. Turbo Pascal pracuje ještě v 16bitovém subsystému. Od verze 5.5 podporuje Turbo Pascal i objektové programování, i když jinak patří ke strukturovaným programovacím jazykům. Nástupcem Turbo Pascalu se stalo vývojové prostředí Delphi pro MS Windows, které je založeno na objektech v jazyce Pascal.
30 30 4 PŘEKLADAČE 4.6 Vybrané překladače a vývojová prostředí jazyka C GCC ( Zkratka GCC pochází ze slova GNU compiler collection a definuje sadu překladačů, která je schopna zpracovávat jazyky C, Ada, C++, Objective-C, Fortran a Java. Jedná se o nejpoužívanější a nejznámější překladač jazyka C. Je multiplatformní, a tak ho lze spustit systémech na bázi UNIX i v MS Windows. GCC překladač je součástí každé linuxové distribuce již v základní instalaci. Tiny CC ( Tiny C compiler je multiplatofrmní překladač jazyka C, původně určený pro unixové systémy. Od verze je dostupný i na platformě OS Windows. Podporuje standardy ANSI-C i ISO a na stránkách dokumentace autoři uvádějí, že předností tohoto kompilátoru jsou velmi malé binární soubory i rychlá doba překladu. V následujících testech bude toto tvrzení ověřeno. Tiny C compiler bylo možné instalovat z repozitářů použité linuxové distribuce. Clang ( Překladač Clang je dalším používaným kompilátorem jazyka C. Jako backend využívá infrastrukturu LLVM (Low Level Virtual Machine). Překladač je určen primárně pro systémy OS UNIX a je součástí repozitářů distribucí. V experimentální verzi je však dostupný i pro platformy OS Windows. Nwcc ( Nwcc je menší projekt linuxového kompilátoru, který napsal ve volném čase Nils Weller. Překladač je vyvíjen od roku 2003 a stále vychází nové verze. Dle informací na webových stránkách může směle konkurovat zavedeným kompilátorům. Kód je vytvořen v jazyku C a je napsán na osmdesát tisíc řádků včetně backendu. Lcc-win ( Lcc je kompilátor, který podporuje pouz ANSI-C. Lcc kompilátor je popsán v knize A Retargetable C Compiler: Design and Implementation (Addison-Wesley). Lcc je distribuován ve verzi pro Windows a Linux. Port pro OS Windows se jmenuje Lccwin a autorem je Jacob Navia. Kompilátor Lcc je k dispozici jak pro 64bitovou verzi, tak pro 32bitovou verzi operačního systému. Kompilovat programy lze přes příkazovou řádku nebo skrz IDE rozhraní. Lcc-win je šířen zdarma pro nekomerční využití. Další informace lze nalézt na oficiálním webu.
31 4.7 Časová a prostorová složitost 31 Pelles C ( Pelles C je další kompilátor jazyka C pro operační systém rodiny Windows. Zakladatelem je uváděn autor označován jako Pelle, který stál u zrodu projektu. Pelles C je open source a zahrnuje IDE prostředí. Tvůrce se inspiroval u autorů překladače Lcc, na kterém je založen. Kromě klasických konzolových a okenních aplikací umožňuje vyvíjet programy i pro Pocket PC (Windows Mobile). 4.7 Časová a prostorová složitost Problematiku časové a prostorové složitosti lze zařadit do oboru teorie složitosti. Zde se systematicky zkoumá cena výpočtu měřená v časových jednotkách, nebo prováděných operacích. Kritériem může být také spotřebované množství paměti. Cílem je podniknout takové měření, aby srovnání srovnání algoritmů bylo objektivní. Předmětem zkoumání je v informatice často složitost algoritmu. Způsoby vyšetřování složitosti algoritmů: exaktně, neformálně. Exaktní analýza je prováděna pomocí nástrojů matematického aparátu. Naproti tomu neformální analýza je prováděna bez speciálních matematických aparátů a používá se především ke srovnání složitostí několika algoritmů. Problémem této neformální analýzy je doba trvání dílčích operací, která není přesně určena. (Kreslíková, 2004) Přehled typických složitostí algoritmů: konstantní, logaritmická, lineární, kvadratická, kubická, exponenciální. Pro účely měření časové a prostorové náročnosti daného překladače je však potřeba změřit časovou a paměťovou náročnost vykonání jisté části programu, produkované z různých překladačů. V práci je zkoumána časová a paměťová náročnost překladačů na vybraném testovacím hardwaru a softwaru. K tomuto účelu jsou popsány a použity nástroje, které jsou zmiňovány v praktické části diplomové práce.
32 32 5 TESTOVÁNÍ VLASTNOSTÍ PŘEKLADAČŮ 5 Testování vlastností překladačů Testování softwaru je nedílnou součástí tvorby softwaru a patří mezí základní metody softwarového inženýrství. Zejména při vývoji rozsáhlého softwaru je důkladné testování nezbytné. Lze rozlišovat dvě základní metody testování softwaru: validace, verifikace. Verifikací označujeme proces testování hledající odpověď na otázku, jestli je softwarový produkt vytvářen správně. Jinými slovy lze říci, že se hledají nedostatky v samotném softwarovém systému. Jedná se tedy o hledání softwarových chyb. (Vondrák, 2002) Po verifikaci přichází na řadu validace. Validace je proces testování, který zkoumá, zdali vytvářený software je správný. Pomocí validace softwaru se zjišťuje, zda softwarový systém odpovídá požadované funkcionalitě. Verifikace a validace tvoří při testování spojené nádoby. Může se tedy stát, že softwarový produkt vyhoví procesu verifikace, ale neobsahuje požadovanou funkcionalitu. Na druhou stranu může zadanou funkcionalitu splňovat, ale bude obsahovat velké množství chyb. Kromě verifikace a validace se používají metody ověřování, které mohou být statické nebo dynamické. Statické techniky se zabývající testováním modelů a diagramů a umožňují ověřovat korespondenci mezi vytvořeným systémem a jeho specifikací. Dynamickými technikami rozumíme ověřování již hotového softwaru z hlediska jeho vstupů a výstupů. (Vondrák, 2002) Modely testování: testovací procedury, testovací úlohy, testovací komponenty. Testovací úlohy definují, co se má na systému testovat. Jakým způsobem a jakými metodami to určují testovací procedury. Pro pokročilejší testování se využívají testovací komponenty, které zautomatizují použití testovacích procedur. Výše uvedené modely testování se dají využít dvěma způsoby přístupu k testování softwaru. Prvním způsobem chápání softwaru jako celku a přístupu ke zdrojovým kódů a procesu vývoje je white-box testování. Druhý způsob, kdy se tester zaměřuje pouze na vstupy a výstupy daného produktu, se nazývá black-box testování. V diplomové práci bude kladen důraz zejména na druhý způsob testování, zejména také z důvodu, že hlavní funkcí překladačů je na základě nějakého vstupu poskytnout co nejlepší a nejefektivnější výstup.
Programování - úvod. Programování. Proces programování. Vlastnosti dobrého programu: Kapitola seznamuje se základními pojmy programování.
Programování - úvod Kapitola seznamuje se základními pojmy programování. Klíčové pojmy: Program, proces programování, programovací jazyky Programování Programování je zdlouhavý proces. Jeho cílem je vytvořit
Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.
Nadpis kapitoly Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem. Klíčové pojmy: Překladač, editor, compiler, linker. Úvod Abychom mohly využívat našich napsaných programů, musíme
Algoritmizace a programování
Algoritmizace a programování V algoritmizaci a programování je důležitá schopnost analyzovat a myslet. Všeobecně jsou odrazovým můstkem pro řešení neobvyklých, ale i každodenních problémů. Naučí nás rozdělit
Algoritmus (nebo dřívějším pravopisem algorithmus)
Algoritmus (nebo dřívějším pravopisem algorithmus) o přesný návod či postup, kterým lze vyřešit daný typ úlohy. Pojem algoritmu se nejčastěji objevuje při programování, kdy se jím myslí teoretický princip
Úvod do jazyka C. Proč jazyk C
Proč jazyk C C je univerzální programovací jazyk. Nebudu zde řešit otázku, zda je lepší jazyk C ci LISP, Prolog, Cobol, AWK nebo SQL, ze stejného důvodu jako se nebudu zabývat tím, zda je lepší jazyk C
-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy
-1- I I. N á v r h VYHLÁŠKY ze dne 2009 o účetních záznamech v technické formě vybraných účetních jednotek a jejich předávání do centrálního systému účetních informací státu a o požadavcích na technické
účetních informací státu při přenosu účetního záznamu,
Strana 6230 Sbírka zákonů č. 383 / 2009 Částka 124 383 VYHLÁŠKA ze dne 27. října 2009 o účetních záznamech v technické formě vybraných účetních jednotek a jejich předávání do centrálního systému účetních
3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java
3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java Studijní cíl V tomto bloku navážeme na konec předchozího bloku a seznámíme se s vývojovými prostředími, které se nejčastěji používají
Výzva k podání nabídek (zadávací dokumentace)
Výzva k podání nabídek (zadávací dokumentace) 1.Číslo zakázky 2.Název programu: 3.Registrační číslo projektu 4.Název projektu: 5.Název zakázky: Operační program Vzdělání pro konkurenceschopnost CZ.1.07/1.1.07/02.0129
OBEC HORNÍ MĚSTO Spisový řád
OBEC HORNÍ MĚSTO Spisový řád Obsah: 1. Úvodní ustanovení 2. Příjem dokumentů 3. Evidence dokumentů 4. Vyřizování dokumentů 5. Podepisování dokumentů a užití razítek 6. Odesílání dokumentů 7. Ukládání dokumentů
Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS
Název projektu: Redesign Statistického informačního systému v návaznosti na zavádění egovernmentu v ČR Příjemce: Česká republika Český statistický úřad Registrační číslo projektu: CZ.1.06/1.1.00/07.06396
INFORMATIKA V CHOVECH PRASAT
INFORMATIKA V CHOVECH PRASAT Bajbár, M. KONFIRM, spol. s r.o. Tento článek si klade za cíl informovat odbornou veřejnost z oblasti chovu a šlechtění prasat o možnostech využití a základních analytických
Využití EduBase ve výuce 10
B.I.B.S., a. s. Využití EduBase ve výuce 10 Projekt Vzdělávání pedagogů v prostředí cloudu reg. č. CZ.1.07/1.3.00/51.0011 Mgr. Jitka Kominácká, Ph.D. a kol. 2015 1 Obsah 1 Obsah... 2 2 Úvod... 3 3 Autorský
Obsah. Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11
Obsah Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11 Kapitola 1 Co je to počítačové programování 13 Co je to program a jak ho vytvořit 13 Nádražní automat
Objektově orientované databáze
Objektově orientované databáze Miroslav Beneš Obsah přednášky Motivace Vlastnosti databázových systémů Logické datové modely Co potřebujeme modelovat? Identifikace entit v~relačních SŘBD Co je to objektová
Algoritmizace a programování
Pátek 14. října Algoritmizace a programování V algoritmizaci a programování je důležitá schopnost analyzovat a myslet. Všeobecně jsou odrazovým můstkem pro řešení neobvyklých, ale i každodenních problémů.
PŘIJÍMACÍ ŘÍZENÍ. Strana
PŘIJÍMACÍ ŘÍZENÍ Strana Vyhledávání textu - přidržte klávesu Ctrl, kurzor umístěte na příslušný řádek a klikněte levým tlačítkem myši. 1. Právní předpisy upravující přijímací řízení ke studiu ve střední
Programový komplet pro evidence provozu jídelny v. 2.55. modul Sklad. 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642
Programový komplet pro evidence provozu jídelny v. 2.55 modul Sklad 2001 Sviták Bechyně Ladislav Sviták hotline: 608/253 642 Obsah 1 Programový komplet pro evidenci provozu jídelny modul SKLAD...3 1.1
ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ
ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ Pozemkem se podle 2 písm. a) katastrálního zákona rozumí část zemského povrchu, a to část taková, která je od sousedních částí zemského povrchu (sousedních pozemků)
Obsah. Obsah. Úvod... 9. 1. Makra v Excelu... 13. 2. Nahrávání maker... 19. 3. První setkání s editorem jazyka Visual Basic... 31
EXCEL 2000 2007 5 Obsah Úvod... 9 1. Makra v Excelu... 13 1.1 Proč je v Excelu obsažen i programovací jazyk...13 1.2 Něco málo o vývoji Excelu z hlediska programování...16 1.3 Typy listů v sešitu a jejich
Aplikace počítačů v provozu vozidel 9
Aplikace počítačů v provozu vozidel 9 2 Databázové systémy Rozvoj IS je spjatý s rozvojem výpočetní techniky, především počítačů. V počátcích se zpracovávaly velké objemy informací na jednom počítači,
Charakteristika kurzu BE4
CZ.1.07/3.2.03/04.0040 - Partnerská síť Aktivní angličtina s online lektory strana 1 z 6 Charakteristika kurzu BE4 Aktualizace: 31. 3. 2015 Kurz vytvořil: Jazyková škola ATHENA s.r.o. Kurz ověřil: Jazyková
Regenerace zahrady MŠ Neděliště
1 Výzva k podání nabídek (dále jen zadávací dokumentace ) v souladu se Závaznými pokyny pro žadatele a příjemce podpory v OPŽP (dále jen Pokyny ), účinnými od 20.06.2014 Zadavatel: Název zadavatele: OBEC
Pokyn D - 293. Sdělení Ministerstva financí k rozsahu dokumentace způsobu tvorby cen mezi spojenými osobami
PŘEVZATO Z MINISTERSTVA FINANCÍ ČESKÉ REPUBLIKY Ministerstvo financí Odbor 39 Č.j.: 39/116 682/2005-393 Referent: Mgr. Lucie Vojáčková, tel. 257 044 157 Ing. Michal Roháček, tel. 257 044 162 Pokyn D -
Sbírka zákonů ČR Předpis č. 27/2016 Sb.
Sbírka zákonů ČR Předpis č. 27/2016 Sb. Vyhláška o vzdělávání žáků se speciálními vzdělávacími potřebami a žáků nadaných Ze dne 21.01.2016 Částka 10/2016 Účinnost od 01.09.2016 (za 184 dní) http://www.zakonyprolidi.cz/cs/2016-27
1 METODICKÉ POKYNY AD HOC MODUL 2007: Pracovní úrazy a zdravotní problémy související se zaměstnáním
1 METODICKÉ POKYNY AD HOC MODUL 2007: Pracovní úrazy a zdravotní problémy související se zaměstnáním Ad hoc modul 2007 vymezuje Nařízení Komise (ES) č. 431/2006 z 24. února 2006. Účelem ad hoc modulu 2007
Co najdete v ASPI? (pro uživatele SVI FSE UJEP)
Co najdete v ASPI? (pro uživatele SVI FSE UJEP) ASPI = komplexní pokrytí všech předpisů publikovaných na území ČR včetně předpisů měst a obcí a předpisů ES / EU Manuál ASPI: http://www.systemaspi.cz/co_je_system_aspi/co_je_system_aspi.html
5.6.6.3. Metody hodnocení rizik
5.6.6.3. Metody hodnocení rizik http://www.guard7.cz/lexikon/lexikon-bozp/identifikace-nebezpeci-ahodnoceni-rizik/metody-hodnoceni-rizik Pro hodnocení a analýzu rizik se používají různé metody. Výběr metody
27/2016 Sb. VYHLÁŠKA ČÁST PRVNÍ ÚVODNÍ USTANOVENÍ ČÁST DRUHÁ
Systém ASPI - stav k 24.4.2016 do částky 48/2016 Sb. a 9/2016 Sb.m.s. - RA852 27/2016 Sb. - vzdělávání žáků se speciálními vzdělávacími potřebami - poslední stav textu 27/2016 Sb. VYHLÁŠKA ze dne 21. ledna
Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50
Informační systémy 2 Data v počítači EIS MIS TPS strategické řízení taktické řízení operativní řízení a provozu Spojení: e-mail: jan.skrbek@tul.cz tel.: 48 535 2442 Konzultace: úterý 14 20-15 50 18.3.2014
METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ
Regionální rada regionu soudržnosti Moravskoslezsko METODICKÝ POKYN - DEFINICE MALÝCH A STŘEDNÍCH PODNIKŮ verze 1.06 Evidence změn Verze Platnost od Předmět změny Strany č. 1.01 22. 10. 2007 Sestavování
SBÍRKA ZÁKONŮ. Ročník 2016 ČESKÁ REPUBLIKA. Částka 10 Rozeslána dne 28. ledna 2016 Cena Kč 210, O B S A H :
Ročník 2016 SBÍRKA ZÁKONŮ ČESKÁ REPUBLIKA Částka 10 Rozeslána dne 28. ledna 2016 Cena Kč 210, O B S A H : 27. Vyhláška o vzdělávání žáků se speciálními vzdělávacími potřebami a žáků nadaných Strana 234
VÝZVA. Česká republika-ministerstvo školství, mládeže a tělovýchovy (dále jen zadavatel) se sídlem Karmelitská 7, 118 12 Praha 1, IČ 00022985.
VÝZVA k podání nabídky na veřejnou zakázku malého rozsahu na službu dle 12 odst. 3 a 18 odst. 3 zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění pozdějších předpisů (dále jen zákon ), Směrnice MŠMT,
Informace o zkoušce k získání profesního osvědčení učitele výuky a výcviku řízení motorových vozidel
Informace o zkoušce k získání profesního osvědčení učitele výuky a výcviku řízení motorových vozidel 1. Náležitosti přihlášky ke zkoušce: údaje o žadateli: - příjmení, jméno, titul; - datum narození a
Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011
Kočí, R.: Účelové pozemní komunikace a jejich právní ochrana Leges Praha, 2011 Účelové komunikace jsou důležitou a rozsáhlou částí sítě pozemních komunikací v České republice. Na rozdíl od ostatních kategorií
statutární město Děčín podlimitní veřejná zakázka na služby: Tlumočení a překlady dokumentů
statutární město Děčín Zadávací dokumentace podlimitní veřejná zakázka na služby: Tlumočení a překlady dokumentů vyhlášená v otevřeném řízení dle zákona č. 137/2006 Sb., o veřejných zakázkách, ve znění
PROGRAM PRO POSKYTOVÁNÍ DOTACÍ Z ROZPOČTU KARLOVARSKÉHO KRAJE ODBORU KULTURY, PAMÁTKOVÉ PÉČE, LÁZEŇSTVÍ A CESTOVNÍHO RUCHU
PROGRAM PRO POSKYTOVÁNÍ DOTACÍ Z ROZPOČTU KARLOVARSKÉHO KRAJE ODBORU KULTURY, PAMÁTKOVÉ PÉČE, LÁZEŇSTVÍ A CESTOVNÍHO RUCHU Rada Karlovarského kraje (dále jen rada ) se usnesla na těchto Pravidlech pro
Výboru pro vnitřní trh a ochranu spotřebitelů NÁVRH STANOVISKA
EVROPSKÝ PARLAMENT 2009-2014 Výbor pro vnitřní trh a ochranu spotřebitelů 22. 2. 2013 2011/0284(COD) NÁVRH STANOVISKA Výboru pro vnitřní trh a ochranu spotřebitelů pro Výbor pro právní záležitosti k návrhu
Marketing. Modul 7 Internetový marketing
Marketing Modul 7 Internetový marketing Výukový materiál vzdělávacích kurzů v rámci projektu Zvýšení adaptability zaměstnanců organizací působících v sekci kultura Tento materiál je spolufinancován z Evropského
funkční na dual-sim telefonech možnost přesměrovat příchozí hovory možnost nastavení více telefonních čísel pro případ, že je jedno nedostupné
Analyzujte, navrhněte a implementujte aplikaci pro sledování spánku dětí Chůvička pro telefony na platformě Android. Od existujících aplikací se bude aplikace odlišovat tímto: funkční na dual-sim telefonech
PRÁVNICKÉ OSOBY POJEM A KATEGORIZACE
JUDr. Kateřina Ronovská, Ph.D. PRÁVNICKÉ OSOBY POJEM A KATEGORIZACE I. K POJMU PRÁVNICKÁ OSOBA O pojmovém vymezení právnických osob jako subjektů právních vztahů se odedávna vedou diskuse, avšak žádná
Databáze invazivních vstupů jako zdroj dat pro účinnou kontrolu infekcí
NÁZEV PROJEKTU: Databáze invazivních vstupů jako zdroj dat pro účinnou kontrolu infekcí Projekt do soutěže Bezpečná nemocnice na téma: Co můžeme udělat (děláme) pro zdravotníky, aby mohli poskytovat bezpečnou
STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU
STANDARD 3. JEDNÁNÍ SE ZÁJEMCEM (ŽADATELEM) O SOCIÁLNÍ SLUŽBU CÍL STANDARDU 1) Tento standard vychází ze zákona č. 108/2006 Sb., o sociálních službách (dále jen Zákon ) a z vyhlášky č. 505/2006 Sb., kterou
Rychnov nad Kněžnou. Trutnov VÝVOJ BYTOVÉ VÝSTAVBY V KRÁLOVÉHRADECKÉM KRAJI V LETECH 1998 AŽ 2007 29
3. Bytová výstavba v okresech Královéhradeckého kraje podle fází (bez promítnutí územních změn) Ekonomická transformace zasáhla bytovou výstavbu velmi negativně, v 1. polovině 90. let nastal rapidní pokles
Obec Málkov. Málkov. Číslo jednací: Vaše č.j./ze dne: Vyřizuje / linka: Dne: OO-5/2014-202 / Vojtíšková Marie Ing./ 311516615 06.08.
Katastrální úřad pro Středočeský kraj, Katastrální pracoviště Beroun Politických vězňů 198/16, 266 01 Beroun tel.: 311625147, fax: 311623495, e-mail: kp.beroun@cuzk.cz, Obec Málkov Málkov 267 01 Králův
7. Domy a byty. 7.1. Charakteristika domovního fondu
7. Domy a byty Sčítání lidu, domů a bytů 2011 podléhají všechny domy, které jsou určeny k bydlení (např. rodinné, bytové domy), ubytovací zařízení určená k bydlení (domovy důchodců, penziony pro důchodce,
ODŮVODNĚNÍ VEŘEJNÉ ZAKÁZKY Dostavba splaškové kanalizace - Prostřední Bečva a Horní Bečva, zhotovitel, dle vyhlášky č. 232/2012 Sb.
ODŮVODNĚNÍ VEŘEJNÉ ZAKÁZKY Dostavba splaškové kanalizace - Prostřední Bečva a Horní Bečva, zhotovitel, dle vyhlášky č. 232/2012 Sb. Zadavatel Dobrovolný svazek obcí Prostřední Bečva a Horní Bečva Sídlo
ZADÁVACÍ DOKUMENTACE
ZADÁVACÍ DOKUMENTACE nabídky k veřejné zakázce malého rozsahu Dodávka služeb internetové inzerce volných pracovních míst pro SÚKL Zadavatel : Česká republika, Státní ústav pro kontrolu léčiv organizační
ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU
ČÁST 2. ELEKTRONIZACE PROCESŮ A DIGITALIZACE DAT ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU Přehled kam směřují peníze z městského rozpočtu. Přehled jaký je aktuální stav čerpání
S_5_Spisový a skartační řád
Základní škola a mateřská škola Staré Město, okres Frýdek-Místek, příspěvková organizace S_5_Spisový a skartační řád Č.j.:ZS6/2006-3 Účinnost od: 1. 5. 2011 Spisový znak: C19 Skartační znak: S10 Změny:
Čl. 3 Poskytnutí finančních prostředků vyčleněných na rozvojový program Čl. 4 Předkládání žádostí, poskytování dotací, časové určení programu
Vyhlášení rozvojového programu na podporu navýšení kapacit ve školských poradenských zařízeních v roce 2016 čj.: MSMT-10938/2016 ze dne 29. března 2016 Ministerstvo školství, mládeže a tělovýchovy (dále
21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK
21 SROVNÁVACÍ LCA ANALÝZA KLASICKÝCH ŽÁROVEK A KOMPAKTNÍCH ZÁŘIVEK Pavel Rokos ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra elektrotechnologie Úvod Světelné zdroje jsou jedním
499/2004 Sb. ZÁKON ČÁST PRVNÍ ARCHIVNICTVÍ A SPISOVÁ SLUŽBA
Obsah a text 499/2004 Sb. - stav k 31.12.2013 Změna: 413/2005 Sb., 444/2005 Sb. Změna: 112/2006 Sb. Změna: 181/2007 Sb. Změna: 296/2007 Sb. Změna: 32/2008 Sb. Změna: 190/2009 Sb. Změna: 227/2009 Sb. Změna:
Úvod Petr Kropík pkropik@kte.zcu.cz. viz: http://home.zcu.cz/~pkropik/zpe
Úvod Petr Kropík pkropik@kte.zcu.cz 1. viz: http://home.zcu.cz/~pkropik/zpe Základy programování pro elektrotechniku (KTE/ZPE) http://portal.zcu.cz - potřebné informace o předmětu > Portál ZČU > Courseware
Mapy Stabilního katastru jako zdroj informací pro státní správu a samosprávu
Mapy Stabilního katastru jako zdroj informací pro státní správu a samosprávu Vladimír Brůna, Kateřina Křováková Laboratoř geoinformatiky UJEP, Dělnická 21, 434 01 Most tel./fax: 476 137 448, e-mail: bruna@geolab.cz,
VYKAZOVÁNÍ VÝSLEDKŮ VÝZKUMU A VÝVOJE
VYKAZOVÁNÍ VÝSLEDKŮ VÝZKUMU A VÝVOJE I. Úvodní informace Vedení fakulty upozorňuje akademické pracovníky a doktorandy na následující skutečnosti: V souvislosti s probíhající reformou výzkumu a vývoje v
170/2010 Sb. VYHLÁŠKA. ze dne 21. května 2010
170/2010 Sb. VYHLÁŠKA ze dne 21. května 2010 o bateriích a akumulátorech a o změně vyhlášky č. 383/2001 Sb., o podrobnostech nakládání s odpady, ve znění pozdějších předpisů Ministerstvo životního prostředí
Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR
Databáze RÚIAN a možnosti jejího využití pro geografickou podporu AČR Ing. Radek Augustýn Výzkumný ústav geodetický, topografický a kartografický, v.v.i. Úvod V polovině roku 2012 byla státní správě i
VNITŘNÍ ŘÁD ŠKOLNÍ DRUŽINY
Č.j.: MZS/0316/2015 Vypracovala: Schválil: Masarykova základní škola Plzeň, Jiráskovo náměstí 10, příspěvková organizace VNITŘNÍ ŘÁD ŠKOLNÍ DRUŽINY Dokument nabývá platnosti ode dne: 1. 1. 2016 Spisový/skartační
Veřejnoprávní smlouva o poskytnutí investiční dotace č. 1/2016
Veřejnoprávní smlouva o poskytnutí investiční dotace č. 1/2016 Zastupitelstvo města Nová Role dle usnesení č. 10/02-4) ze dne 30. 12. 2015 a dle 85 odst. c zákona 128/2000 Sb., o obcích, rozhodlo o přidělení
Modul Řízení objednávek. www.money.cz
Modul Řízení objednávek www.money.cz 2 Money S5 Řízení objednávek Funkce modulu Obchodní modul Money S5 Řízení objednávek slouží k uskutečnění hromadných akcí s objednávkami, které zajistí dostatečné množství
Seriál: Management projektů 7. rámcového programu
Seriál: Management projektů 7. rámcového programu Část 4 Podpis Konsorciální smlouvy V předchozím čísle seriálu o Managementu projektů 7. rámcového programu pro výzkum, vývoj a demonstrace (7.RP) byl popsán
Novinky verzí SKLADNÍK 4.24 a 4.25
Novinky verzí SKLADNÍK 4.24 a 4.25 Zakázky standardní přehled 1. Možnosti výběru 2. Zobrazení, funkce Zakázky přehled prací 1. Možnosti výběru 2. Mistři podle skupin 3. Tisk sumářů a skupin Zakázky ostatní
Zaměstnání a podnikání, hrubá a čistá mzda.
Zaměstnání a podnikání, hrubá a čistá mzda. Téměř každý člověk touží být v práci úspěšný touží pracovně se uplatnit. V průběhu studia si mladý člověk osvojuje znalosti a dovednosti potřebné pro povolání,
Česká zemědělská univerzita v Praze Fakulta provozně ekonomická. Obor veřejná správa a regionální rozvoj. Diplomová práce
Česká zemědělská univerzita v Praze Fakulta provozně ekonomická Obor veřejná správa a regionální rozvoj Diplomová práce Problémy obce při zpracování rozpočtu obce TEZE Diplomant: Vedoucí diplomové práce:
M ě s t o V i m p e r k
M ě s t o V i m p e r k 385 17 Vimperk Vyřizuje: Ing. Jaroslava Martanová Ve Vimperku dne 31.03.2015 VYMEZENÍ ZASTAVĚNÉHO ÚZEMÍ VIMPERK NÁVRH PO UPLATNĚNÍ STANOVISEK DOTČENÝCH ORGÁNŮ* Opatření obecné povahy
Obsah 1. Grafický manuál firmy 2. Podklady grafického manuálu 3. Varianty loga 4. Logo a logotyp
Obsah 1. Grafický manuál firmy... 9 2. Podklady grafického manuálu... 10 3. Varianty loga... 11 3.1. Hlavní varianta... 11 3.2. Černobílá varianta... 11 4. Logo a logotyp... 12 4.1. Návrh loga... 12 4.2.
Obec Ždánov Ždánov 49, 344 01Domažlice osoba oprávněná k podpisu smlouvy: JUDr. Václav Pflug, starosta IČ: 00572594
Plzeňský kraj sídlo: Škroupova 18, 306 13 Plzeň k podpisu smlouvy oprávněn: Ivo Grüner, náměstek hejtmana pro oblast regionálního rozvoje, fondů EU, informatiky, na základě usnesení ZPK č. 857/15 ze dne
Jak jednat. se stavebním úřadem. Michal Lalík. e s. stavebnímu zákonu z praxe
Jak jednat se stavebním úřadem 148 Michal Lalík ne nejčastější ejčastějš jč tějš ší otázky ot ázk y a odpovědi odpově ědi ě di ke e s stavebnímu zákonu z praxe o éh ěn zd te kt u je o ro js P a o Ukazka
PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM. Pravidla a postupy
PŘÍLOHA 10 SMLOUVY O PŘÍSTUPU KE KONCOVÝM ÚSEKŮM Pravidla a postupy OBSAH Rozsah dokumentu... 3 1 Implementace Smlouvy... 3 2 Popisy metod komunikace... 4 2.1 B2B GW (SI)... 4 2.2 WEB Interface (WI)...
Řízení kalibrací provozních měřicích přístrojů
Řízení kalibrací provozních měřicích přístrojů Přesnost provozních přístrojů je velmi důležitá pro spolehlivý provoz výrobního závodu a udržení kvality výroby. Přesnost měřicích přístrojů narušuje posun
VNITŘNÍ NORMA (Směrnice) č. 4/2010
Město Štramberk Náměstí 9, 742 66 VNITŘNÍ NORMA (Směrnice) č. 4/2010 Oběh účetních dokladů Platnost: od roku 2010 Pro účetní případy roku 2010, použití od zahájení účtování účetních případů roku 2010.
PROGRAM OBNOVY VENKOVA VYSOČINY
PROGRAM OBNOVY VENKOVA VYSOČINY Smluvní strany SMLOUVA O POSKYTNUTÍ PODPORY (POVV/xxx/2010) I. Smluvní strany Vysočina, kraj se sídlem: Žižkova 57, 587 33 Jihlava IČ: 70890749 zastoupený: MUDr. Jiřím Běhounkem,
Autorizovaným techniků se uděluje autorizace podle 5 a 6 autorizačního zákona v těchto oborech a specializacích:
Společné stanovisko Ministerstva pro místní rozvoj a České komory autorizovaných inženýrů a techniků činných ve výstavbě k rozsahu oprávnění autorizovaného technika pro výkon vybraných činností ve výstavbě
ODPOVĚDI KOMISE NA VÝROČNÍ ZPRÁVU ÚČETNÍHO DVORA ZA ROK 2011 KAPITOLA 6 ZAMĚSTNANOST A SOCIÁLNÍ VĚCI
EVROPSKÁ KOMISE V Bruselu dne 30.8.2012 COM(2012) 479 final ODPOVĚDI KOMISE NA VÝROČNÍ ZPRÁVU ÚČETNÍHO DVORA ZA ROK 2011 KAPITOLA 6 ZAMĚSTNANOST A SOCIÁLNÍ VĚCI CS CS ÚVOD ODPOVĚDI KOMISE NA VÝROČNÍ ZPRÁVU
VYUŽITÍ NEURONOVÝCH SÍTÍ PROSTŘEDÍ MATLAB K PREDIKCI HODNOT NÁKLADŮ PRO ELEKTRICKÉ OBLOUKOVÉ PECE
VYUŽITÍ NEURONOVÝCH SÍTÍ PROSTŘEDÍ MATLAB K PREDIKCI HODNOT NÁKLADŮ PRO ELEKTRICKÉ OBLOUKOVÉ PECE V. Hon VŠB TU Ostrava, FEI, K455, 17. Listopadu 15, Ostrava Poruba, 70833 Abstrakt Neuronová síť (dále
Marketing. Modul 3 Zásady marketingu
Marketing Modul 3 Zásady marketingu Výukový materiál vzdělávacích kurzů v rámci projektu Zvýšení adaptability zaměstnanců organizací působících v sekci kultura Tento materiál je spolufinancován z Evropského
S M L O U V U o poskytnutí účelové dotace č. HS 31/2015. podle 10a zák. č. 250/2000 Sb., ve znění pozdějších předpisů
Plzeňský kraj sídlo: Škroupova 18, 306 13 Plzeň k podpisu smlouvy oprávněn: Ivo Grüner, náměstek hejtmana pro oblast regionálního rozvoje, fondů EU, informatiky IČO: 70890366 DIČ: CZ70890366 bankovní spojení:
KRAJSKÝ ÚŘAD PLZEŇSKÉHO KRAJE ODBOR SOCIÁLNÍCH VĚCÍ Škroupova 18, 306 13 Plzeň
Příloha č. I PRAVIDLA PRO ŽADATELE A PŘÍJEMCE DOTAČNÍHO PROGRAMU Program podpory projektů protidrogové prevence v Plzeňském kraji 2016 I. Úvodní ustanovení Plzeňský kraj vyhlašuje na základě usnesení Rady
Sbírka zákonů ČR Předpis č. 473/2012 Sb.
Sbírka zákonů ČR Předpis č. 473/2012 Sb. Vyhláška o provedení některých ustanovení zákona o sociálně-právní ochraně dětí Ze dne 17.12.2012 Částka 177/2012 Účinnost od 01.01.2013 http://www.zakonyprolidi.cz/cs/2012-473
Uplatňování nařízení o vzájemném uznávání u předmětů z drahých kovů
EVROPSKÁ KOMISE GENERÁLNÍ ŘEDITELSTVÍ PRO PODNIKY A PRŮMYSL Pokyny 1 V Bruselu dne 1. února 2010 - Uplatňování nařízení o vzájemném uznávání u předmětů z drahých kovů 1. ÚVOD Účelem tohoto dokumentu je
Vymezení poloz ek způ sobily ch ná kládů meziná rodní ch projektů ná principů LA pro rok 2017
Vymezení poloz ek způ sobily ch ná kládů meziná rodní ch projektů ná principů LA pro rok 2017 1.1. Vymezení způsobilých nákladů obecná část (1) Účelová podpora může být poskytnuta pouze na činnosti definované
ZPRÁVA O PRŮBĚHU ŘEŠENÍ PROJEKTU
Page 1/1 ZPRÁVA O PRŮBĚHU ŘEŠENÍ PROJEKTU Cíle projektu Uveďte předem stanovené cíle a u každého z nich uveďte, do jaké míry byl splněn, případně důvod, proč splněn nebyl. Cílem projektu bylo skokové zvýšení
Spolupráce škol a orgánu sociálně-právní ochrany dětí
Spolupráce škol a orgánu sociálně-právní ochrany dětí V pátek, dne 17.10.2014, se konal v kavárně Café Práh v Brně, odborný seminář pro zástupce škol a školských zařízení, působících v rámci města Brna
MTH - MATERIALS TESTING HRAZDIL (A) Z uživatele výrobce Případová studie
MTH - MATERIALS TESTING HRAZDIL (A) Z uživatele výrobce Případová studie V lednu 1992 strávil Vladimír týden na semináři věnovanému podnikatelskému plánování v Československém manažerském centru v Čelákovicích.
Marketing. Modul 5 Marketingový plán
Marketing Modul 5 Marketingový plán Výukový materiál vzdělávacích kurzů v rámci projektu Zvýšení adaptability zaměstnanců organizací působících v sekci kultura Tento materiál je spolufinancován z Evropského
ZÁKON o geologických pracích ČÁST PRVNÍ ZÁKLADNÍ USTANOVENÍ
Text předpisu: 66 PŘEDSEDA VLÁDY vyhlašuje úplné znění zákona č. 62/1988 Sb., o geologických pracích, jak vyplývá ze změn provedených zákonem č. 543/1991 Sb. a zákonem č. 366/2000 Sb. Česká národní rada
Programování se seznamy v Imagine
Programování se seznamy v Imagine Jiří Komínek PaedDr. Jiří Vaníček Ph.D. Školní rok: 2008-09 Abstrakt V mé diplomové práci se zabývám programováním se seznamy v prostředí Imagine Logo. Práce by měla pomoci
NÚOV Kvalifikační potřeby trhu práce
Zadavatel: Národní ústav odborného vzdělávání v Praze se sídlem: Weilova 1271/6, 102 00 Praha 10, IČ: 00022179 zastoupený : RNDr. Miroslavem Procházkou, CSc. prostřednictvím osoby pověřené výkonem zadavatelských
PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ
PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ Obsah 1 Koncová zařízení... 3 2 Charakteristika typů služeb logistika KZ Dodání KZ, Instalace KZ... 3 3 Další
Rozvojový projekt na rok 2012
VYSOKÁ ŠKOLA: VYSOKÁ ŠKOLA TECHNICKÁ A EKONOMICKÁ V ČESKÝCH BUDĚJOVICÍCH (VŠTE) Rozvojový projekt na rok 01 Program: Podprogram: Formulář pro závěrečnou zprávu Program na podporu vzájemné spolupráce vysokých
ZÁKON ze dne.2015, kterým se mění zákon č. 505/1990 Sb., o metrologii, ve znění pozdějších předpisů
V l á d n í n á v r h ZÁKON ze dne.2015, kterým se mění zákon č. 505/1990 Sb., o metrologii, ve znění pozdějších předpisů Parlament se usnesl na tomto zákoně České republiky: Čl. I Zákon č. 505/1990 Sb.,
Server. Software serveru. Služby serveru
Server Server je v informatice obecné označení pro počítač či skupinu počítačů, kteří poskytují nějaké služby. Rovněž pojmem server můžeme označit počítačový program, který tyto služby realizuje. Služby
JAK VÍTĚZIT NAD RIZIKY. Aktivní management rizik nástroj řízení úspěšných firem
JAK VÍTĚZIT NAD RIZIKY Aktivní management rizik nástroj řízení úspěšných firem 1 2 PhDr. Ing. Jiří Kruliš JAK VÍTĚZIT NAD RIZIKY Aktivní management rizik nástroj řízení úspěšných firem Linde Praha akciová
VYHLÁŠKA ČÁST PRVNÍ STÁTNÍ ZKOUŠKY Z GRAFICKÝCH DISCIPLÍN. Předmět úpravy
58 VYHLÁŠKA ze dne 10. února 2016 o státních zkouškách z grafických disciplín a o změně vyhlášky č. 3/2015 Sb., o některých dokladech o vzdělání Ministerstvo školství, mládeže a tělovýchovy stanoví podle
Nový stavební zákon a související předpisy. Metodická pomůcka pro stavební úřady Zlínského kraje 2012
Nový stavební zákon a související předpisy Metodická pomůcka pro stavební úřady Zlínského kraje 2012 Poznámky k vybraným Ustanovením nového stavebního Zákona a předpisů souvisejících Vybrané rozsudky soud
Český úřad zeměměřický a katastrální vydává podle 3 písm. d) zákona č. 359/1992 Sb., o zeměměřických a katastrálních orgánech, tyto pokyny:
Český úřad zeměměřický a katastrální POKYNY Č. 44 Českého úřadu zeměměřického a katastrálního ze dne 20.12.2013 č.j. ČÚZK- 25637/2013-22, k zápisu vlastnictví jednotek vymezených podle zákona č. 72/1994
I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í
I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í Realizace vzdělávacích aktivit v Prioritní ose 1 Počáteční vzdělávání V návaznosti na vyhlášení výzev k předkládání individuálních projektů a předložení
HPN. projekt. s.r.o. OBEC STARÉ MĚSTO PASPORT MÍSTNÍCH KOMUNIKACÍ. katastrální území: Staré Město, Petrušov, Radišov
HPN projekt s.r.o. OBEC STARÉ MĚSTO PASPORT MÍSTNÍCH KOMUNIKACÍ katastrální území: Staré Město, Petrušov, Radišov Vypracoval: Neckář Pavel Datum: Říjen 2015 1) Úvod k pasportu místních komunikací Pasport
městské části Praha 3 pro rok 2016 připravila
městské části Praha 3 pro rok 2016 připravila městské části Praha 3 pro rok 2016 - Návrh projektu k 3. 2. 2016 Obsah Obsah... 2 1. KONTEXT... 3 2. CÍLE A VÝSTUPY PROJEKTU... 4 3. POSTUP PŘÍPRAVY PARTICIPAČNÍHO