Software, licence, programování

Podobné dokumenty
IB111 Programování a algoritmizace. Programovací jazyky

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

IB111 Úvod do programování skrze Python Přednáška 13

Matematika v programovacích

Programové prostředky IS/IT

Program a životní cyklus programu

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Algoritmizace- úvod. Ing. Tomáš Otáhal

Úvod. Programovací paradigmata

Programovací jazyky Přehled a vývoj

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

11. Přehled prog. jazyků

IB111 Úvod do programování skrze Python Přednáška 13

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

Maturitní otázky z předmětu PROGRAMOVÁNÍ

úvod Historie operačních systémů

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

VirtualBox desktopová virtualizace. Zdeněk Merta

Algoritmizace. 1. Úvod. Algoritmus

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Svět svobodného softwaru

Maturitní témata Školní rok: 2015/2016

1.2 Operační systémy, aplikace

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Principy operačních systémů. Lekce 1: Úvod

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

Algoritmizace prostorových úloh

99 % všech desktopů na platformě MS Windows

Sada 1 - Základy programování

Identifikátor materiálu: ICT-1-17

Algoritmy a algoritmizace

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Software programové vybavení. 1. část

Programové vybavení počítačů

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Vrstvy programového vybavení Klasifikace Systémové prostředky, ostatní SW Pořizování Využití

DTP Základy programování Úvod do předmětu

Základy informatiky. Operační systémy

SOFTWARE. Programové vybavení počítače

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Úvod do autorského práva, ochrana software, licence. SŠSI Tábor - Aplikační software 1

IT ESS II. 1. Operating Systém Fundamentals

Instalace a konfigurace web serveru. WA1 Martin Klíma

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Programování a algoritmizace: úvod

Programové prostředky IS/IT

Operační systémy: funkce

Činnost operačních systémů. Beránek Pavel 1. KŠPA

SOU Valašské Klobouky. VY_32_INOVACE_01_15 IKT Operační systémy, základní vlastnosti, přehled. Mgr. Radomír Soural

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Algoritmizace prostorových úloh

C2115 Praktický úvod do superpočítání

Procesy a vlákna (Processes and Threads)

Software Základní pojmy a rozdělení. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1123_Software Základní pojmy a rozdělení_pwp

2010/2011 ZS. Operační systém. úvod základní architektury

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Definice OS. Operační systém je základní programové vybavení počítače, nezbytné pro jeho provoz.

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Vývoj software pro Linuxové distribuce. Installfest Praha,

Na různých druzích počítačů se používají různé operační systémy. V průběhu času

Profilová část maturitní zkoušky 2017/2018

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Projekt implementace OS Linux do výuky informačních technologií

SÁM O SOBĚ DOKÁŽE POČÍTAČ DĚLAT JEN O MÁLO VÍC NEŽ TO, ŽE PO ZAPNUTÍ, PODOBNĚ JAKO KOJENEC PO PROBUZENÍ, CHCE JÍST.

Výukový materiál zpracován v rámci projektu EU peníze školám

Úvod do operačního systému Linux Mgr. Josef Horálek

Open source a Free software

Počítač jako prostředek řízení. Struktura a organizace počítače

Aplikační programové vybavení

Ochrana software. Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Alžběta Krausová, 2011

Algoritmizace a programování

VY_32_INOVACE_INF.18. Otevřený software

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4

09. Operační systémy PC 1. DOS. Nejdůležitější zástupci DOSu:

Operační systémy Linux, Mac OS X a jejich srovnání

Základní informace. Operační systém (OS)

Digitální učební materiál

Software. Placený, nebo zdarma? Ing. Simona Martínková Masarykovo gymnázium, Plzeň

Algoritmizace. Cíle předmětu

Programování. Úvod a základní principy. Martin Urza

EMBARCADERO TECHNOLOGIES. Jak na BYOD chytře? Možnosti zapojování různých mobilních zařízení do podnikových informačních systémů.

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Hospodářská informatika

Licence software. Přednáška číslo 10

Nové jazykové brány do Caché. Daniel Kutáč

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programovací jazyk univerzální notace pro zápis algoritmů, implementována.


Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

VISUAL BASIC. Přehled témat

Překladač a jeho struktura

Transkript:

Software, licence, programování Vladimír Hajko 2016 Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 1 / 50

