VyÜlo v t²denφku: | COMPUTERWORLD |
╚φslo: | 12/95 |
RoΦnφk: | 1995 |
Rubrika/kategorie: | Co (ne)najdete ve slovnφku |
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∞.