Počítačový program

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Počítačový program (též jen program, obecně pak software) je v informatice posloupnost instrukcí (ne nutně strojových instrukcí), která popisuje realizaci dané úlohy počítačem. Aby počítač mohl vykonávat nějakou činnost, potřebuje mít ve své operační paměti alespoň jeden program. V současné době je v počítači základním programem jádro, které řídí jeho chod a uživatel pak pracuje s aplikačním softwarem.

Charakteristika[editovat | editovat zdroj]

Počítačový program dnes vytváří programátor zápisem algoritmu v nějakém programovacím jazyce. Zdrojový kód je buď nejprve přeložen překladačem do strojového kódu, který je pak přímo vykonáván procesorem, nebo je zdrojový kód vykonáván interpretem (bez existence spustitelného strojového kódu). V dřívějších dobách mohl být program realizován přímo v hardwaru zapojením vodičů, děrným štítkem a podobně.

Související informace naleznete také v článku Programování.

Rozdělení programů[editovat | editovat zdroj]

Všechny počítačové programy označujeme souhrnně jako software (mezi software jsou někdy zahrnována i data). Programy můžeme rozdělit na dvě základní skupiny:

Systémový software[editovat | editovat zdroj]

V současné době je základním programem v počítači jádro, které je součástí operačního systému (například jádro Linuxu, jádro některé verze systému Windows NT, jádro Symbian OS…). Toto jádro je do paměti počítače zaváděno při startu počítače (viz bootování), na čemž se v IBM PC kompatibilních počítačích podílí BIOS (tj. firmware) a zavaděč (oboje jsou speciální programy). Během startu počítače se uplatňují další speciální programy. Vše se označuje jako systémový software.

Aplikační software[editovat | editovat zdroj]

Operační systém umožňuje uživateli počítač ovládat, spouštět další aplikační software a komunikovat s ním (předávat mu vstupy a získávat výstupy, resp. výsledky jeho činnosti). Typickým aplikačním softwarem je například Microsoft Word, LibreOffice, ale i drobné aplikace (tzv. gadgety).

Programovací jazyky[editovat | editovat zdroj]

První počítače byly programovány buď přímým zapojením obvodů nebo ve strojovém kódu procesoru. V současné době se programy obvykle zapisují v některém z programovacích jazyků ve formě zdrojového kódu, aby byl zápis srozumitelný pro člověka. Úpravy zdrojového kódu zahrnují testování, analýzu či ladění, a velice často probíhá ve spolupráci s ostatními programátory na společném projektu. Osoba, která tuto činnost vykonává, je označována jako programátor, vývojář softwaru či softwarový architekt, v závislosti na náplni práce, která se u jednotlivých pozic liší. Běžný trend je, že z kvalitních vývojářů se stávají analytici či softwaroví architekti, kteří navrhují komplexní informační systémy. Tato velice často zdlouhavá činnost se nazývá vývoj softwaru.

Související informace naleznete také v článcích Programovací jazyk a Dějiny počítačů.

Spouštění programu[editovat | editovat zdroj]

Počítačové programy jsou obvykle uchovány ve stálé, nevolatilní paměti (např. pevný disk) do té doby, dokud nejsou vyžádány uživatelem ke zpracování, a to buď přímo či nepřímo jiným procesem. Na základě tohoto požadavku je program operačním systémem načten do operační paměti, kde je jeho posloupnost instrukcí přímo dosažitelná procesorem. Spuštěný program, který je vykonáván, se nazývá proces.[1] Proces se v operační paměti skládá z vlastního programu a dynamicky se měnících dat.

Související informace naleznete také v článku Proces (program).

Souběžné zpracování[editovat | editovat zdroj]

Související informace naleznete také v článcích Proces (program) a Multitasking.

V současných multitaskingových systémech je spuštěno zároveň více různých programů (resp. procesů). Jeden program může být spuštěn vícekrát a vytvořit tak více procesů (např. dvakrát spuštěný webový prohlížeč, přičemž v každém je zobrazena jiná webová stránka). Jeden proces může být složen z více vláken, která obvykle navzájem spolupracují.

Většina současných operačních systémů podporuje multitasking, který umožňuje zpracování několika programů (resp. procesů) zároveň, které jsou zdánlivě prováděny současně. Jádro operačního systému ve skutečnosti všechny procesy velmi rychle střídá (změna kontextu zhruba sto až několik tisíc přepnutí za vteřinu), takže pro uživatele vzniká dojem jejich současného běhu.[2] V dnešní době umožňují víceprocesorové nebo vícejádrové počítače zpracování více programů naráz bez ztráty výkonu.[3]