1 Software Základní pojmy, definice Licencování 2 Programování 3 Hierarchie a druhy SW Rozlišení SW 4 Historické vazby vývoje 5 Shrnutí Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 2 / 50

Software Základní pojmy, definice Outline 1 Software Základní pojmy, definice Licencování 2 Programování 3 Hierarchie a druhy SW Rozlišení SW 4 Historické vazby vývoje 5 Shrnutí Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 3 / 50

Software Základní pojmy, definice Software Software = soubor strojově čitelných instrukcí (soubory instrukcí řešících nějaký problém = algoritmus) program (aplikace) = soubor instrukcí tvořících algoritmus + datové struktury V užším pojetí (někdy označováno jako tzv. aplikační software): soubor programů, určených k vykonání určitých operací, ke svému běhu vyžaduje systémový software Hardware počítače pouze vykonává instrukce (bez SW je nám HW k ničemu) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 4 / 50

Software Základní pojmy, definice Software - klasifikace Systémový software: Operační systémy Drivery (ovladače - poskytují možnost OS ovládat některé specifické funkce), Firmware (uložen přímo v HW) např. BIOS, řadiče (disků, grafiky) - vykonává tzv. mikrokód, např. řídí pohyb čtecí hlavy pevného disku Aplikační software Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 5 / 50

Software Licencování Outline 1 Software Základní pojmy, definice Licencování 2 Programování 3 Hierarchie a druhy SW Rozlišení SW 4 Historické vazby vývoje 5 Shrnutí Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 6 / 50

Software Licencování Vlastnictví software Software je autorské dílo, jediným vlastníkem je autor (nekupujete si SW jako takový, ale právo používat jeho kopii) Možnost využití tohoto díla je typicky kontrolována licenční smlouvou (EULA) specifikuje možnosti a podmínky pokud neexistuje, vypršela, nebo byla zrušena: tzv. license-free software, popř. volné dílo (public domain) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 7 / 50

Software Licencování Základní typy licencování Komerční (single user nebo multilicence (volume licenses)) zvláštní typ: shareware (popř. trialware, demoware): zdarma k vyzkoušení, typicky omezená doba použití, omezené funkce zvláštní typ: OEM (Original Equipment Manufacturer) software zvláštní typ: embedded software (typicky podřízen speciální licenci (ESL)) - roste na významu ( chytrá zařízení, auta, lednice, termostaty; speciální zařízení, typicky s variantami Unix nebo Windows OS) Freeware (použití zdarma, ale ne už redistribuce, modifikace atp., typicky closed source) free software (zdarma použití i redistribuce a modifikace, typicky open source) typicky vyžaduje (nejznámější asi GNU General Public License) zachování otevřenosti při modifikacích a redistribuci Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 8 / 50

Software Licencování GNU GPL Založen 27. 9. 1983 na MIT; hlavní autor: Richard Stallman, otec svobodného SW Koncept free software, tj. SW který může uživatel zkoumat na úrovni zdrojového kódu, modifikovat, a dále šířit (pokud zůstane svobodný) Prinicp tzv. Copyleft (způsob licencování, který zachovává SW jako free software) Nejznámnější v souvislosti s GNU/Linux (od 1992) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 9 / 50

Software Licencování Software as a Service (SaaS) Nekupujeme licenci na používání SW, ale určitou požadovanou funkčnost Místo toho koupíme nějakou funkčnost (službu) využití určitého SW je součástí této služby Např. provozování e-shopu: zahrnuje i webové aplikace pro e-shop Např. Microsoft Exchange Online: neprovozujeme MS Exchange Server na vlastním HW Služba běží na cizím HW, my jen využíváme funkcionalitu (pošta, týmová spolupráce, atp.) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 10 / 50

Programování Počítač rozumí jen strojovému kódu (jen ten je schopen zpracovat) Kód představuje instrukce pro procesor Závislé na konkrétním modelu procesoru Lze ručně vytvořit přímo program ve strojovém kódu, ale velmi pracné a nepraktické Historicky: počítač de facto specializované zařízení, pro jehož obsluhu a práci s ním byly potřeba zvláštní schopnosti (analogie soustružník a soustruh) tzn. že počítače používali pouze programátoři operátoři dnes většina uživatelů neumí/nemusí umět programovat prográmatoři s tímto počítají, vše se nachystá pro běžné uživatele, ti už jen využívají připravné programy (dnes zpravidla s grafickým uživatelským rozhraním (GUI)) Programátoři píší programy v programovacích jazycích (= prostředek pro zápis algoritmů) (Programovacích jazyků velké množství, vzájemně mají i odlišné koncepce jak v nich programovat ) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 11 / 50 Co je programování?

