Otázka definice hardware a software

PhDr. Mgr. Jeroným Klimeš, Ph.D. 2005

jeronym.klimes@seznam.cz; http://klimes.mysteria.cz

Historie problému

Nedávno mi kamarád Jan Krejsa se zjevnou hrdostí ukazoval výsledek své seminární práce - hrací kostku, kterou vytvořil pomocí programovatelného pole. Tedy něco, co se v Excelu dá napsat do jednoho řádku:

(Stáhněte si soubor xls, je bez maker.)

Protože jsem na tom neviděl nic světoborného, dobíral jsem si ho podle vzoru školní perličky či poznámky v žákovské knížce: "Vysmíval se příkladům s dvoucifernými sčítanci." Honza se pochopitelně snažil mi vysvětlit, v čem spočívá obtížnost úkolu, a tak jsme narazili na otázku definice hardware (HW) a software (SW). Tyto pojmy intuitivně používáme u PC, ale u programovatelného pole (PP) není hranice mezi nimi zcela zřetelná. Otázka zněla: představuje programování PP změnu SW nebo HW? Honza z mně nepochopitelných důvodů argumentoval pro změnu HW, mně se to jevilo spíše jako změna SW. Abych obhájil, že mám pravdu já, tak jsem si na místě navrhl následující definici.

Definice HW a SW

Nechť je dán systém, který se skládá ze dvou jednotek, kde jedna jednotka (vstupní - VJ) může být příčinou nějaké změny jednotky druhé (procesní - PJ). Pak všechny změny PJ, které můžeme vyvolat pomocí VJ nazveme SW a všechny ostatní změny a danosti, které VJ vyvolat nemůže označíme za HW.

Hlavní úvahy definice:

  1. Definice by měla být sdostatek obecná, aby se vztahovala na jakýkoli systém, tj. neomezovala se na PC, PP či toliko elektronická zařízení.
  2. Definice by měla být exaktní v tom smyslu, aby při každé aplikaci jasně vymezila hranici mezi SW a HW.
  3. SW a HW není možno definovat absolutně, ale pouze relativně - vztahem mezi dvěma jednotkami určitého systému.

Příklad 1 - PC

Pokud za VJ označíme pouze klávesnici (bez diod), pak všechny změny, které můžeme v PC vyvolat pomocí klávesnice jsou SW vůči ní. Nutno poznamenat, že ty změny nemusí být vratné (format c: již pouhou klávesnicí zpět nevrátíme).

Příklad 2 - Obvod

Máme jednoduchý obvod a na něm definovanou VJ a PJ.

VJ může vyvolat pouze omezené změny PJ, tj. průchod proudu žárovkou, ty označíme za SW a ostatní změny, které můžeme provést jinými nástroji (pájka, kladivo ap.) jsou změny HW.

Příklad 3 - PC a tlačítko reset

Máme zapnuté PC a za VJ označíme pouze tlačítko reset. Pokud při bootování nedochází k zapsaní dat na hardisk (HD), pak data a obsah HD jsou HW vůči tlačítku reset, coby vstupní jednotce.

Tento příklad zdůrazňuje, že mají-li být pojmy HW a SW exaktní, pak musí být vztažné vůči VJ a PJ, tzn. nelze vést jednoznačnou hranici mezi HW a SW, pokud nedáme jasnou definici VJ a PJ. Zde se ukazuje exaktnost definice, která je umožněna relativností pojmů - data na HD mohou být HW vůči určitému vstupnímu zařízení (tlačítko reset). Pokud VJ definujeme jinak, například jako klávesnici, pak se stávají SW.

Nezvyklost tohoto příkladu však vyplývá z toho, že jsme zvyklí neustále uvažovat v množině všech vstupních zařízení PC - klávesnice, diskety, porty, tlačítko reset, vypínač, ale i tento návyk sám indikuje, že implicitně používáme vztažnou definici HW a SW a ne absolutní.

Příklad 4 - programovatelné pole

Pokud u PP definujeme jako VJ všechny dostupné porty a PJ jako vlastní desku, napájení a monitor, pak je zřejmé, že vše, co můžeme ovlivnit pomocí VJ je nutno označit za SW podle navrhované definice. Kamarádův program hrací kostky je tedy software vůči takto definované VJ.

Pokud však za VJ označíme pouze pět tlačítek na desce PP, pak nahraný program do PP je vůči této VJ hardware, protože pomocí těchto tlačítek jej nemohu změnit.

Fyzická existence SW a jeho mentalní representace

Navržená definice vymezuje fyzicky existující SW a HW. Do úvahy je nutno však vzít, že ještě existuje v myslích programátorů a i uživatelů počítačů mentální representace SW a HW. Tato mentální representace více či méně přesně odráží a modeluje fyzický SW. Matematickou hantýrkou bychom mohli říci, že je to určité nepřesné zobrazení z fyzické existence počítače do myslí lidí. Stejně tak lidé pak podle svých představ a pomocí jim dostupných vstupních zařízení mění a vytvářejí fyzicky existující SW. Nicméně nedomnívám se, že by kromě fyzicky existujícího SW a jeho mentální representace v myslích lidí, která jej de facto vytvořila, existoval nějaký třetí svět, kde by existoval nějaký abstraktní SW nezávisle na fyzické existenci počítačů či myslí lidí, tedy něco na způsob Platonova světa ideí. V tomto případě je zcela na místě uplatnit Ockhamovu břitvu: "Jsoucna nechť nejsou rozmnožována nad nezbytně nutnou míru."

Závěr

Výhody navrhované definice:

  1. naprosto obecná
  2. odpovídá intuitivnímu chápání SW a HW, pokud za VJ považujeme běžná vstupní zařízení PC.
  3. naprosto exaktní při konkrétní aplikaci

Nevýhody navrhované definice:

  1. Nelíbí se Honzovi
  2. Nelíbí se Hance
  3. Příliš se líbí Jeromovi

Jestliže považujete celou tuto úvahu za efemérní žonglování se slovy, tak se s Vámi nedá než souhlasit, ale chápejte, když se chlapi začnou v deset v noci dohadovat nad programovatelným polem, tak to ani jinak skončit nemůže. :-)