titl CZ Informační technologie Jaroslav Šmarda zahlavi CZ Informační technologie * Historie počítačů * Koncepce počítače * Procesor * Operační systém * Programovací jazyky * * zahlavi CZ Historie počítačů * 1833 - Angličan Charles Babage tzv."Analytical Engine" pracující s děrnými štítky * 1938- německý stavební inženýr Konrád Zuse sestrojil první mechanický počítač Z1 * 1941 - Z3 od Konrada Zuse první reléový (zničen 1944) – dvojková soustava * 1946 - americký ENIAC - desítková soustava * 1952 - počítač IAS vzor pro první velkosériově vyráběný počítač IBM 701. * 1958 - v Československu první reléový počítač SAPO * 1948 - poprvé předveden tranzistor, komerčně v roce 1952 * zahlavi CZ Generace počítačů * Generace počítačů podle použitých součástek: * * * • • • * Počítače 5. generace jsou charakterizovány kvalitativně odlišnými prostředky komunikace s uživatelem, operační rychlostí a prvky umělé inteligence. zahlavi CZ Koncepce počítače (John von Neumanna z let 1946-1952) * Počítač obsahuje: zahlavi CZ Koncepce počítače (John von Neumanna z let 1946-1952) ALU Řídící jednotka Paměť Vstup/výstup zahlavi CZ Koncepce počítače: data a instrukce * Data a instrukce * jsou vyjádřeny binárně, nejsou explicitně označeny (speciálně platí i pro datové typy) * Data a instrukce * se uchovávají v jedné paměti na místech označených adresami (Podle výpisu paměti nelze poznat, jestli jde o data, či instrukce) * Koncepce platí dodnes * změna jen v počtu procesorů * * zahlavi CZ Paměť počítače * Nejmenší jednotka paměti: * Bit (Binary Digit) – 0 nebo 1 * Základní jednotka paměti: * Byte = 8 bitů * 0 1 0 0 1 1 1 0 * 2x2x2x2x2x2x2x2 = 28 = 256 možností zahlavi CZ Paměť počítače * 4 bity (1/2 bytu) * 0 1 1 1 * 2x2x2x2 = 16 možností * šestnáctková soustava (hexadecimální) zahlavi CZ Paměť počítače 7D 30 FF 4A 0111 1101 0011 0000 1111 1111 0100 1010 zahlavi CZ Paměť počítače * Paměť s přímým přístupem (RAM – Random Access Memory) * Všechna paměťová místa kdykoliv dostupná přes adresu 5C Adresa: 4010 Adresa: 4012 Adresa: 4014 zahlavi CZ zahlavi CZ Program – posloupnost instrukcí * Předpis pro řešení úlohy * Procesor interpretuje (postupně provádí) instrukce uložené v paměti v pořadí, ve kterém jsou uloženy v paměti, pokud toto pořadí není změněno speciálními instrukcemi * Změna pořadí provádění instrukcí: * instrukce podmíněného a nepodmíněného skoku zahlavi CZ Rozdělení instrukcí procesoru * Přesunové * mezi registry procesoru nebo mezi operační pamětí a registry * Aritmetické * sčítání, odčítání, … * Logické * log. součet, log. součin, rotace a posuvy, … * Skoku * při rozhodování, … * vstupně výstupní * pro práci s periferními zařízeními, … * Ostatní * řídicí, … zahlavi CZ Příklady instrukcí procesoru Intel zahlavi CZ Dvě základní koncepce procesorů * CISC (Complete Instruction Set Computer) * úplná instrukční sada (Intel) * RISC (Reduced Instruction Set Computer) * redukovaná instrukční sada. * pro vykonání 80 % operací je zapotřebí cca 20% instrukcí * méně časté instrukce nahrazeny programem ze základních instrukcí * Zjednodušení procesoru, zvýšení rychlosti (A4 pro iPhone a iPad) • zahlavi CZ Procesor A5 (RISC ARM) a5_1.jpg zahlavi CZ Základní deska notebooku (Intel – CISC) DSC00339.jpg zahlavi CZ 3 servery DSC00331.jpg zahlavi CZ Server se dvěma procesory (Intel – CISC) DSC00335.jpg zahlavi CZ Nvidia Tegra - zahlavi CZ Operační systém Uživatel Aplikace Operační systém Hardware zahlavi CZ Softwarová struktura počítače Hardware Operační systém Program 1 Program 2 Program 3 zahlavi CZ Systémový software – operační systém (OS) * Operační systém (OS) * prostředník mezi HW a aplikačními programy * rozhraní: * pro hardware * pro aplikační programy * běží v každém počítači (i v iPhone) * abstrakce pro ovládání hardware (zjednodušení aplikačních programů) zahlavi CZ Operační systém * více programů paralelně * správa zdrojů (procesor, paměť, obrazovka, klávesnice, tiskárny, další V/V zařízení) * efektivní využití hardwaru, který je k dispozici zahlavi CZ Příklady operačních systémů * Windows 7 * Linux * Android * Mac OS X * Mac iOS * Chrome OS • zahlavi CZ Aplikační programy * Aplikační program nebo aplikace: * řeší jednu nebo několik vzájemně propojených úloh * pomáhá uživateli řešit problémy reálného světa * naplňuje potřeby uživatele * Příklady: * podnikový software, účetní software, kancelářský program, grafický program, počítačová hra * Systémový software (komponenta OS): * řídí a integruje počítačové zdroje zahlavi CZ Výpočetní proces v počítači * posloupnost elementárních kroků s počátkem a koncem přetvářející vstupní data (vstupní parametry na výstupní (řešení) * je důsledkem vykonávání programu zahlavi CZ Programovací jazyky * Program * předpis s přesně daným tvarem a významem, podle kterého vzniká výpočetní proces * je pasivní entita – text * Programovací jazyk * smluvená pravidla, v souladu se kterými je program vytvořen * program je napsán v programovacím jazyku * Algoritmus * přesný návod či postup, kterým lze vyřešit daný typ úlohy * teoretický princip řešení problému zahlavi CZ 2 etapy programování * éra neprogramovatelných počítačů –jednoúčelové, program hardwarovou součástí počítače * Například dešifrovací počítače k dešifrování šifer německého stroje Enigma * éra programovatelných počítačů –univerzální počítač * Prvním byl Z3 * zahlavi CZ Programovací jazyky * nižší * přímá vazba na hardware => plné využití počítače * žádné prostředky abstrakce => zdlouhavé programování, chyby, které se špatně opravují * vyšší * není přímá vazba na hardware * vyšší prostředky abstrakce=> efektivnější programování, méně chyb zahlavi CZ Nižší programovací jazyky * Kódy stroje * nejstarší, de facto sekvence jedniček a nul * – * * Assemblery * pro zápis instrukcí použity mnemotechnické zkratky zahlavi CZ Nižší programovací jazyky * Bajtkódy * Bajtkódy (anglicky bytecode) lze chápat jako jazyky stroje pro virtuální procesory (nejsou hardwarové, ale softwarové) * zahlavi CZ Vyšší programovací jazyky * Nejsou vázány na konkrétní hardware * Historie: * FORTRAN (1953) * ALGOL (1958) * COBOL (1959) zahlavi CZ Vyšší programovací jazyky * PASCAL * původně pro výuku, strukturované programování * C * Unix * Java * Internet * C++ * Objective C * Apple * C# * Windows .NET * Python * Basic zahlavi CZ Překladač (generátor kódu) Počítač vývojáře programu Počítač uživatele programu Pascal, C, C++, Objective C zahlavi CZ Překladač (interpret) Počítač uživatele programu Počítač vývojáře programu Basic, Java (JVM Java Virtual Machine), Javascript, Python zahlavi CZ Syntax a sémantika programu * Dva úhly pohledu na programy: * Syntax * způsob nebo tvar, ve kterém se programy zapisují * soubor přesně daných pravidel definujících, jak zapisujeme programy v daném programovacím jazyku * Sémantika * význam programu zahlavi CZ Program: Hello World! •V jazyce Pascal: • •program HelloWorld; •begin • writeln('Hello World'); •end. V jazyce Python: print "Hello, World!" zahlavi CZ Program: Hello World! •V jazyce C: •#include •main() { • printf ("Hello World!\n"); •} V jazyce Java: public class HelloWorld { public static void main (String[] args) { System.out.println("Hello, world!\n"); } } zahlavi CZ Program: Hello World! •V jazyce Objective C: •#import •int main ( int argc, const char *argv[] ){ printf( "hello world\n" ); • return 0; •} zahlavi CZ Syntax a sémantika * Syntaktická chyba je chybou v zápisu programu: * printf ("Hello World!\n); * Sémantická chyba je chybou ve významu programu: * a= 10; b=0; c=a/b;