Implementace Přednáška z předmětu Počítače I Dana Nejedlová

Slides:



Advertisements
Podobné prezentace
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á.
Advertisements

Obecně o operačních systémech
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
Základy počítačů a kancelářský software
SOFTWARE dálkové studium PODNIKÁNÍ 2. listopad 2006.
CZ.1.07/1.4.00/ VY_32_INOVACE_133_IT7 Výukový materiál zpracovaný v rámci projektu Vzdělávací oblast: Informační a komunikační technologie Předmět:Informatika.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
SOFTWARE.
Co je Linux? Základní pojmy
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Základy algoritmizace a programování
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Objektové programování
Operační systémy.
Informatika pro ekonomy II přednáška 10
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í.
Počítače a programování 1
Operační systém (OS) ICT Informační a komunikační technologie.
Programové vybavení počítače
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
IB111 Programování a algoritmizace
OPERAČNÍ SYSTÉMY Správa zdrojů Historie Funkce Ovládání počítače
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
Od zadání úlohy k programu Výpočetní systémy I 8. přednáška.
Dokumentace informačního systému
Databázové modelování
Referát č.8 Daniela Venusová.
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)
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
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.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
doc. RNDr. Zdeněk Botek, CSc.
Mikroprocesor.
Visual Basic - programování
IB111 Programování a algoritmizace
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Informatika (1) Počítač - základní pojmy HW a SW4 OS MS-DOS, Windows 95, 982 Org. souborů na disku, operační paměť2 Aplikace Malování, Word8 Základy programování.
Tento projekt je financován z Operačního programu Vzdělávání pro konkurenceschopnost prostřednictvím Evropského sociálního fondu a státního rozpočtu ČR.
Funkce operačního systému (11). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro.
Překladače Vnitřní struktura překladače © Milan Keršláger
Překladače 1. Překladače a programovací jazyky © Milan Keršlágerhttp:// Obsah:
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
AS/400 (IBM iSeries) Úvod. Co vlastně je AS/400 (IBM i)? Aplikační systém 400 (AS/400) byl navržen jako počítač obecně použitelný v obchodním prostředí.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
ZÁKLADNÍ ŠKOLA SLOVAN, KROMĚŘÍŽ, PŘÍSPĚVKOVÁ ORGANIZACE ZEYEROVA 3354, KROMĚŘÍŽ projekt v rámci vzdělávacího programu VZDĚLÁNÍ PRO KONKURENCESCHOPNOST.
Software,hardware,data,biti a bajty.  Software je v informatice sada všech počítačových programů používaných v počítači, které provádějí nějakou činnost.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
Název projektu:ZŠ Háj ve Slezsku – Modernizujeme školu Číslo projektu:CZ.1.07/1.4.00/ Oblast podpory: Zlepšení podmínek pro vzdělávání na základních.
Vývojová prostředí Objektově Orientované Programování OB21-OP-EL-KON-DOL-M Orbis pictus 21. století.
Paměti PC HDD, CD/DVD, USB Flash RAM a ROM Vnější paměť Disková paměť
SOFTWARE Operační systémy.
Vypracoval / Roman Málek
Výukový materiál zpracován v rámci projektu
Algoritmizace – základní pojmy
Vlastnosti souborů Jaroslava Černá.
Operační systémy - úvod
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
1. ročník oboru Mechanik opravář motorových vozidel
Název školy: ZŠ Bor, okres Tachov, příspěvková organizace
SOFTWARE II Aplikační software.
Operační systémy Vnitřní struktura překladače
Informatika pro ekonomy přednáška 8
1. ročník oboru Mechanik opravář motorových vozidel
1. ročník oboru Mechanik opravář motorových vozidel
Informační a komunikační technologie 5. ročník
Transkript prezentace:

Implementace Přednáška z předmětu Počítače I Dana Nejedlová Katedra informatiky EF TUL

Implementace Implementace je způsob, jak zajistit, aby daný softwarový program (SW) řídil reálný průběh příslušného výpočetního procesu v daném typu hardware (HW). Implementace tak určuje vztah mezi SW a HW. Algoritmy samy o sobě jsou nezávislé na HW. Jeden algoritmus může mít více implementací. Implementace také může znamenat realizaci standardu. Například: Standard pro psaní webových stránek je implementován ve webových prohlížečích. Standard určitého programovacího jazyka je implementován ve vývojových nástrojích.