Programování Algoritmizace Algoritmus = krok-po-kroku zapsaný soubor operací, které se mají vykonat, tzn. převádí vstupní data na výstupní data řeší nějaký problém Vlastnosti: konečnost (rezultativnost): výpočet/běh skončí v rozumném čase hromadnost (masovost): musí být schopen pracovat s různými vstupními daty (např. výpočet průměru z libovolných čísel, ne např. jen ze souboru {5, 6, 7, 8}) jednoznačnost (determinovanost): nejsou slepé uličky, přechod do dalšího stavu je jednoznačně určen výsledkem stavu předcházejícího opakovatelnost: zpracování stejných dat vede ke stejným výsledkům Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 12 / 50

Programování Programy Program = soubor algoritmů a datových struktur Programovací jazyky: formální jazyk, prostředek pro zápis algoritmů deklarace, příkazy, sekvence, selekce, iterace, cykly Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 13 / 50

Programování Programy - související pojmy Programy pracují s hodnotami uloženými v proměnných (určení proměnné se nazýává deklarace (určení jména/identifikátoru, datového typu) (např. int myvariable;) tzv. deklarací se určují i funkce / procedury, konstanty aj. přiřazení znamená, že se ke jménu (identifikátoru) proměnné přiřazují hodnoty (např. x=5; atp.) Výrazy (někdy též regulární výrazy) znamenají, že se na proměnné použijí operace (např. x==1; x=x+2; atp.) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 14 / 50

Programování Základní pojmy Sekvence: posloupnost příkazů, které se postupně provedou Větvení: rozděluje program do 2 větví podle toho, zda je nebo není splněna podmínka (if podmínka-then-else) Cykly: Cyklus s podmínkou na začátku (while podmínka - do) (není-li podmínka na počátku splněna, cyklus nemusí proběhnout ani jednou) Cyklus s podmínkou na konci (repeat - until podmínka) (proběhne min. jednou) Cyklus se známým počtem průchodů (for i=1 to n do) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 15 / 50

Programování Tvorba SW Většina SW využívá tzv. high-level programovací jazyky využívají abstrakci, není nutné řešit některé detaily (jako např. správa paměťových instrukcí) nezávisí na architektuře počítače, avšak nutnost kód tzv. kompilovat C++ / C / C#, Java, Python, Visual Basic, Delphi, Perl, aj. Low-level programovací jazyky nemají žádnou sémantiku, obtížnější práce (ale větší volnost, často rychlejší, naprostá kontrola nad instrukcemi) závisí na architektuře, typicky odpovídá strojovému kódu využití assembleru (assembler = jazyk symbolických adres ) pro sestavení numerických instrukcí např. tvorba firmware, ovladačů, popř. specializované účely (např. vysoce specialozvané optimalizace, zařízení vyžadující přímou kontrolu nebo přesné časování, některé typy malware nebo pro reverse engineering) pozor, OS však už typicky psány v high-level jazycích Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 16 / 50

Programování Rozlišení programovacích jazyků Vyšší programovací jazyky vs. nižší programovací jazyky Vyšší: využívají vyšší míru abstrakce, snaha o přiblížení se lidskému myšlení Nižší: malá nebo žádná abstrakce od toho, jak funguje CPU Kompilované vs. interpretované Kompilace: nejprve je program přeložen do strojového kódu (např. C/C++, Pascal) - vyžaduje se překlad před spuštěním, ale přeložený program běží rychle Interpretace: při spuštění programu je spuštěn interpret (překladač) a ten interpretuje program v programovacím jazyce (není nutný překlad před spuštěním, ale pomalejší) Imperativní (procedurální) vs. Deklarativní (neprocedurální) Imperativní (procedurální): popisuje jednotlivé úkony pomocí algoritmů Deklarativní (neprocedurální): co se má udělat, ne jak se to má udělat Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 17 / 50

Programování Vyšší programovací jazyky Imperativní (procedurální) - popisují jak se má provádět výpočet Strukturované (např. C, Pascal) Objektově orientované (např. C/C++, Java) Deklarativní (neprocedurální) - popisují co se má vypočítat Funkcionální (např. Lisp, Haskell) - výpočet představuje vyhodnocování matematických funkcí, založeno na tz.v Lambda kalkulu (program představují zápisy lambda výrazů, které popisuje, jak se z hodnoty argumentu vypočte hodnota funkce) - Logické (např. Prolog, Gödel) - využívá matematickou logiku, tj. soubory axiomů, logických faktů a vztahů, počítač řeší zadaný logický vztah Některé jazyky mohou kombinovat přístupy Např. C/C++ kombinuje strukturovaný a OOP přístup Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 18 / 50

Programování Assembler - ukázka kódu Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 19 / 50

Programování Strojový kód Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 20 / 50

Programování Imperativní programovací jazyk- Fortran Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 21 / 50

Programování Imperativní programovací jazyk- Basic Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 22 / 50

Programování Programovací jazyky vyšší úrovně - historie FORTRAN (1954) Pojmenování proměnných, složené výrazy, podprogramy,... využití pro vědeckotechnické výpočty ALGOL (1960) Matematické algoritmy COBOL (1960), BASIC (1964) Syntaxe podobná angličtině Pascal (1971), C (1972 - Dennis Ritchie), Ada (1983) Dodnes používány (i pro nové projekty) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 23 / 50

Programování Objektově orientované programovací jazyky (OOP) Objekty - vše s čím chce programátor nějak nakládat; ty se zobecňují do tříd a metody popisují co lze s třídou dělat Smalltalk-80 (1980) C++ (1985) Objektově orientovaná verze jazyka C (původně jen rozšíření C) Perl (1987) Populární pro tvorbu CGI (Common Gateway Interface) skriptů - server přepošle požadavek do (externí) aplikace, ta jej zpracuje, vrátí výstup v podobě (statické) webové stránky a ta je serverem poslána klientovi - viz <příklad> Python (1990) Skriptovací jazyk, vhodný i pro větší aplikace PHP (1994) Webové programování, dynamický web Java (1994) Platformní nezávislost (interpretovaný jazyk, tzv. virtuální stroj Javy (JVM) (Java Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 24 / 50

Programování Objektově orientovaný jazyk - JAVA Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 25 / 50

Programování Objektově orientovaný jazyk - PHP Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 26 / 50

Programování Dennis Ritchie (1941-2011) Vytvořil programovací jazyk C; Společně s Kenem Thompsonem vytvořili OS UNIX; patrně nejdůležitější osoba pro moderní podobu ICT C takřka všudypřítomné, dostupné pro takřka všechny platformy, navíc velice efektivní pro běh syntaxe blízká tzv. pseudokódu, algoritmus lze snadno převést na program poskytuje i robustní kontrolu nad HW - link mezi vyššími a nižšími programovacími jazyky (často v něm psány i ovladače, kompilery atp.) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 27 / 50

Programování Logické programování - Prolog Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 28 / 50

Programování Logické programování - Prolog; (<příklad kódu v Haskellu>) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 29 / 50

Programování Vývoj programovacích jazyků Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 30 / 50

Programování Jak si vybrat? Neexistuje univerzální ideální programovací jazyk pro všechny systémové a aplikační programy Kvůli nevýhodám a omezením existujících jazyků vznikaly a vznikají jazyky nové Rychlost programování vs. rychlost běhu programu vždy kompromis Každý jazyk má své pro a proti platí také jakási familiarita - pokud jde o nepříliš rozsáhlý projekt, tak často je rozumnější implementovat v jazyce, který je nám znám, přestože by mohl být efektivněji implementován v jazyce jiném k žádoucímu výsledku také může vést vícero způsobů řešení (typické příklady: <třídící algoritmy - animace>) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 31 / 50

Programování Jak si vybrat? V praxi může být výhodné kombinovat několik jazyků/přístupů Např. programování pro WWW - je vhodné/praktické oddělit: funkci (aplikační logiku - kód na serveru, např. PHP), data (databázový server, např. SQL), vzhled a uživatelské rozhraní (HTML, CSS, Javascript) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 32 / 50

Programování Vlastnosti důležité při tvorbě programů Rychlost výpočtu (výpočetní náročnost) Tj. doba trvání běhu programu Paměťová náročnost Kolik paměti potřebujeme (vs. dostupné systémové prostředky; při překročení swapování - pomalé) Náročnost tvorby samotné: Kolik času/námahy zabere program napsat Efektivnost kódu vs. efektivnost využití času programátora Odladění chyb Přehlednost a srozumitelnost: zda se v kódu vyzná i někdo jiný než autor :) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 33 / 50

Programování Optimalizace a ladění Obvykle se lze ke stejnému řešení dobrat několika cestami Ne vždy musí být zvolená implementace nejlepší z hlediska výpočetní efektivnosti Možnosti zrychlení : Odhad očekávaných požadavků a počítání možných řešení na pozadí (předpočítání) Výpočet hodnot na základě předchozích hodnot: (f (x + 1)), tzv. Hörnerovo schéma (např. efektivní vyhodnocování polynomů) Přímé generování výsledků (příklad) Čištění a příprava dat (řazení) Eliminace rekurzí (dynamické programování) - opakující se výpočty jsou uloženy (nepočítají se stejné věci znovu a znovu) Minimalizace pomalých operací (přístup do paměti, čtení z disku, podmínky atp.) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 34 / 50

Programování Chyby a ladění V kódu v zásadě dva typy chyb Syntaktické - chybný zápis, neplatná přiřazení, dělění nulou atp. Typicky způsobí, že počítač nerozumí příkazu, obvykle odhaleno překladačem (zastavení běhu programu v důsledku chyby) - nemusí platit vždy, silent problémy, memory corruption (nezáměrná změna dat v paměti v důsledku chyby) Využívá se tzv. debugger - krokování programu Logické - chybný návrh algoritmu, program běží, ale poskytuje nesprávné výsledky, neplní některé z žádoucích vlastností, vykazuje chybnou funkčnost Obtížně odhalitelné, závažné důsledky (!) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 35 / 50

Hierarchie a druhy SW Rozlišení SW Outline 1 Software Základní pojmy, definice Licencování 2 Programování 3 Hierarchie a druhy SW Rozlišení SW 4 Historické vazby vývoje 5 Shrnutí Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 36 / 50

Hierarchie a druhy SW Rozlišení SW Hierarchie SW HW-specifické činnosti řízeny firmware BIOS: interface pro firmware (u moderních počítačů typicky pouze při startu a načtení bootloaderu, další komunikace se zařízeními už typicky přímo OS) od r. 2010 BIOS nahrazován UEFI (Unified Extensible Firmware Interface) OS: správa systémových HW i SW prostředků, rozhraní pro běh aplikací (zprostředkovává komunikaci aplikací a HW činností) Aplikační software Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 37 / 50

Hierarchie a druhy SW Rozlišení SW Operační systém Správa systémových prostředků Řízení přístupu Součásti: Správa procesů, přerušení správa pamětí správa souborů ovladače zařízení Síťové prostředky Bezpečnost I/O Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 38 / 50

Hierarchie a druhy SW Rozlišení SW Malware Specifický druh MALicious software = škodlivý software viry, červi, trojské koně, spyware, adware atp. Obecně jakýkoliv software, který narušuje činnnost počítače, typicky bez vědomí uživatele, a s úmyslem poškodit zájmy uživatele SW, který nelicencujeme, jeho funkcionalita je nám ke škodě, naopak je uživateli / oběti vnucen Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 39 / 50

Historické vazby vývoje Historie vývoje hlavních OS OS nevznikají spontánně (out of the blue), ale spíše evolučně - často lze sledovat vazby a návaznosti Např. Microsoft: založen v roce 1975 1981 vzniká MS-DOS 1985 se prodávají první Windows 1.0 1990 vznikají Windows 3.0 a ty jsou oblíbené (ještě oblíbenější jsou Windows 3.11 o pár let později) 1993 vydány Windows NT (plně 32 bitové) 1995 Windows 95, 1998 Windows 98 (poslední založený na DOSu) NT větev: Windows 2000, XP, Vista, 7 Nově: 8, 8.1 a 10 Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 40 / 50

Historické vazby vývoje Historie vývoje hlavních OS UNIX: vznik v roce 1970 jako vedlejší větev nepříliš úspěšného Multicsu UNIX je konkrétní systém používaný v letech 1970 1990 Na UNIX navázaly řady podobných systémů: Komerční: AIX, SunOS, Xenix, SCO, HP-UX, Solaris Ne plně komerční: BSD Open source: Minix, FreeBSD, NetBSD, OpenBSD, OpenSolaris; také LINUX Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 41 / 50

Historické vazby vývoje Unix vývoj Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 42 / 50

Historické vazby vývoje Linux vývoj I Vzniká v roce 1991 jako projekt finského studenta Linuse Torvalse Linux je v podstatě jen jádro OS To je třeba doplnit ostatními programy V Linuxových systémech se ostatní programy berou z projektu GNU Systém pak označujeme jako GNU/Linux Licence GNU GPL Zdarma i pro komerční použití, zdrojový kód lze i modifikovat a dále šířit, ale je nutné zachovat jejich bezplatné šíření Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 43 / 50

Historické vazby vývoje Linux vývoj II Linux je de facto jen jádro (nemá žádné rozhraní pro uživatele) Pro praktické užití je třeba jádro doplnit o ostatní součásti (programy) Vznikají tak tzv. distribuce Linuxu Debian, Ubuntu, Fedora, RedHat Enterprise Linux aj. Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 44 / 50

Historické vazby vývoje Linux vývoj III - URL Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 45 / 50

Historické vazby vývoje Historie MacOS Počítač Macintosh firmy Apple vzniká v roce 1984 OS nejprve nazýván jen System V roce 1990 vzniká verze 7, od verze 7.5 se System nazývá MacOS Pokračují verze po číslo 9, pak následuje Mac OS X Později Mac vypadává, takže jen OS X Dnes nově přejmenováno na macos - pro počítače Pro mobilní zařízení se větev jmenuje ios Pro hodinky watchos Pro televize tvos Vše založeno na Unixu, ale důraz na jednoduchost používání a intuitivnost GUI Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 46 / 50

Historické vazby vývoje Android Původně operační systém pro digitální fotoaparáty (2003) Kupuje Google a plánuje pro použití v mobilních zařízeních (2005) Založeno na jádře Linuxu ALE Android není zcela open source (např. Google Play) Programy psány typicky v Javě, běží v obdobě Java Virtual Machine (JVM) Dnes aktuální verze 6 (Marshmallow), chystaná verze 7 (Nougat) Aktualizace musí zajišťovat výrobci HW (např. HTC), nikoliv tvůrci Androidu Potenciální problém! (nízká motivace výrobců udržovat podporu pro morálně zastaralá zařízení ) Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 47 / 50

Historické vazby vývoje Android Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 48 / 50

Historické vazby vývoje Embedded OS Tzv. embedded OS jurčené k řízení určitého specializovaného zařízení Na první pohled nemusí být vůbec patrné, že jde o počítač vybavený OS např. chytrá zařízení (TV, ledničky, termostaty, elektroměry atp.), bankomaty, semafory a systémy řízení provozu, zábavní (on-board entertainment) systémy, digitální fotoaparáty, GPS navigace, aj. Často záměrné snížení možností interakce uživatele - soustředění na úzkou množinu vykonávaných činností (nižší míra funkcionality) ale umožňuje také nižší cenu - ořezání HW (CPU, RAM) Často také bez vize upgradu, rozšiřování, oprav chyb atp. Tvorba SW na míru nákladná, často tedy hrubší implementace hotových řešní (často free SW) ne vždy dodržen least privilege princip (např. incident se systémem dopravního letadla (přístup k ovládání výkonu motoru)) Vazba (nezbytnost) na tzv. Internet of things (IoT) - schopnost komunikace a výměny dat mezi zařízeními (koncept smart cities, Vladimír chytré Hajko elektroměry, (FVL UNOB) doprava, řízení spotřeby energií, Aplikovaná senzory Informatika atp.) 49 / 50

Shrnutí Rekapitulace Základní pojmy: SW - systémový, aplikační, BIOS, OS, užití SW a licence, programovací jazyky, algoritmy Zjistěte jaký SW máte nainstalován na svém PC (např. Belarc Advisor) - jste schopni identifikovat k čemu slouží? Zjistěte co znamená tzv. Bloatware. Máte na svém PC nějaký? Vladimír Hajko (FVL UNOB) Aplikovaná Informatika 50 / 50