Slepice nebo vejce ? Software nebo hardware ?

Nedávná diskuze mě přiměla k napsání článku právě o tomto tématu. Často totiž mnozí z nás přemýšlí co že to vlastně bylo dřív ? Článek na tuto „záhadu” rozhodně odpověď nepřinese, zato se pokusí donutit laskavého čtenáře k zamyšlení jak to s tím vývojem asi je, nebo možná má být.

Na počátku bylo slovo

V případě IT by se možná hodilo říci půl slova, resp. bajt, resp. bit. /V IT je „slovo”, angl. „word”, je označením pro dva bajty./ Nicméně v našem případě byla na počátku myšlenka. Myšlenka na něco konkrétního, užitečného, nebo alespoň potřebného i kdyby mělo jít jen o hračku. A právě definice toho co má vzniknout je důležitá pro to, co se vyvíjí jako první a co jako druhé. Zkusím tedy nastínit několik modelových situacích, kde se dá mluvit o hardwaru, tedy „železe” a o softwaru tedy „duši” stroje.

Robotek Emil

Ok, tak ten ne, tak jiný robot, například nějaká robotická ruka, která má poslouchat příkazy z joysticku. Taková průměrná robotická ruka, má několik kloubů a motorků, serv, kterými je umožněn pohyb ruky v mnoha směrech, obdobně jako lidská paže. To znamená že až bude obsluha ruku ovládat musí se správně některé motorky točit a jiné ne. A také chceme, aby obsluha nemusela řešit, které motorky mají rukou kam pohybovat, ale věnovala se konkrétnímu úkolu, např přenést dřevěnou kostku z bodu A do bodu B.

Software, nebo chcete-li firmware takové robotické ruky se tedy bude starat o tři důležité části. První nejdůležitější část je ovládání motorků, to znamená musí umět přimět hardware, procesor, motorky a ostatní elektroniku, aby správně pracovali tak, jak mají. Druhá část spočívá v komunikaci s obsluhou, přesněji řečeno s elektronikou na vstupu, tedy správně musí porozumět příkazům od ovládacího joysticku. A poslední třetí část je vlastně přidaná hodnota, myšlenková část robotické ruky, automatické ovládání motorků dle závislosti na poloze ruky. Jinak řečeno výpočty a přepočty, které vedou k ovládání těch správných motorků.


Teoretické schéma komunikace softwaru s hardwarem robotické ruky.

A otázka na závěr, která část se bude vyvíjet jako ta první ? Je zcela jasné že hardware je ten, jenž diktuje možnosti, a dokud není sestaven, je zbytečné řešit software. Na druhou stranu, software může být už dávno hotov a jediná věc, která zbývá udělat je správně spojit motorky s procesorem.

Osobní počítačka

Ok, tak prostě průměrný počítač. Jeho parametry můžeme obšlehnout z požadavků většiny zákazníků. Má být fakt rychlý, hlavně aby to mělo pořádnou grafiku, rozhodně hodně paměti, i dost místa pro ukládání. Musí to určitě mít všechny možný komunikační rozhraní jako je com, lpt, lan, wifi, usb, wirefire, esata a požíván bude výhradně ke kancelářské práci, sekretářka na tom hraje pasiáns a píše si maily se skladníkem.

No, takhle by to asi moc nešlo. Definice PC, tedy HW je daná především zažitým standardem a v celku rozšířenými technologiemi. Můžeme tedy říci, že většina počítačů je vevnitř plus mínus stejná. Liší se pouze v ovládání konkrétních částí a i v tom se často liší velmi málo. Software v počítači by tedy stejně jako u robotické ruky měl ovládat všechny části počítače, měl by umět správně rozeznávat všechny vstupy, a měl by umět komunikovat s ostatními počítači či dalšími periférii. No a nakonec by měl mít také nějakou přidanou hodnotu, stejně jako robotická ruka, ovšem přeci jen v zcela rozdílných dimenzích.

U počítačů je „firmware” řešen přeci jen jinak. Nejde o jeden program, který dělá vše, ale o mnoho částí, které spolu komunikují. V počítači, pomineme-li BIOS, najdeme v první řadě operační systém. Ten se stará o práci s hardwarem počítače prostřednictvím ovladačů. Ty jsou pak univerzální a nebo specifické, podle toho, zda umožňují pracovat jen s nějakou částí počítače od jednoho výrobce, nebo si nevybírají a v rámci možností a standardů prostě fungují i s ostatními značkami. Další část se stará o podporu všech možných nízkoúrovňových protokolů. Usb má svůj protokol, síť má několik protokolů, diskové úložiště má své protokoly, resp. formáty a podobně. Jiná část se stará o aplikace, které může uživatel na systém pouštět.


