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; (
)
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:
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, chytré doprava, řízení spotřeby energií, senzory atp.) Vladimír Hajko elektroměry, (FVL UNOB) Aplikovaná Informatika
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