Ukončení procesu[editovat | editovat zdroj]

Procesor vykonává instrukce běžícího programu (procesu) instrukci za instrukcí až do jeho ukončení. K ukončení procesu dochází buď standardně (dojde k vykonání instrukce, která má za úkol program ukončit) nebo pokud nastane nějaká chyba, například programátorská nebo hardwarová.

Vznik programu[editovat | editovat zdroj]

Vestavěný program[editovat | editovat zdroj]

Mikrokontrolér umístěný vpravo uvnitř této USB flash paměti je ovládaný vestavěným programem tzv. firmware.

Některé počítačové programy, případně celé vestavěné systémy, jsou zabudované do hardware napevno. Aby mohl nějaký systém naběhnout (tzv. nabootovat z angl. boot), vyžaduje uložený počítačový program tzv. vestavěný program, uložený v paměti ROM. Proces bootování je nezbytný k inicializaci všech částí systému, od registrů procesoru, přes ovladače zařízení až po obsah volatilní paměti.[4] Po procesu zavádění načte tento zabudovaný program operační systém, a nastaví čítač instrukcí pro započetí běžných operací. Periferní zařízení mohou mít zabudovaný program, tzv. firmware, pro ovládání jejich činnosti nezávisle na hostitelském počítači. Firmware se používá v případech, kdy se neočekává jeho změna nebo pokud je taková změna výjimečná; případně tehdy, kdy je nutné zajistit, že nedojde ke ztrátě programu při výpadku energie.[5]

Ruční programování[editovat | editovat zdroj]

Zásuvka pro ruční vstup na 16bitovém počítači Data General Nova 3

Počítačové programy byly dříve vkládány do hlavního procesoru ručně, prostřednictvím zásuvek k tomu určených. Instrukce pro procesor byly reprezentovány nastavením polohy zapnuto/vypnuto. Poté, co byla nastavena potřebná konfigurace, stisklo se tlačítko pro vykonání programu.[6] Poté byl program vykonán a tento proces se několikrát opakoval. Dříve byly pro tyto ruční vstupy používány zejména děrné štítky, ale také děrné pásky.

Automatické generování programu[editovat | editovat zdroj]

Automatické generování kódu je styl programování, který vytváří zdrojový kód prostřednictvím generických tříd, prototypů či šablon za účelem zvýšení produktivity programátora. Zdrojový kód je generován programovacími nástroji nebo integrovaným vývojovým prostředím. Nejjednodušší formou generátoru zdrojového kódu jsou tzv. makra, jakými je například preprocesor jazyka C, který nahrazuje šablony částí zdrojových kódů na základě poměrně jednoduchých pravidel.

Tzv. software engine generuje zdrojový kód nebo značkovací kód, který se současně stává vstupem do dalšího procesu. Analogicky bychom mohli říci, že jeden proces pohání další, používaje počítačový kód jako palivo. Aplikační server může například dodávat aplikace ke klientským počítačům. Příkladem takového enginu je Wiki, což je aplikační server, který umožňuje uživatelům tvořit dynamický obsah webu prostřednictvím článků. Wiki generují HTML kód, CSS definice, Java applety, a skripty v jazyce JavaScript, které jsou poté interpretovány internetovým prohlížečem.

Reference[editovat | editovat zdroj]

  1. Kolář, Petr(2005). Operační systémy. TUL, 18. 
  2. Pecinovský, Rudolf(2009). Myslíme objektově v jazyku Java: kompletní učebnice pro začátečníky. Grada Publishing a.s., 468. 
  3. Eckel, Bruce. Myslíme v jazyku C++ 2.díl - knihovna zkušeného programátora. Grada Publishing a.s., 523. 
  4. Kolář, Petr(2005). Operační systémy. TUL, 17-18. 
  5. Tanenbaum, Andrew S.(1990). Structured Computer Organization, Third Edition. Prentice Hall, 11. ISBN 0-13-854662-2. 
  6. Silberschatz, Abraham(1994). Operating System Concepts, Fourth Edition. Addison-Wesley, 6. ISBN 0-201-50480-4. 

Související články[editovat | editovat zdroj]