Teoretické schéma komunikace jednotlivých částí softwaru v počítači.

No a na závěr tu máme právě všechny možné druhy aplikací. Ty jsou většinou zcela odstíněny od hardwaru počítače, a jen komunikují se systémem. Díky tomu se vývojáři aplikací, tedy oné přidané hodnoty, nemusí starat o kompatibilitu s hardwarem, ale soustředí se jen na své odvětví. Co z toho vyplývá ? Máme tu několik skupin softwaru. Systém jako celek sice potřebuje ke svému běhu ovladače, ale je od hardwaru částečně odstíněn, může být tedy vyvíjen bez ohledu na hardware (teoreticky). Ovladače jednotlivých zařízení a periférií však bez hardwaru moc neotestujete, a v praxi se spíše vylepšují ovladače než hardware. Samotné aplikace zmiňovat nemusím, ty ke svému běhu potřebují systém, pro který jsou programované. Na hardwaru jsou závislé spíš co do výkonu, takže se může stát, že dnes vyvíjená aplikace, bude dostatečně svižná až na hardwaru, který ještě nemají výrobci vyrobený.

Zvoní ti mobilní telefon

Mobilní telefon se dnes tak trochu vymyká kontrole. Te tam jsou doby, kdy toho uměl mobilní telefon méně než domácí videorekordér. Dnes jsou již telefony takovými malými počítači, s procesory rychlejšími než máme v osobních počítačích. Ovšem pokud vynecháme ty takzvané chytré telefony, zjistíme že jde o dost specifické zařízení s dost specifickými požadavky. Konec konců, to hlavní co od nich očekáváme je, že si zavoláme, že si budeme moci napsat smsku, a tu a tam si třeba budeme moci zahrát nějakou hru, nebo si pustíme specifickou mobilní aplikaci. Dost možná ještě vyfotíme naší novou káru a pošleme ji mmskou kamarádovi.

V mobilním telefonu je schován stejně jako třeba v naší robotické ruce také nějaký ten procesor. Jeho výkon je však daleko bližší spíše osobnímu počítači. Hlavním rozdílem je, že je malý, nehřeje se tolik, neždímá nám baterku a má specifické spojení s ostatní elektronikou v mobilním telefonu, což je zase bližší právě naší robotické ruce. Takovýto hardware nedisponuje takovým výkonem a možnostmi jako klasický osobní počítač, na druhou stranu proč také?

Pokud tedy někdo bude vytvářet software, resp. firmware mobilního telefonu, bude nejspíše hodně moc optimalizovat výsledný kód pro ten určitý telefon. Bude se snažit, aby v první řadě fungovali základní prvky telefonu. Optimalizace bude brát v potaz také konkrétní možnosti telefonu. Na černobílém telefonu budou asi barevné fotografie k ničemu, zato bude moc pěkné, když v základním firmware budou udělané obrázky tak dobře, že by člověk ani neřekl, že jde o dvoubarevný display telefonu. Zkrátka možnosti firmwaru budou značně limitované možnostmi telefonu. A i případné mobilní aplikace napsané například v jazyku Java budou optimalizované právě na možnosti průměrně slabého telefonu, leckdy právě na konkrétní model telefonu.


Teoretické schéma komunikace softwaru s hardwarem mobilního telefonu.

U rychlosti jakou jsou nové modely telefonů uváděny na trh, není divu, že existuje mnoho mobilních emulátorů, které používají výrobci mobilních aplikací, nebo firmwaru jako takového. Kdyby totiž čekali, až bude telefon vyrobený, uvedení modelu na trh by to značně zpožďovalo. Otázka tedy je, zda se snaží výrobci vyrobit takový telefon, aby fungoval i s novou verzí firmwaru, tak jak tomu je u počítačů, nebo se stále píše firmware na míru novým telefonům? Pravda je určitě někde tam venku.

Hawk, domluvil sem


Tímto článkem sem se Vám snažil přiblížit různé modely vývoje softwaru a hardwaru a ukázat, jak různá kritéria zařízení ovlivňují styl vývoje. Pokud Vás cokoli napadne, budu rád, pokud se o Vaše myšlenky podělíte s ostatními v diskuzi pod článkem.
Author:

Discussion

Your comment:

© 2019 Ondřej Tůma McBig. Ondřej Tůma | Based on: Morias | Twitter: mcbig_cz | RSS: articles, twitter