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

Historie[editovat | editovat zdroj]

První programovatelná zařízení[editovat | editovat zdroj]

Nejčasnější programovatelná zařízení předchází vynálezu digitálního počítače. V roce 1801 Joseph-Marie Jacquard vymyslel tkalcovský stav, který tkal vzor (květy, listy a jiné symboly) podle předem určených a seřazených děrných štítků Pouhou změnou pořadí štítků byl změněn celý vzor.[1]

Analytický stroj[editovat | editovat zdroj]

Charles Babbage se roku 1837 inspiroval „programovatelným“ tkalcovským strojem a pokusil se sestavit první analytický stroj. Zařízení mělo možnost uložit až 1000 čísel o délce až 40 číslic, se kterými se mohlo dále pracovat. Zařízení bylo programovatelné pomocí dvou sad děrných štítků. Jedna sada řídila provoz zařízení a druhá sloužila k nastavení vstupních hodnot.[1] [2] I přes velmi slibný návrh, mnoho využitých finančních zdrojů a hodiny práce se tento projekt nepodařilo zcela dokončit.[3]

Mezi lety 1842-1843 Ada Lovelace přeložila monografii italského generála a matematika hraběte Menabrea, která mimo jiné detailně popisovala metodu pro výpočet Bernoulliho čísla pomocí analytického stroje. Tato poznámka v monografii je mnoha historiky považována za první počítačový program na světě.[4]

Univerzální Turingův stroj[editovat | editovat zdroj]

Alan Turing roku 1936 představil univerzální Turingův stroj. Jednalo se o teoretické zařízení, které bylo schopné modelovat všechny výpočetní operace proveditelné na Turingově úplném výpočetním stroji.[5] Jedná se o stroj s nekonečně dlouho páskou určenou pro zápis a čtení s konečným počtem stavů. Stroj může pohybovat páskou libovolným směrem a měnit její obsah dle zadaného algoritmu. Zařízení začíná v počátečním stavu, prochází sekvencí po sobě jdoucích operací a zastaví při výskytu stavu zastavení.[6] Některými specialisty je tento stroj označován za předchůdce programovatelného počítače využívající Von Neumannovu architekturu.[7]

Programovatelné počítače[editovat | editovat zdroj]

První vývoj programovatelných počítačů byl zaznamenán v 40. až 50. letech 20. století. Za zmínku stojí například počítač Z3 od německého inženýra Konráda Zuse.[8] Jednalo se o programovatelný binární kalkulátor s plovoucí řádovou čárkou, obsahoval smyčky, ale nevyužíval podmíněné skoky. Měl také paměť a výpočetní jednotku založenou na telefonních relé.

Dalším významným představitelem je malé Manchesterské experimentální zařízení (anglicky Manchester Small-Scale Experimental Machine), označované jako Baby, které jako první ukládalo své programové instrukce o velikosti pouze 3 bity do paměti v podobě čísel, a ze kterého později vznikl jeden z prvních počítačů Manchester Mark I.[9]

Počítače vyrobené do roku 1970 měli na svém předním panelu přepínače určené k programování. Samotný program byl napsán na papíře a jednotlivé instrukce byly posléze reprezentován konfigurací přepínačů. Tento proces se pak opakoval pro celý program. Počítačový program bylo také možné „nahrát“ pomocí děrných štítků či papírové pásky.[10]

V roce 1961 byl sestrojen unikátní stroj své doby, počítač Burroughs B5000, který byl programován v jazyce ALGOL 60. V roce 1964 vznikl IBM System/360, který se stal na trhu extrémně úspěšným. Skládal se z řady šesti počítačů majících stejnou instrukční sadu. Model 30 byl nejmenší a nejlevnější. Zákazníci mohli upgradovat a obdržet stejný aplikační software. Každý System/360 podporoval multiprogramování. Díky podpoře operačního systému mohlo být v paměti více programů. Pokud jeden z nich čekal na vstup či výstup, jiný mohl pracovat. Každý model dokázal také emulovat jiné počítače. Pokud zákazníci upgradovali na System/360, mohli obdržet také aplikační software IBM 7094 nebo IBM 1401. Počítače IBM System/360 byly skutečně průlomové, vyráběly se po tisících a byly komerčně i prakticky využívány.

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.[11] 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 sekundu), takže pro uživatele vzniká dojem jejich současného běhu.[12] 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.[13]

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.[14] 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.[15]

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.[16] 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. a b McCartney, Scott(1999). ENIAC – The Triumphs and Tragedies of the World's First Computer. Walker and Company, 16. ISBN 0-8027-1348-3. 
  2. Bromley, Allan G. (1998).  "Charles Babbage’s Analytical Engine, 1838". IEEE Annals of the History of Computing 20. 
  3. Tanenbaum, Andrew S.(1990). Structured Computer Organization, Third Edition. Prentice Hall, 15. ISBN 0-13-854662-2. 
  4. J. Fuegi and J. Francis(October–December 2003),"Lovelace & Babbage and the creation of the 1843 'notes'",Annals of the History of Computing25(4): 16, 19, 25 
  5. Rosen, Kenneth H.(1991). Discrete Mathematics and Its Applications. McGraw-Hill, Inc., 654. ISBN 0-07-053744-5. 
  6. Linz, Peter(1990). An Introduction to Formal Languages and Automata. D. C. Heath and Company, 234. ISBN 0-669-17342-8. 
  7. Davis, Martin(2000),(1st ed.), New York NY: W. W. Norton & Company, (pb.), ISBN 0-393-32229-7 
  8. History of Computing [online]. . [1]. (anglicky) 
  9. Enticknap, Nicholas(Summer 1998),"Computing's Golden Jubilee",Resurrection(The Computer Conservation Society)(20), ISSN 0958-7403, http://www.cs.man.ac.uk/CCS/res/res20.htm#d, retrieved 19 April 2008 
  10. Silberschatz, Abraham(1994). Operating System Concepts, Fourth Edition. Addison-Wesley, 6. ISBN 0-201-50480-4. 
  11. Kolář, Petr(2005). Operační systémy. TUL, 18. 
  12. Pecinovský, Rudolf(2009). Myslíme objektově v jazyku Java: kompletní učebnice pro začátečníky. Grada Publishing a.s., 468. 
  13. Eckel, Bruce. Myslíme v jazyku C++ 2.díl - knihovna zkušeného programátora. Grada Publishing a.s., 523. 
  14. Kolář, Petr(2005). Operační systémy. TUL, 17-18. 
  15. Tanenbaum, Andrew S.(1990). Structured Computer Organization, Third Edition. Prentice Hall, 11. ISBN 0-13-854662-2. 
  16. Silberschatz, Abraham(1994). Operating System Concepts, Fourth Edition. Addison-Wesley, 6. ISBN 0-201-50480-4. 

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