Rozhraní mezi počítačem a člověkem První počítače byly používány tak, že se do nich vložil program a data jako dávková úloha. Lidé museli organizovat práci s počítačem tak, aby nevznikaly prostoje procesoru počítače při vstupních a výstupních operacích, které zaměstnávaly jiné jeho části. Později byly pro tyto organizační úlohy vyvinuty programy zvané systémový SW. řízení posloupnosti dávkových úloh multitasking – současné spouštění programů Systémový SW má vrstvy. Ovladače (drivers) SW na rozhraní mezi HW a systémovým SW. Každá součástka počítače (paměť, procesor, tiskárna …) má ovladač, aby mohla komunikovat s ostatními součástkami. Firmware například BIOS počítače základní SW, který se načte do operační paměti zařízení při jeho spuštění. Utility a operační systém

Operační systém a utility Ovládá periferní hardware. Přiděluje výpočetní zdroje uživatelům a programům. Výpočetní zdroje jsou operační a disková paměť a procesor. Programy jsou procesy operačního systému, utility, aplikační SW (ASW). Poskytuje uživatelské rozhraní (user interface). abstrakce výpočetních zdrojů a dat Soubory, adresáře, programy, disky, atd. mají své identifikátory nebo také ikony. Má dvě formy: vývojově starší příkazový řádek (Command Line Interface, např. MS DOS) a grafické uživatelské rozhraní (Graphical User Interface – GUI, např. MS Windows). Utility Samostatně fungující programy obslužného charakteru, například: textový editor (například poznámkový blok ve Windows), Edituje prostý (neformátovaný) text (plain text). Něco jiného je textový procesor (například MS Word). programy pro komprimaci, formátování disku, diagnostiku, síťovou komunikaci přehrávače, antivirové programy, správce souborů (file managers)… Je možné je doplňovat o alternativní programy nepatřící do původního operačního systému v rámci kastomizace.

Aplikační SW a utility Aplikační SW (ASW) SW, kvůli kterému si zpravidla počítač pořizujeme. například kancelářský SW, informační systém, hra, vývojové nástroje… Je zpravidla možné jej spustit pouze pod určitým operačním systémem. Rozdíly mezi aplikačním SW a utilitami jsou často nejasné (vágní). Je například webový prohlížeč aplikační SW nebo utilita? Dříve to byl aplikační SW, protože se do počítače pořizoval až dodatečně. Dnes je to spíše utilita, protože je součástí operačního systému a je možné dodatečně získat verze od jiných výrobců, než je výrobce našeho operačního systému. Počítače jsou čím dál tím více závislé na komunikačních sítích, takže lze webový prohlížeč považovat za nedílnou část operačního systému nutnou pro jeho správné fungování. Kancelářský SW se může stát utilitou, když jej bude chtít každý uživatel. Právní spory Když je nějaký SW součástí operačního systému, nejsou tím omezeni konkurenční výrobci SW produktů? V budoucnu lze očekávat náhradu SW instalovaného na daný počítač softwarem jako službou (SaaS) včetně operačního systému. Dnes například Office 365 namísto instalace kancelářského SW.

Programování počítačů První počítače měly algoritmy, které byly programovány pomocí způsobu zapojení jejich součástek. Určitý počítač tak mohl řešit jen jeden algoritmus. Jiný algoritmus byl programován změnou HW, tedy změnou zapojení součástek. Novější počítače načítají algoritmus (program) ve formě instrukcí spolu s daty, která zpracovávají, do své paměti. Počítače se tak staly univerzální (general-purpose).

Úrovně programovacích jazyků Strojový kód (machine language/code) posloupnost bitů, které přímo rozumí procesor Je obsažena ve spustitelném souboru (executable file). adresy paměti, čísla instrukcí z instrukční sady procesoru, čísla řídících instrukcí (podmíněné a nepodmíněné skoky) Jazyk symbolických adres, Asembler (assembly language) strojový kód s identifikátory místo čísel Lidé v něm píší SW nejnižší úrovně. firmware, ovladače, nový hardware, optimalizace výpočtů snažící se o co nejefektivnější využití procesoru Spustitelný soubor se vytvoří programem zvaným asembler (assembler). Vyšší programovací jazyky (high-level, third generation languages) Jejich prvky mají vyšší míru abstrakce. Nahrazují větší počet elementárních instrukcí jedinou. Jsou strojově nezávislé. příklady jazyků FORTRAN (pro vědecké výpočty), COBOL (obchodní aplikace) Pascal (pro výuku strukturovaného programování), C, BASIC, Perl, Java…

