Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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

Podobné prezentace


Prezentace na téma: "Implementace Přednáška z předmětu Počítače I Dana Nejedlová"— Transkript prezentace:

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

2 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.

3 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

4 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.

5 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.

6 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).

7 Ú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…

8 Abstrakce programovacích jazyků
protected void playerAppeared(WorldObjectAppearedEvent<Player> event) { if (weaponry.hasLoadedWeapon()) { shoot.shoot(players.getNearestVisibleEnemy()); } Ukázka z 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.

9 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.

10 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.

11 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 …

12 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.

13 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)

14 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.

15 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í?


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

Podobné prezentace


Reklamy Google