Process
Programování je činnost, která dokáže lidi nadchnout. Někdy až do takové míry, že zcela zapomínají čeho chtějí dosáhnout, neboli co vlastně programují, a vnímají jen svůj vznikající kód. Mnohdy však ani kouzlo programování není nezbytnou podmínkou k tomu, aby si lidé občas pletli cíl prostředek.
Takže: programování je prostředek, a nikoli cíl. Stejně tak jsou prostředky, resp. nástroji nejrůznější programovací jazyky a jejich konkrétní mechanismy a konstrukty (např. podprogramy). Chci-li jich použít k dosažení určitého cíle, musím tento cíl nejprve dostatečně pochopit a poznat, a pak navrhnout postup jeho dosažení (tedy vhodný algoritmus). Teprve poté má smysl sahat po konkrétním prostředku, který mi umožní zvolený postup dosažení vytčeného cíle prakticky naplnit. Přitom je dobré si uvědomit, že toto se netýká zdaleka jen počítačů, resp. počítačového zpracování - stejně tak bychom měli mít jasno ve svých cílech i v postupech jejich dosahování, jde-li například o řízení určité organizace, vedení nějakého kolektivu lidí, a zřejmě i v osobním životě.
Jestliže tedy již máme dostatečně rozmyšlen cíl, kterého chceme dosáhnout - nebo jsme dostatečně pochopili, co před nás jako požadovaný cíl postavili jiní - pak jako další krok je nutné najít postup dosažení tohoto cíle. Je-li vytčeným cílem řešení nějaké exaktní úlohy, pak se v této souvislosti hovoří nejčastěji o algoritmu. Jde-li však o něco méně exaktního, například o řízení nějaké organizace, firmy apod., pak se představa o postupu dosažení vytčeného cíle většinou označuje jinak: například jako podnikatelský záměr, investiční či strategický záměr apod. Podstatné ovšem je to, že stejně jako u algoritmu jde o ucelenou představu celkového postupu, která může zahrnovat mnoho dílčích činností či aktivit. Například jednou z takovýchto dílčích aktivit v rámci podnikatelského záměru může být průběžné získávání nových odbytišt, jednorázové vydání vlastních obligací apod. Dílčí aktivitou v rámci provozování „počítačového" informačního systému může být například pravidelné zálohování, vstup nových údajů, odpovídání na zadané dotazy apod.
Takovéto dílčí aktivity jsou obecně označovány jako procesy (processes). Je pro ně charakteristické to, že jsou relativně uzavřené (představují ucelené činnosti), a mají také určité vazby na své okolí - například jeden proces může ke svému zahájení vyžadovat skončení, resp. výsledek jiného procesu apod. Jsou dále charakteristické tím, že ke svému uskutečnění mohou vyžadovat určité zdroje, např. pracovníky, (jde-li o procesy v rámci nějakého organizačního subjektu), nebo procesor, paměť apod. (jde-li o „počítačové procesy"). Jednotlivé procesy se tedy mohou různě prolínat v čase, mohou vzájemně interagovat (komunikovat spolu či jinak se ovlivňovat), mohou spolu soupeřit o získání určitého zdroje, mohou si předávat své výsledky apod.
Zastavme se nyní podrobněji právě u „počítačových" procesů. Představme si například operační systém, který má jako svůj cíl poskytování podpory uživatelským úlohám. Tohoto svého cíle přitom dosahuje mnoha dílčími aktivitami, které mají právě povahu procesů - například dohled nad využitím procesoru a jeho přidělování jednotlivým úlohám má na starosti samostatný proces (správce procesoru), zatímco samotné plánování úloh a určování doby jejich spuštění má na starosti jiný proces (plánovač úloh). Jiný proces zase bude mít na starosti zajišťování tisku na sdílené systémové tiskárně, jiný proces se bude start o správu paměti apod. Stejně tak si ale může i uživatel rozvrhnout svou úlohu do více dílčích činností, resp. procesů, z nichž některé mohou probíhat paralelně, a jiné nikoli. Příkladem může být úloha, která si v určitém okamžiku spustí samostatný proces k tomu, aby pro ni něco konkrétního vytiskl na tiskárně.
Podívejme se nyní na „počítačové" procesy z poněkud jiného úhlu. Samotný pojem procesu je především abstrakcí, tedy něčím ideálním, co existuje hlavně v našich představách. Mají-li však být provedeny činnosti, které proces tvoří, musí být vhodně naprogramovány. Každý proces tedy ke svému provedení vyžaduje existenci určitého „kusu kódu", který má víceméně statickou povahu - existuje nezávisle na tom, zda proces v daném okamžiku běží, či nikoli. Takovýto „kus kódu" přitom může být napsán obecně v kterémkoli programovacím jazyku (protože nakonec stejně musí být přeložen a slinkován do spustitelného tvaru). K napsání tohoto kódu je pak možné použít v zásadě jakékoli prostředky, které příslušný programovací jazyk nabízí - tedy podprogramy (jde-li o asembler), či procedury, funkce apod. (jde-li o programovací jazyky vyšší úrovně).
Dalším charakteristickým rysem procesů - alespoň těch počítačových - je jejich sekvenční charakter. Pokud totiž proces pozůstává z více dílčích činností, pak tyto jsou obvykle prováděny postupně za sebou, neboli sekvenčně. Kdyby totiž mohly probíhat souběžně, bylo by výhodnější je rozdělit do samostatných procesů, a teprve ty nechat probíhat současně - samozřejmě pokud takovouto možnost příslušné výpočetní prostředí podporuje. Ale o tom zase až příště.