Abstrakce programovacích jazyků protected void playerAppeared(WorldObjectAppearedEvent<Player> event) { if (weaponry.hasLoadedWeapon()) { shoot.shoot(players.getNearestVisibleEnemy()); } Ukázka z www.pogamutcup.com Program se skládá z prvků různých úrovní. Hlavní program volá několik podprogramů, které volají další podprogramy. Hierarchická struktura spolu s vhodným pojmenováním identifikátorů podprogramů umožňuje chápání programu člověkem. Oddělení návrhu od implementace datové typy, řídící struktury, podprogramy Programátor se může soustředit na problém namísto jeho realizace na konkrétním hardwaru.

Strojová nezávislost vyšších programovacích jazyků Možnost psát program nezávisle na hardwaru je dána existencí programu zvaného překladač. Program napsaný programátorem je zdrojový kód nebo text programu. Je vstupem programu zvaného překladač. Výstupem překladače je spustitelný soubor. Je psán ve strojovém kódu. Překladač musí být specifický pro konkrétní hardware, protože výsledný spustitelný program je také specifický pro tento hardware. Překladače obsahují knihovní podprogramy pro typické operace. Každý vyšší programovací jazyk může mít svůj překladač pro konkrétní hardware. To umožňuje tvorbu stejných programů pro různý hardware. Přenositelnost (portabilita) programu na různé platformy Jediný zdrojový kód je možné přeložit na více překladačích. Platforma z hlediska zdrojového kódu je určitá kombinace hardwaru, operačního systému a překladače.

Překladač Program, který generuje spustitelný strojový kód ze zdrojového textu Má 2 základní provedení: interpret (interpreter) Každý řádek zdrojového textu přeloží a ihned nechá vykonat procesorem. Celkově program pracuje pomaleji, protože součástí jeho vykonávání je i jeho překlad. kompiler (compiler) Program pouze přeloží jako celek. Překladač a virtuální stroj Zdrojový kód je nezávislý na platfomě. Překladač ze zdrojového kódu vygeneruje platformově nezávislý bytecode. Virtuální stroj je program, který vykoná bytecode na daném hardwaru. Program lze šířit jako stejný bytecode pro různé platformy. Překladač i virtuální stroj jsou závislé na platformě. Poskytuje větší záruku nezávislosti na platformě oproti překladačům do strojového kódu, protože u nich není zaručeno, že zdrojový kód programu bude napsán tak, aby byl „platform independent“. Například vyšší programovací jazyky umožňují deklarovat různou délku datového typu, například celého čísla, ale konkrétní hardware může ukládat celé číslo do jiného počtu bajtů. Příkladem jazyka je Java spolu s Java compiler a Java Virtual Machine (JVM), jehož součástí je bytecode interpreter.

Prvky vyšších programovacích jazyků Identifikátory označují proměnné, konstanty, datové typy a podprogramy. Proměnná pojmenovává paměťovou adresu, na které je uložena její hodnota. Datový typ určuje pro každý identifikátor proměnné přípustné hodnoty, které může mít, a přípustné operace, které se ním mohou dělat. Podprogram (subroutine) Funkce Vrací návratovou hodnotu, výsledek. Vstupní data zpravidla nemění. Procedura Vykoná manipulaci s daty, která tím mohou být změněna. Například čtení, tisk, třídění. Řídící struktury Podmíněné příkazy (selekce) Cykly (iterace) Překladač je pozná podle klíčových slov. if, else, for, while …

Chyby ve zdrojovém kódu Při psaní programů musíme dodržovat syntaxi a sémantiku. Jinak vzniknou dva druhy chyb: Syntaktické chyby Porušují pravidla platící v daném jazyce. Překladač je odhalí a dokud je programátor všechny neopraví, nelze program přeložit do spustitelného souboru. To, že je program syntakticky správný, neznamená, že je správný úplně, protože v něm mohou být ještě sémantické chyby. Sémantické chyby Mohou způsobit běhovou chybu při vykonávání programu počítačem (například přetečení proměnné) nebo chybné zpracování vstupu. Programátor je musí v programu najít sám. Sémantika programu určuje, co má program dělat.

Paradigmata programovacích jazyků Jazyk, který neovlivní způsob, jakým uvažujete o programování, nemá cenu se učit. – Alan Perlis Nejvýznamnější paradigmata programovacích jazyků Procedurální neboli imperativní jazyky (procedural/imperative languages) Pomocí nich programátor stanoví přesný sled instrukcí, které se mají vykonat. Jsou to nejběžněji používané jazyky, například C a Pascal. Jsou více či méně univerzální, tedy lze použít na řešení libovolných problémů. Problémově orientované jazyky (domain-specific/problem-oriented/special-purpose languages) Využívají se pro řešení určité kategorie problémů typických pro určité profese, například SQL pro databáze, nebo fungujících jen v rámci určitého aplikačního softwaru, například Matlab, Mathematica, MS Excel a MS Access. Logické neboli deklarativní jazyky (logic/declarative/relational languages) Popisují řešený problém pomocí faktů a pravidel. Výsledek je vypočten pomocí inferenčního mechanismu, což je obdoba překladače, je to tedy něco, co neurčuje programátor. Inferenční pravidla jsou pravidla pro odvozování nových faktů ze známých faktů. Nejznámějším deklarativním jazykem je Prolog. Příkladem úlohy vhodné pro logické programování v jazyce Prolog je třeba tato: Alík je pes. Všichni psi jsou šelmy. Všechny šelmy jedí maso. Jí Alík maso? Funkcionální jazyky (functional/applicative languages) Popisují řešený problém pomocí do sebe vnořených funkcí a pomocí definic těchto funkcí. Kdybychom například chtěli vypočítat nejmenší hodnotu ze seznamu, mohl by program ve funkcionálním jazyce vypadat takto: VyberPrvni(SeradVzestupne(Seznam)). Mezi funkcionální jazyky patří Lisp a Scheme. Program ve funkcionálním jazyce je jednou jedinou funkcí s množstvím vnořených funkcí a místo cyklů používá rekurzi. Objektově orientované jazyky (object-oriented languages)

Objektově orientované programování Vznikly z potřeby vyvíjet stále složitější programy a ujaly se v 90. letech 20. století. V objektově-orientovaném programování (OOP) jsou datové jednotky přetvořeny na aktivní „objekty“, spíše než aby byly pasivními jednotkami, tak jak je vnímá tradiční imperativní paradigma. Příkladem jazyků pro OOP jsou C++, C#, Java. Třemi základními myšlenkami při tvorbě objektově orientovaných jazyků byly abstrakce nahrazení datových typů a podprogramů jejich identifikátory hierarchie stavba hlavních podprogramů z vedlejších modularita sdružováním jednotlivých podprogramů programu v modulech, které všechny mají stejný způsob použití neboli stejné rozhraní pro spolupráci s ostatními Za nosné pilíře OOP bývají považovány principy: zapouzdření (encapsulation) Objekt je datová struktura, která je instancí neboli konkrétním příkladem obecného objektu představujícího třídu objektů. Každá třída (class) je zvláštním modulem a má svou pozicí v třídní hierarchii. Zapouzdření přiřadí objektu podprogramy zvané metody, které objekt dokáže se sebou provádět. Při použití objektu v programu se o jeho podprogramy již nemusíme starat, pouze je voláme způsobem JménoObjektu.JménoMetody. Podprogramy v objektech jsou psány v imperativním stylu. dědičnosti (inheritance) Metody platící pro určitou třídu objektů platí i pro třídu objektů, která je v hierarchii pod ní. Potomek může mít jen jediného rodiče (ale rodič libovolné množství potomků) a zděděné metody si může pozměnit a přidat k nim další, což je myšlenka polymorfismu. polymorfismu (polymorphism) Umožňuje nadefinovat metody, které jsou pro všechny třídy objektů společné, ale jejich chování se bude lišit podle druhu daného objektu.

Co je třeba umět do testu Co je implementace a na čem je závislá? Co je abstrakce výpočetních zdrojů a v programovacích jazycích? Co je systémový software a operační systém? V jakém programovacím jazyce lidé obvykle píší systémový software nejnižší úrovně? Co je aplikační software a utility? Co je platforma? Čím je dána portabilita počítačového programu? K čemu se používá asembler? Co je strojová nezávislost programovacích jazyků? Jaký je rozdíl mezi překladačem typu kompilátor a interpret? Jak se liší syntaktické chyby od sémantických? Jak se liší jazyky procedurální od deklarativních? Uveďte jména některých jazyků patřících do těchto skupin. Jaké jsou principy objektově-orientovaného programování a v čem spočívají?